
    jj.                        S SK r S SKrS SKrS SKrS SKJr  S SKJ	r	J
r
JrJrJrJrJrJrJr  S SKJr  S SKJrJrJr  S SKJr  S SKr\R8                  " S5      r\R=                  S5        S SKJ r!   S SK"J#r#J$r$  S	r%\RN                  " S	S9S 5       r( \RR                  S   RU                  5       r+\+S   S    r,\!RR                  R]                  SS 05         " S S5      r/ " S S5      r0 " S S5      r1 " S S5      r2 " S S5      r3 " S S5      r4 " S S5      r5 " S S 5      r6\RN                  " S!S"9S# 5       r7\Rp                  Rs                  S$5      \Rp                  Ru                  \Rv                  (       + S%S&9 " S' S(5      5       5       r<\Rp                  R{                  S)5       " S* S+5      5       r> " S, S-5      r? " S. S/5      r@S0 rAS1 rBS7S2 jrCS3 rDS4 rES5 rFS6 rGg! \& a    S
r% GNrf = f! \- a    \RR                  S   S    r, GNUf = f)8    N)rotate)	GeometryCollection
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygonbox)GeoDataFrame	GeoSeries	read_file)GeoplotAccessor
matplotlibAgg)check_figures_equalimage_comparisonTF)autousec              #   @   #    S v   [         R                  " S5        g 7f)Nall)pltclose)requests    `/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/tests/test_plotting.pyclose_figuresr   &   s     	IIes   zaxes.prop_cyclecolorzaxes.color_cyclezfigure.max_open_warningc            
       H   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS r\R(                  R+                  S\" SSSS5      \" SSSS5      /\" SS/5      \" SS/5      /\" SS5      \" SS5      //5      S 5       rS rS rS rS rS rS  rS!r g")#TestPointPlotting5   c                 x   SU l         [        S [        U R                   5       5       5      U l        [        R
                  " U R                   5      n[        U R                  US.5      U l        US-  S-  U R                  S'   [        U R                  5      n[        US5      n[        X#/SS/S.5      U l
        g )	N
   c              3   8   #    U  H  n[        X5      v   M     g 7fNr
   .0is     r   	<genexpr>1TestPointPlotting.setup_method.<locals>.<genexpr>8        C]a]   geometryvalues   expZ   r      )Nr   rangepointsnparanger   dfr   r   df2)selfr/   multipoint1multipoint2s       r   setup_methodTestPointPlotting.setup_method6   s    CU466]CC466"DKK6JK 2+!+ -["-%31vF
    c                 H   U R                   R                  SS9n[        R                  R	                  UR
                  R                  5       S5        U R                  R                  SS9n[        R                  R	                  UR
                  R                  5       S5        g )Nr3   r3   )figsize)r6   plotr7   testingassert_array_equalfigureget_size_inchesr9   r;   axs     r   test_figsizeTestPointPlotting.test_figsizeE   so    [[f-


%%bii&?&?&A6JWW\\&\)


%%bii&?&?&A6Jr@   c                    U R                   R                  5       n[        U R                  UR                  S   R                  5       [        /U R                  -  5        U R                  R                  5       n[        U R                  UR                  S   R                  5       [        /U R                  -  5        U R                  R                  SS9n[        R                  " 5       nU" [        R                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  S   R                  5       U5        g )Nr   r/   columnr3   )r6   rD   _check_colorsr4   collectionsget_facecolorsMPL_DFT_COLORr9   r   get_cmapr7   r8   r;   rJ   cmapexpected_colorss       r   test_default_colors%TestPointPlotting.test_default_colorsL   s     [[FFBNN1%446$&&8P	

 WW\\^FFBNN1%446$&&8P	

 WW\\\*||~ryy0DFFQJ?@dffbnnQ/>>@/Rr@   c                 |   [         R                  " / SQ5      nU R                  R                  U5      nXR                  S'   U R                  R                  S5      nUR                  S   R                  5       nUR                  S   R                  5       n[        R                  R                  US   US   5        g )N)
abcr[   r\   r]   r[   r\   r]   r[   
colors_ordr   r3   	pdSeriesr9   rD   rQ   rR   r7   rE   rF   r;   r^   ax1ax2point_colors1point_colors2s         r   test_series_color_no_index,TestPointPlotting.test_series_color_no_indexa   s    YYQR
 ggll:& !+ggll<( *99;*99;


%%mA&6a8HIr@   c                 ~   [         R                  " / SQ/ SQS9nU R                  R                  U5      nXR                  S'   U R                  R                  S5      nUR                  S   R                  5       nUR                  S   R                  5       n[        R                  R                  US   US   5        g )N)
r[   r[   r[   r[   r\   r\   r\   r]   r]   r]   )
r   r0      	   r3                  indexr^   r   r3   r_   rb   s         r   test_series_color_index)TestPointPlotting.test_series_color_indexq   s    YY>0

 ggll:& !+ggll<( *99;*99;


%%mA&6a8HIr@   c                    U R                   R                  SS9n[        R                  " S5      nU" [        R
                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  S   R                  5       U5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       U5        U R                  R                  SSS9n[        R                  " S5      n[        U R                  UR                  S   R                  5       U5        U R                   R                  [        R                  " SSS	9S9n[        R                  " SSS	9nU" [        [        S5      5      S
-  5      n[        U R                  UR                  S   R                  5       U5        g )NRdYlGnrV   r3   r   r/   )rO   rV   Set1ro   lutrn   )r6   rD   r   rT   r7   r8   r4   rP   rQ   rR   r9   listr5   r;   rJ   rV   
exp_colorss       r   test_colormapTestPointPlotting.test_colormap   sZ   
 [[8,||H%"))DFF+tvvz:;
dffbnnQ/>>@*MWW\\x\(dffbnnQ/>>@*M WW\\\9||H%dffbnnQ/>>@*M [[3<<A#>?||F*$uQx.1,-
dffbnnQ/>>@*Mr@   c                    U R                   R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        [        R                  " [        [        45         U R                  R                  SS9  S S S 5        [        R                  " SS9 nU R                  R                  S	SS
9n[        U R                  UR                  S   R                  5       S/U R                  -  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Ngreenr   r         ?r   r   r   r   r   r   	not colorTrecordr/   rO   r   )r6   rD   rP   r4   rQ   rR   r9   pytestraises
ValueError	TypeErrorwarningscatch_warningsr;   rJ   _s      r   test_single_color#TestPointPlotting.test_single_color   s   [[G,dffbnnQ/>>@7)dffBTUWW\\\(dffbnnQ/>>@7)dffBTU WW\\\0FFBNN1%4468IDFF8R	
 WW\\ 4\5FFBNN1%4469M8NQUQWQW8W	
 ]]J	23GGLL{L+ 4 $$D1QXW=Bq)88:WI<N 21 43 21s   H;AH0
H-0
H>c                    U R                   R                  SS9nUR                  S   R                  5       S/:X  d   eU R                  R                  SS9nUR                  S   R                  5       S/:X  d   eU R                  R                  SSS9nUR                  S   R                  5       S/:X  d   eU R                  R                  SS9nUR                  S   R                  5       U R                  S   :H  R                  5       (       d   eU R                  R                  SSS9nUR                  S   R                  5       U R                  S   :H  R                  5       (       d   eg )Nr"   
markersizer   r/   )rO   r   )r6   rD   rQ   	get_sizesr9   r   rI   s     r   test_markersize!TestPointPlotting.test_markersize   s=   [[,~~a **,444WW\\R\(~~a **,444WW\\b\9~~a **,444WW\\X\.q!++-1BBGGIIIIWW\\h\?q!++-1BBGGIIIIr@   c                     U R                   R                  SS9n[        S5      n[        R                  R                  X!R                  S   R                  5       S   R                  5        g )N+)markerr   )	r:   rD   _style_to_verticesr7   rE   rF   rQ   	get_pathsvertices)r;   rJ   expecteds      r   test_markerstyle"TestPointPlotting.test_markerstyle   sR    XX]]#]&%c*


%%nnQ'113A6??	
r@   c                     U R                   R                  SS9nUR                  S   R                  5       / SQ:H  R	                  5       (       d   eg )Nk)
edgecolorsr   )r   r   r   r3   )r6   rD   rQ   get_edgecolorr   rI   s     r   test_style_kwargs#TestPointPlotting.test_style_kwargs   sE    [[-q!//1\AFFHHHHr@   c                    U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5         U R                   R                  [        R                  " SSSU R                  5      S9n[        R                  R	                  [        R                  " SSSU R                  5      UR
                  S   R                  5       5        g ! [         a     g f = fNffffff?alphar                 ?
r9   rD   r7   rE   rF   rQ   	get_alphalinspacer4   r   rI   s     r   test_style_kwargs_alpha)TestPointPlotting.test_style_kwargs_alpha       WW\\\$


%%seR^^A->-H-H-JK	BKK3TVV$DEB
 JJ))AsC0"..2C2M2M2O	  		   :C. .
C;:C;c                    [         R                  " SS9 nU R                  R                  SSSS9n[	        UR                  5       R                  5      S:X  d   e S S S 5        U R                  R                  SS9n[	        UR                  5       R                  5      S:X  d   eU R                  R                  SSSS	9nUR                  S
   R                  5       n[        UR                  5       5      R                  S   R                  5       n[        R                  R                  US
   US
   5        [        R                  R                  US   US   5        U R                  R                  SSSS9nUR                  S
   R                  5       nUR                  5       R                  R                  S   R                  5       n[        R                  R                  US
   US
   5        [        R                  R                  US   US   5        [        R                  R!                  U R                  SS  R"                  R%                  5       U R                  SS  R"                  R'                  5       S9nU R                  SS  R                  SSSUS9nUR                  S
   R                  5       n[        UR                  5       5      R                  S   R                  5       n[        R                  R                  US
   US
   5        [        R                  R                  US   US   5        UR(                  S:X  d   eg ! , (       d  f       GN= f)NTr   r/   r   )rO   r   legendr3   r   rv   rO   rV   r   r   )rO   categoricalr   vminvmaxr1   )rO   rV   r   norm)   rl   )r   r   r9   rD   len
get_figureaxesrQ   rR   _get_colorbar_axr7   rE   rF   
get_legendr   colorsLogNormr1   minmaxshape)r;   r   rJ   point_colorscbar_colorsr   s         r   test_legendTestPointPlotting.test_legend   s   $$D1QXWTJBr}}++,111 2 WW\\\&2==?''(A--- WW\\\F~~a(779&r}}7CCBGVVX


%%l1o{1~F


%%l2&6BH WW\\tD\I~~a(779mmo**66r:IIK


%%l1o{1~F


%%l2&6BH   (($$&TWWQR[__-@-@-B ) 
 WWQR[U$TR~~a(779&r}}7CCBGVVX


%%l1o{1~F


%%l2&6BH  H,,,U 21s   AM
Mc                 N   [         R                  R                  n[         R                  R	                  SSS9nU R
                  R                  SXS9nUR                  S   R                  5       nU" [        R                  " S5      S-  5      n[        R                  R                  XT5        [        R                  " 5       u  pcU R
                  SS  R                  SX2US9  UR                  S   R                  5       n[        R                  R                  US   US   5        g 	Nr      r   r/   rO   rV   r   r"   r3   rO   rJ   r   rV   r   cm	viridis_rr   	Normalizer9   rD   rQ   rR   r7   r8   rE   rF   r   subplotsr;   rV   r   rJ   actual_colors_origr}   figactual_colors_subs           r   test_subplots_norm$TestPointPlotting.test_subplots_norm      }}&&  ***;WW\\\@^^A.==?"))B-2./



%%jE,,.RFNN1-<<>


%%&8&;=Nq=QRr@   c                    [        [        5       /5      n[        R                  " [        5         UR                  5       nS S S 5        [        WR                  5      S:X  d   e[        / 5      n[        R                  " [        5         UR                  5       nS S S 5        [        UR                  5      S:X  d   e[        / S/S9n[        R                  " [        5         UR                  5       nS S S 5        [        UR                  5      S:X  d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NL= f)Nr   r.   )columns)	r   r   r   warnsUserWarningrD   r   rQ   r   )r;   srJ   r9   s       r   test_empty_plot!TestPointPlotting.test_empty_plot  s    wyk"\\+&B '2>>"a'''bM\\+&B '2>>"a'''"zl3\\+&B '2>>"a''' '& '& '&s#   DD'!D8
D$'
D58
Ec                 B   [        [        / SQ5      [        5       /5      nUR                  5       n[        UR                  5      S:X  d   e[        / SQ5      n[        SS5      n[        SS5      n[        5       n[        XFU/S9nUR                  U5      US'   [        R                  " 5          [        R                  " SS	[        5        S /UR                  S
'   S S S 5        UR                  5       n[        UR                  5      S:X  d   eg ! , (       d  f       N:= f)Nr   r   r3   r   rB   r3   )r   r   )r   rn   rn   rn   )rn   r   r   r   r"   r.   r.   ignorez2The behavior of DataFrame concatenation with emptyr0   )r   r   rD   r   rQ   r
   r   intersectionr   r   filterwarningsFutureWarningloc)r;   r   rJ   polypointpoint_empty_pointgdfs           r   test_empty_geometry%TestPointPlotting.test_empty_geometry'  s    w78')DEVVX2>>"a''' EFar2gU$@A**40J$$&##D
 CGGAJ ' XXZ2>>"a''' '&s   /-D
Dgeomsr   r3   rm   rp   rB   r3   rn   )rm   r3   )rm   rn   c                    [        USS/S9nUR                  [        SSSS5      5      nUR                  SS/S	9n[        R
                  " / S
Q5      nUR                  S   S:X  aC  [        R                  R                  UR                  5       S   R                  5       S   U5        g [        R                  R                  UR                  5       S   R                  5       S   U5        g )Nrr\   rq   ro   r   r"   redbluer   )r   r   r   r   r   )r   r   r   rD   r7   array	geom_typerE   rF   get_childrenr   get_facecolor)r;   r   r   s2rJ   r   s         r   test_empty_geometry_colors,TestPointPlotting.test_empty_geometry_colors?  s    $ *
 ^^C1b"-.WWE6?W+xx,-;;s|+JJ))"//*;A*>*L*L*Nq*QSWXJJ))"//*;A*>*L*L*Nq*QSWXr@   c                 8   U R                   R                  5       n[        SUR                  S   R	                  5       [
        /S-  5        U R                   R                  SS9n[        R                  " SS9nU" S5      /U R                  -  U" S5      /U R                  -  -   n[        SUR                  S   R	                  5       U5        U R                   R                  S	S
/S9n[        SUR                  S   R	                  5       S	/S-  S
/S-  -   5        g )Nrl   r   r/   rN   rn   ry   r3   r   r   r\   r   r"   )	r:   rD   rP   rQ   rR   rS   r   rT   r4   rU   s       r   test_multipoints"TestPointPlotting.test_multipoints]  s    XX]]_a*99;m_q=PQXX]](]+||"7)dff,Qy466/AAb"..+::<oNXX]]#s],b"..+::<sebjC5SU:>UVr@   c                    U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5         U R                   R                  SS/S9n[        R                  R	                  S/S-  S/S-  -   UR
                  S   R                  5       5        g ! [         a     g f = f)Nr   r   r   皙?r"   r:   rD   r7   rE   rF   rQ   r   r   rI   s     r   test_multipoints_alpha(TestPointPlotting.test_multipoints_alphak  s    XX]]]%


%%seR^^A->-H-H-JK	c3Z0B
 JJ))
cURZ'):)D)D)F	  		s   B9 9
CCc                    SS/S-  U R                   S'   SS/S-  U R                   S'   S/S-  U R                   S	'   [        R                  " SS/S-  5      U R                   S
'   [        R                  " S/S-  SS/S9U R                   S'   [        R                  " SS/S-  SS/S9U R                   S'   SS/S-  U R                   S'   [        R                  " SS/S-  5      U R                   S'   [        R                  " SS/S-  SS9U R                   S'   U R                   R	                  SSS9nU R                   R	                  S
SS9nU R                   R	                  S	SS/SS9nU R                   R	                  SSS9nU R                   R	                  SSS9nU R                   R	                  SSS/SS9nU R                   R	                  SSS9nU R                   R	                  SSS9nU R                   R	                  SSS9n	UR
                  S   R                  5       n
X#XEXgX4 HF  nUR
                  S   R                  5       n[        R                  R                  U
S   US   5        MH     UR                  5       R                  5        Vs/ s H  oR                  5       PM     nnX#XEXgX4 H]  nUR                  5       R                  5        Vs/ s H  oR                  5       PM     nn[        R                  R                  X5        M_     [        R                  " [        5         U R                   R	                  SSS9  S S S 5        [        R                  " [         SS9   U R                   R	                  SS/S9  S S S 5        [        R                  " [         SS9   U R                   R	                  S
S/S9  S S S 5        g s  snf s  snf ! , (       d  f       N= f! , (       d  f       Ng= f! , (       d  f       g = f)Ncat1cat2ro   cats_objectr3   rn   numsr"   singlecat_objectcats)
categories	singlecatcats_orderedFTboolbool_extensionstring)dtypecats_stringr   )r  r   r   non_list)rO   r  z0Column contains values not listed in categories.matchz+Cannot specify 'categories' when column has)r9   r`   Categoricalr  rD   rQ   rR   r7   rE   rF   r   	get_linesget_markerfacecolorr   r   r   r   )r;   rc   rd   ax3ax4ax5ax6ax7ax8ax9re   rJ   rf   xlegend1legend2s                   r   test_categories!TestPointPlotting.test_categoriesx  s   "(&!1A!5a&1*'-hm"#..&&)9A)=>!~~HrMvv&6 
 #%..Vq ff-=#
 !$-!+$&HHeT]Q->$? !!#66*:Q*>h!Oggll=l6ggll6$l/ggll-66:JSWlXggll;tl4ggll>$l7ggll6q!fTlBggll6$l/ggll+Dl9ggll=l6*99;Ss:BNN1-<<>MJJ))-*:M!<LM ; 58NN4D4N4N4PQ4Pq((*4PQSs:B8:8Q8Q8ST8S1,,.8SGTJJ))'; ; ]]9%GGLL*LE & ]]P
 GGLL6(LC

 ]]K
 GGLLF8L<
 
 RT &%
 


 
s0   OO1O-O**O;
O'*
O8;
P	c                    [         R                  U R                  R                  S'   U R                  R	                  S5      n[
        R                  " 5       nU" [         R                  " U R                  S-
  5      U R                  S-
  -  5      n[        U R                  S-
  UR                  S   R                  5       U5        U R                  R	                  SSS0S9n[
        R                  " 5       nU" [         R                  " U R                  S-
  5      U R                  S-
  -  5      n[        SUR                  S   R                  5       S/5        [        U R                  S-
  UR                  S   R                  5       U5        U R                  R	                  SSS0S	S	S
9n[        SUR                  S   R                  5       S/5        UR                  S   R                  5       nUR                  S   R                  5       nUR                  5       R                  R                  S   R                  5       nUR                  5       R                  R                  S   R                  5       n[         R                  R                  US   US   5        [         R                  R                  US   US   5        g )Nr   r/   r/   r3   rn   r   r   r   )missing_kwdsT)r3  r   r   )r7   nanr9   r   rD   r   rT   r8   r4   rP   rQ   rR   r   r   rE   rF   )r;   rJ   rV   rW   r   	nan_color
leg_colorsleg_colors1s           r   test_missingTestPointPlotting.test_missing  s   #%66K WW\\(#||~ryy!4
CDdffqj".."3"B"B"DoVWW\\('3\@||~ryy!4
CDa*99;cUCdffqj".."3"B"B"DoVWW\\GS>tD  
 	a*99;cUC~~a(779NN1%446	]]_))55a8GGI
mmo**66q9HHJ


%%l1oz!}E


%%ilKNCr@   c                     U R                   R                  5       nUS   R                  S5      US'   UR                  SSS0SS9  g )Nr/   strcategory	facecolornoneT)r3  r   )r9   copyastyperD   r;   r9   s     r    test_no_missing_and_missing_kwds2TestPointPlotting.test_no_missing_and_missing_kwds  s@    WW\\^H,,U3:

+v)>tLr@   c                     [         R                  U R                  R                  S'   U R                  R	                  SSS0SSSS9nUR                  5       S:X  d   eg )Nr2  r/   r   r   Trn   )r3  r   r   aspect)r7   r4  r9   r   rD   
get_aspectrI   s     r   test_missing_aspect%TestPointPlotting.test_missing_aspect  sX    #%66K WW\\!3  
 }}!###r@   )r4   r9   r:   r6   N)!__name__
__module____qualname____firstlineno__r>   rK   rX   rg   rs   r~   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r
   r  r	  r  r/  r8  rB  rG  __static_attributes__ r@   r   r   r   5   s    
KS*J J&N24J 
I+-ZS((0 [[ Aq!QAq!Q
 FF+,FF+,
 aa	
"Y#"YW.=`D0M	$r@   r   c                        \ rS rSrS rS rSrg)TestPointZPlottingi  c                     SU l         [        S [        U R                   5       5       5      U l        [        R
                  " U R                   5      n[        U R                  US.5      U l        g )Nr"   c              3   :   #    U  H  n[        XU5      v   M     g 7fr$   r%   r&   s     r   r)   2TestPointZPlotting.setup_method.<locals>.<genexpr>  s     F1aAs   r-   )r4   r   r5   r6   r7   r8   r   r9   )r;   r/   s     r   r>   TestPointZPlotting.setup_method  sJ    FdffFF466"DKK6JKr@   c                 8    U R                   R                  5         g r$   r9   rD   r;   s    r   	test_plotTestPointZPlotting.test_plot      r@   )r4   r9   r6   NrI  rJ  rK  rL  r>   rZ  rO  rP  r@   r   rR  rR    s    Lr@   rR  c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)TestLineStringPlottingi  c                    SU l         [        R                  " U R                   5      n[        [	        U R                   5       Vs/ s H  n[        SU4SUS-   4SU4/5      PM     sn[        S5      S9U l        [        U R                  US.5      U l	        [        U R                  R                  S	S
 R                  5      n[        U R                  R                  SS R                  5      n[        X4/SS/S.5      U l        [        [	        U R                   5       Vs/ s H  n[        SU4SUS-   4SU4/5      PM     sn[        S5      S9U l        [        U R                  US.5      U l        g s  snf s  snf )Nr"   r   rl   r   rk   
ABCDEFGHIJrq   r-   ABCDr3   )r4   r7   r8   r   r5   r   r{   linesr   r9   r   r   r/   r:   r   linearringsdf3)r;   r/   r(   
multiline1
multiline2s        r   r>   #TestLineStringPlotting.setup_method  sG   466"AFtvvOAZ!Q!QW1v67O|$

 DJJ&IJ$TZZ^^C%<%C%CD
$TZZ^^C%<%C%CD
$1aVD
 %AFtvvOAZ!Q!QW1v67O|$
  T-=-= PQ P Ps   !E3 !E8c                    U R                   SU R                  S-   R                  5       nUR                  5       nU R                   R                  USS9  UR                  5       U:X  d   eU R                  SU R                  S-   R                  5       nUR                  5       nU R                  R                  USS9  UR                  5       U:X  d   eg)z,Test linestring plot preserving axes limits.Nrn   FrJ   autolimrf  r4   rD   get_ylimr9   r;   rJ   ylims      r   test_autolim_false)TestLineStringPlotting.test_autolim_false  s    ZZ$&&A+&++-{{}

2u-{{}$$$WW]tvv{#((*{{}E*{{}$$$r@   c                    U R                   SU R                  S-   R                  5       nUR                  5       nU R                   R                  USS9  UR                  5       U:w  d   eU R                  SU R                  S-   R                  5       nUR                  5       nU R                  R                  USS9  UR                  5       U:w  d   eg)z-Test linestring plot autoscaling axes limits.Nrn   Trm  ro  rq  s      r   test_autolim_true(TestLineStringPlotting.test_autolim_true  s    ZZ$&&A+&++-{{}

2t,{{}$$$WW]tvv{#((*{{}D){{}$$$r@   c                    U R                   R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        U R                  R                  SS9n[        U R                  UR                  S   R                  5       S/U R                  -  5        [        R                  " [        [        45         U R                  R                  SS9  S S S 5        [        R                  " SS9 nU R                  R                  SSS	9n[        U R                  UR                  S   R                  5       S/U R                  -  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nr   r   r   r   r   Tr   r/   r   )rf  rD   rP   r4   rQ   
get_colorsr9   rg  rh  r   r   r   r   r   r   r   s      r   r   (TestLineStringPlotting.test_single_color
  s6   ZZ__7_+dffbnnQ/::<wi$&&>PQWW\\\(dffbnnQ/::<wi$&&>PQ"""1dffbnnQ/::<wi$&&>PQXX]]])dffbnnQ/::<wi$&&>PQ WW\\ 4\5FFBNN1%0025I4JTVV4S	
 WW\\ 4\5FFBNN1%0025I4JTVV4S	
 ]]Iz23GGLL{L+ 4 $$D1QXW=B$&&".."3">">"@7)dffBTU 21 43 21s   7K-AK"
K"
K0c           	      D   U R                   R                  SSS9U R                  R                  SSS9U R                  R                  SSSS94 H+  nSSS/4/UR                  S	   R	                  5       :X  a  M+   e   U R                   R                  S
SS9nS	/ SQ4/UR                  S	   R	                  5       :X  d   e[        U R                  5       Vs/ s H  nSUS-     PM     nnU Vs/ s H  n[        US5      PM     nnU R                   R                  USS9U R                   R                  USS9U R                  R                  USS9U R                  R                  SUSS94 H%  nXQR                  S	   R	                  5       :X  a  M%   e   g s  snf s  snf )N:r3   	linestyle	linewidthr/   )rO   r~  r  r   r   ffffff?r   r   r0   r"   r3      r  )dasheddotteddashdotsolidrl   
linestylesr  )rf  rD   r9   rQ   get_linestyler5   r4   _style_to_linestring_onoffseq)r;   rJ   r   lsstexp_lss         r   test_style_kwargs_linestyle2TestLineStringPlotting.test_style_kwargs_linestyle(  s    JJOOcQO7GGLL3!L4GGLLC1LE
B
 3+&'2>>!+<+J+J+LLLL
 ZZ__':a_HN#$q(9(G(G(IIII HMTVV}U}!6q1u=}UACD2/A6DJJOObAO6JJOOrQO7GGLL2L3GGLLB!LD	
B ^^A.<<>>>>
 VDs   F/Fc                    U R                   R                  SS9U R                  R                  SS9U R                  R                  SSS94 H?  n[        R                  R                  S/UR                  S   R                  5       5        MA     [        U R                  5       Vs/ s H  nSUS-     PM     nnU R                   R                  US9U R                   R                  US9U R                  R                  US9U R                  R                  SUS94 H=  n[        R                  R                  X1R                  S   R                  5       5        M?     g s  snf )	Nrn   r  r/   )rO   r  r   )r   r3   rn         @r"   ro   
linewidths)
rf  rD   r9   r7   rE   rF   rQ   get_linewidthsr5   r4   )r;   rJ   r   lws       r   test_style_kwargs_linewidth2TestLineStringPlotting.test_style_kwargs_linewidth@  s    JJOOaO(GGLL1L%GGLLAL6
B
 JJ))1#r~~a/@/O/O/QR
 27tvv?A Q'?JJOObO)JJOOrO*GGLL2L&GGLLBL7	
B JJ))"nnQ.?.N.N.PQ
 @s   &Ec                    U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5         U R                   R                  [        R                  " SSSU R                  5      S9n[        R                  R	                  [        R                  " SSSU R                  5      UR
                  S   R                  5       5        g ! [         a     g f = fr   r   rI   s     r   r   .TestLineStringPlotting.test_style_kwargs_alphaS  r   r   c                     SSK Jn  U" SSS9/nU R                  R                  SUS9nUR                  S   R                  5       S   R                  S   SSS.:X  d   eg )	Nr   )
withStrokerp   r\   )r  
foregroundorange)r   path_effects_gc)matplotlib.patheffectsr  r9   rD   rQ   get_path_effects__dict__)r;   r  effectsrJ   s       r   test_style_kwargs_path_effects5TestLineStringPlotting.test_style_kwargs_path_effects`  sj    5c:;WW\\w\?~~a 113A6??FK
 
 	
 
r@   c                 N   [         R                  R                  n[         R                  R	                  SSS9nU R
                  R                  SXS9nUR                  S   R                  5       nU" [        R                  " S5      S-  5      n[        R                  R                  XT5        [        R                  " 5       u  pcU R
                  SS  R                  SX2US9  UR                  S   R                  5       n[        R                  R                  US   US   5        g r   )r   r   r   r   r   r9   rD   rQ   get_edgecolorsr7   r8   rE   rF   r   r   r   s           r   r   )TestLineStringPlotting.test_subplots_normj  r   r@   c                 d   U R                   R                  5       n[        UR                  S   R	                  5       5      S:X  d   e[        SUR                  S   R                  5       [        /S-  5        U R                   R                  S5      n[        R                  " SS9nU" S5      U" S5      U" S5      U" S5      /n[        SUR                  S   R                  5       U5        U R                   R                  SS/S	9n[        SUR                  S   R                  5       / S
Q5        g Nr   rl   r/   rn   ry   r3   r   r\   r   )r   r   r\   r\   )
r:   rD   r   rQ   r   rP   r  rS   r   rT   rU   s       r   test_multilinestrings,TestLineStringPlotting.test_multilinestringsw      XX]]_2>>!$..01Q666a*99;m_q=PQXX]]8$||"7DGT!Wd1g>a*99;_MXX]]#s],a*99;=QRr@   )r4   r9   r:   rh  rg  rf  N)rI  rJ  rK  rL  r>   rs  rv  r   r  r  r   r  r   r  rO  rP  r@   r   r_  r_    s9    R*	%	%V<?0R&
SSr@   r_  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS r\(       a   \" S/SS/SSSS.S9S 5       rOS rS rS rS rS rS r\(       a   \" S/SS/SSSS.S9S 5       rOS rS rSrg )!TestPolygonPlottingi  c                    [        / SQ5      n[        / SQ5      n[        X/[        S5      S9U l        [	        U R                  SS/S.5      U l        [        X/5      n[        US5      n[	        X4/SS/S.5      U l        [        / S	Q5      n[	        U[        R                  /S.5      n[        R                  " U R
                  U/5      U l        g )
Nr   r   rn   r   rn   r3   ABrq   r   r3   r-      )r  )r0   r   )r0   r3   )r   r   r{   polysr   r9   r	   r   r:   r7   r4  r`   concatrh  )r;   t1t2
multipoly1
multipoly2t3df_nans          r   r>    TestPolygonPlotting.setup_method  s    -.-.xtDz:
DJJ1a&IJ!2(+
J,
$1aVD
 -.2"&&BC99dggv./r@   c                 x   U R                   SS R                  5       nUR                  5       nU R                   R                  USS9  UR                  5       U:X  d   eU R                  SS R                  5       nUR                  5       nU R                  R                  USS9  UR                  5       U:X  d   eg)z)Test polygon plot preserving axes limits.Nr3   Frm  r  rD   get_xlimr9   r;   rJ   xlims      r   rs  &TestPolygonPlotting.test_autolim_false  s    ZZ^  "{{}

2u-{{}$$$WWRa[{{}E*{{}$$$r@   c                 x   U R                   SS R                  5       nUR                  5       nU R                   R                  USS9  UR                  5       U:w  d   eU R                  SS R                  5       nUR                  5       nU R                  R                  USS9  UR                  5       U:w  d   eg)z*Test polygon plot autoscaling axes limits.Nr3   Trm  r  r  s      r   rv  %TestPolygonPlotting.test_autolim_true  s    ZZ^  "{{}

2t,{{}$$$WWRa[{{}D){{}$$$r@   c                 j   U R                   R                  SS9n[        SUR                  S   R	                  5       S/S-  5        [        UR                  S   R                  5       5      S:X  d   eU R                  R                  SS9n[        SUR                  S   R	                  5       S/S-  5        [        UR                  S   R                  5       5      S:X  d   eU R                  R                  SS9n[        SUR                  S   R	                  5       S/S-  5        U R                  R                  SS9n[        SUR                  S   R	                  5       S/S-  5        [        R                  " [        [        45         U R                  R                  SS9  S S S 5        [        R                  " SS	9 nU R                  R                  S
SS9n[        SUR                  S   R	                  5       S/S-  5        S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)Nr   r   rn   r   r   r   r   Tr   r/   r   )r  rD   rP   rQ   rR   r   r  r9   r   r   r   r   r   r   r   s      r   r   %TestPolygonPlotting.test_single_color  s   ZZ__7_+a*99;gY]K2>>!$3356!;;;WW\\\(a*99;gY]K2>>!$3356!;;; WW\\\0a*99;o=NQR=RSWW\\ 4\5a*99;>R=SVW=WX]]Iz23GGLL{L+ 4 $$D1QXW=B!R^^A.==?'QO 21 43 21s   HAH$
H!$
H2c                 \   U R                   R                  SSSSS9nUR                  S   R                  5       n[        R
                  R                  US   US   5        U R                   R                  SSSSS9nUR                  S   R                  5       n[        R
                  R                  US   US   5        U R                  R                  SS9nUR                  S   R                  5       n[        R                  " [        R                  " US   US   5      5      (       d   eg )Nr/   Fr   )rO   r   r   r   r3   TrN   )
r9   rD   rQ   rR   r7   rE   rF   rh  any	not_equal)r;   rJ   actual_colorss      r   test_vmin_vmax"TestPolygonPlotting.test_vmin_vmax  s     WW\\u11\Mq)88:


%%mA&6a8HI WW\\t!!\Lq)88:


%%mA&6a8HI XX]](]+q)88:vvbll=#3]15EFGGGGr@   c                    U R                   R                  SS9n[        SUR                  S   R	                  5       S/S-  5        U R                   R                  SSS9nU R                   R                  SS9n[
        R                  R                  S/UR                  S   R                  5       5        U R                  R                  S	SS9n[
        R                  R                  S/UR                  S   R                  5       5        U R                   R                  S
SSS9n[        SUR                  S   R	                  5       S
/S-  SS9  [        SUR                  S   R                  5       S/S-  SS9  U R                  R                  SSS9n[        SUR                  S   R	                  5       S/S-  5        [        SUR                  S   R                  5       S/S-  5        U R                  R                  SSS9n[        SUR                  S   R	                  5       S/S-  5        [        SUR                  S   R                  5       S/S-  5        g )Nr   r=  rn   r   r   )r   r=  	edgecolor)r3   r   r   r3   r/   gr   皙?)r=  r  r   r   r   )r  r   333333?r=  r  r   r  r   r  r   )
r  rD   rP   rQ   rR   r7   rE   rF   r  r9   rI   s     r   test_style_kwargs_color+TestPolygonPlotting.test_style_kwargs_color  s   ZZ__s_+a*99;cUQYG ZZ__5C_8
 ZZ__u_-


%%NBNN1-<<>	
 WW\\(e\4


%%NBNN1-<<>	

 ZZ__sc_Ea*99;cUQYcRa*99;cUQYcR WW\\O\Oa*99;o=NQR=RSa*99;o=NQR=RSWW\\*6J  
 	a*99;>R=SVW=WXa*99;>R=SVW=WXr@   c                    U R                   R                  SSS9nSSS/4/UR                  S   R                  5       :X  d   eU R                   R                  SSS9nS/ S	Q4/UR                  S   R                  5       :X  d   eS
S/nU Vs/ s H  n[	        US5      PM     nnU R                   R                  USS9U R                   R                  USS94 H%  nXAR                  S   R                  5       :X  a  M%   e   g s  snf )Nr|  r3   r}  r   r   r  r   r  r  r  r  r  )r9   rD   rQ   r  r  )r;   rJ   r  r  r  s        r   r  /TestPolygonPlotting.test_style_kwargs_linestyle  s   WW\\C1\5sDk"#r~~a'8'F'F'HHHH WW\\$71\EN#$q(9(G(G(IIII !ACD2/A6DGGLL2L3GGLLB!L4
B ^^A.<<>>>>	
 Es   Dc                    U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5        U R                   R                  SS/S9U R                   R                  SS/S94 H@  n[        R                  R	                  SS/UR
                  S   R                  5       5        MB     U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5         U R                   R                  SS/S9n[        R                  R	                  SS/UR
                  S   R                  5       5        g ! [         a     g f = f)	Nrn   r  r   rl   r  r   r   r  )	r9   rD   r7   rE   rF   rQ   r  r   r   rI   s     r   r  /TestPolygonPlotting.test_style_kwargs_linewidth  s:   WW\\A\&


%%qc2>>!+<+K+K+MN77<<1a&<1477<<Aq6<3RSBJJ))1a&"..2C2R2R2TU T WW\\\$


%%seR^^A->-H-H-JK	US#J/B
 JJ))3*bnnQ6G6Q6Q6ST	  		s   &E? ?
FFc                    [        U R                  S   R                  5       5      nSnU R                  R                  SSUSU Vs/ s H  o2[	        U5      -   PM     snSS.S9n[        U5      [        UR                  5       R                  5       5      :X  d   eUR                  5       R                  5       S   R                  5       R                  U5      (       d   eUR                  5       R                  5       SL d   eg s  snf )Nr/   
LABEL_FOR_TF)labelsframeon)rO   r   r  r   legend_kwdsr   )r{   r9   uniquerD   r;  r   r   	get_textsget_text
startswithget_frame_on)r;   r  prefixr]   rJ   s        r   test_legend_kwargs&TestPolygonPlotting.test_legend_kwargs"  s    $''(+2245
WW\\!4>?JqCF?J?   	
 :#bmmo&?&?&A"BBBB}}((*1-668CCFKKKK}}++-666 @s   Dc                 >   SnU R                   R                  SSSSU0S9n[        UR                  5       5      nUR	                  5       U:X  d   eU R                   R                  SSSUSS.S9n[        UR                  5       5      nUR                  5       U:X  d   eg )	Nzcolorbar testr/   FTlabelrO   r   r   r  
horizontal)r  orientation)r9   rD   r   r   
get_ylabel
get_xlabel)r;   	label_txtrJ   caxs       r   test_colorbar_kwargs(TestPolygonPlotting.test_colorbar_kwargs3  s     $	WW\\ ),	  
 r}}/~~9,,,WW\\"+LI	  
 r}}/~~9,,,r@   polygon_with_holespngpdfTi,  tight)dpibbox_inches)
extensionsremove_textsavefig_kwargc                 `    [        / SQ/ SQ/ SQ/5      /n[        US9nUR                  5         g )Nr   )r   ro   )ro   ro   ro   r   rB   r   r   r  r0   rn   )r0   r0   )rl   r0   )rl   rn   r   )r   r   rD   )r;   r   _dfs      r   test_plot_polygon_with_holes0TestPolygonPlotting.test_plot_polygon_with_holesN  s6     488E .CHHJr@   c                 J   [        / SQ/ SQ/ SQ/5      /n[        US9nUR                  5       nUR                  S   R	                  5       S   R
                  nUR                  5       R                  5       R                  5       n[        R                  R                  XE5        g )Nr  r  r  r   r   )r   r   rD   rQ   r   r   	normalizeget_coordinatesto_numpyr7   rE   rF   )r;   r   r  rJ   plotted_verticesexpected_verticess         r   r  r	  c  s    488E .CB!~~a0::<Q?HH # ? ? A J J LJJ))*:Nr@   c                 z    U R                   R                  SSSSS0S9  U R                   R                  SSSS0S9  g )Nr/   Tfmt{:.0f}r  )rO   r   r  rX  rY  s    r   test_fmt_ignore#TestPolygonPlotting.test_fmt_ignoret  sG     	)	 	 	
 	HTx?PQr@   c                 d   U R                   R                  5       n[        UR                  S   R	                  5       5      S:X  d   e[        SUR                  S   R                  5       [        /S-  5        U R                   R                  S5      n[        R                  " SS9nU" S5      U" S5      U" S5      U" S5      /n[        SUR                  S   R                  5       U5        U R                   R                  SS/S	9n[        SUR                  S   R                  5       / S
Q5        g r  )
r:   rD   r   rQ   r   rP   rR   rS   r   rT   rU   s       r   test_multipolygons_color,TestPolygonPlotting.test_multipolygons_color  r  r@   c           	      <   U R                   R                  SSS9nSSS/4/UR                  S   R                  5       :X  d   eU R                   R                  SSS9nS/ S	Q4/UR                  S   R                  5       :X  d   eS
S/nU VVs/ s H"  n[	        S5        H  n[        US5      PM     M$     nnnU R                   R                  USS9U R                   R                  USS94 H%  nXQR                  S   R                  5       :X  a  M%   e   g s  snnf )Nr|  r3   r}  r   r   r  r   r  r  r  r  rn   r  )r:   rD   rQ   r  r5   r  )r;   rJ   r  r  r(   r  s         r   test_multipolygons_linestyle0TestPolygonPlotting.test_multipolygons_linestyle  s   XX]]SA]6sDk"#r~~a'8'F'F'HHHH XX]]%8A]FN#$q(9(G(G(IIII !ACV2USTX/A6X6VHHMMB!M4HHMMR1M5
B ^^A.<<>>>>	
 Ws   )Dc                    U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5        U R                   R                  SS/S9U R                   R                  SS/S94 H@  n[        R                  R	                  / SQUR
                  S   R                  5       5        MB     g )Nrn   r  r   rl   r  )rn   rn   rl   rl   )r:   rD   r7   rE   rF   rQ   r  rI   s     r   test_multipolygons_linewidth0TestPolygonPlotting.test_multipolygons_linewidth  s    XX]]Q]'


%%qc2>>!+<+K+K+MN 88==Aq6=2DHHMMaQRVM4TUBJJ))bnnQ/>>@ Vr@   c                    U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5         U R                   R                  SS/S9n[        R                  R	                  / SQUR
                  S   R                  5       5        g ! [         a     g f = f)Nr   r   r   r  )r   r   r  r  r  rI   s     r   test_multipolygons_alpha,TestPolygonPlotting.test_multipolygons_alpha  s    XX]]]%


%%seR^^A->-H-H-JK	c3Z0B
 JJ))$bnnQ&7&A&A&C	  		s   B0 0
B=<B=multipolygon_with_holesc                     [        SSSS5      R                  [        SSSS5      5      n[        SSSS5      R                  [        SSSS5      5      n[        X/5      n[        U/S	9nUR	                  5         g )
Nr   r3   r  r   r0   rj   rl   ro   r   )r   
differencer	   r   rD   )r;   poly1poly2	multipolyr  s        r    test_multipolygons_with_interior4TestPolygonPlotting.test_multipolygons_with_interior  sn     1aO..s3S#/FGE1aO..s1aA?E$e^4I4CHHJr@   c                 V   [        SSSS5      R                  [        SSSS5      5      n[        SSSS5      R                  [        SSSS5      5      n[        X/5      n[        U/S	9nUR	                  5       n[
        R                  " UR                  S   R                  5       S   R                  UR                  S   R                  5       S   R                  SS
9nUR                  5       R                  5       R                  5       n[
        R                  R                  Xg5        g )Nr   r3   r  r   r0   rj   rl   ro   r   axis)r   r#  r	   r   rD   r7   appendrQ   r   r   r  r  r  rE   rF   )r;   r$  r%  r&  r  rJ   r  r  s           r   r'  r(    s    1aO..s3S#/FGE1aO..s1aA?E$e^4I4CB!yyq!++-a099q!++-a099 
 !$ ? ? A J J LJJ))*:Nr@   c                 N   [         R                  R                  n[         R                  R	                  SSS9nU R
                  R                  SXS9nUR                  S   R                  5       nU" [        R                  " S5      S-  5      n[        R                  R                  XT5        [        R                  " 5       u  pcU R
                  SS  R                  SX2US9  UR                  S   R                  5       n[        R                  R                  US   US   5        g )	Nr   r"   r   r/   r   rn   r3   r   r   r   s           r   r   &TestPolygonPlotting.test_subplots_norm  s    }}&&  ***;WW\\\@^^A.==?"))A,"-.



%%jE,,.RFNN1-<<>


%%&8&;=Nq=QRr@   )r9   r:   rh  r  N)rI  rJ  rK  rL  r>   rs  rv  r   r  r  r  r  r  r  MPL_DECORATORSr   r  r  r  r  r  r  r'  r   rO  rP  r@   r   r  r    s    0 	%	%P.H$#YJ?$U&7"-0 K	!"u~"%g>	

	

		O"RS ?$	 	6 
&'u~"%g>	

	

		OSr@   r  c                        \ rS rSrS rS rSrg)TestPolygonZPlottingi  c                    [        / SQ5      n[        / SQ5      n[        X/[        S5      S9U l        [	        U R                  SS/S.5      U l        [        X/5      n[        US5      n[	        X4/SS/S.5      U l        g )	N))r   r   r   r3   r   r   )r3   r3   r3   )r3  )rn   r   r   )rn   r3   r3   r  rq   r   r3   r-   r  )	r   r   r{   r  r   r9   r	   r   r:   )r;   r  r  r  r  s        r   r>   !TestPolygonZPlotting.setup_method  sx    6767xtDz:
DJJ1a&IJ!2(+
J,
$1aVD
r@   c                 8    U R                   R                  5         g r$   rX  rY  s    r   rZ  TestPolygonZPlotting.test_plot  r\  r@   )r9   r:   r  Nr]  rP  r@   r   r1  r1    s    

r@   r1  c                   &    \ rS rSrS rS rS rSrg)TestColorParamArrayi  c                 (   / n/ nS HB  u  p4[        X3XD5      nXUR                  S5      R                  UR                  /-  nU/ SQ-  nMD     [	        XS.5      U l        U R
                  R                  U R
                  R                  5      U l        g )N))r   rn   )rl   rj   g?)r   r   r   )r.   
color_rgba)	r   bufferexteriorcentroidr   r   dissolver  mgdf)r;   geomr   r[   r\   s        r   r>    TestColorParamArray.setup_method  s    $DAA!A..

;;D--E %
  T GHHH%%dhh&8&89	r@   c           
         U R                   R                  U R                   S   S9n[        S[        R                  " UR
                   Vs/ s H  o"R                  5       PM     sn5      S/S-  S/S-  -   5        [        S[        R                  " UR
                   Vs/ s H  o"R                  5       PM     sn5      S/S-  S/S-  -   5        g s  snf s  snf Nr:  r   rl   r   rn   r   r   )r   rD   rP   r7   concatenaterQ   r   r  r;   rJ   r]   s      r   test_color_single%TestColorParamArray.test_color_single  s    XX]],!7]8NNr~~F~!OO-~FGIMVHqL(	

 	NNr~~F~!OO-~FGGaK6(Q,&	
 G
 G   CCc           
         U R                   R                  U R                   S   S9n[        S[        R                  " UR
                   Vs/ s H  o"R                  5       PM     sn5      S/S-  S/S-  -   5        [        S[        R                  " UR
                   Vs/ s H  o"R                  5       PM     sn5      S/S-  S/S-  -   5        g s  snf s  snf rC  )r?  rD   rP   r7   rD  rQ   r   r  rE  s      r   test_color_multi$TestColorParamArray.test_color_multi  s    YY^^$))L"9^:NNr~~F~!OO-~FGIMVHqL(	

 	NNr~~F~!OO-~FGGaK6(Q,&	
 G
 GrH  )r   r?  N)rI  rJ  rK  rL  r>   rF  rJ  rO  rP  r@   r   r8  r8    s    	:

r@   r8  c                   &    \ rS rSrS rS rS rSrg)TestGeometryCollectionPlottingi$  c                     [        [        / SQ5      [        SS/5      /5      n[        [        SS5      [        / SQ5      /5      n[	        X/5      U l        [        U R
                  SS/S	.5      U l        g )
Nr  )r   r   rB   )r3   r   g      ?r3         ?      ?)r   r  )rn   r0   r3   rn   r-   )r   r   r   r
   r   seriesr   r9   )r;   coll1coll2s      r   r>   +TestGeometryCollectionPlotting.setup_method%  ss    "01!57K LM
 #4(@ AB
  /DKKAq6JKr@   c                 R   U R                   R                  5       n[        SUR                  S   R	                  5       [
        /S-  5        [        SUR                  S   R                  5       [
        /S-  5        [        SUR                  S   R	                  5       [
        /5        g )Nrn   r   r3   )rT  rD   rP   rQ   rR   rS   r  rI   s     r   test_colors*TestGeometryCollectionPlotting.test_colors3  s    [[r~~a //1M?Q3F	
 	r~~a //1M?Q3F	
 	a*99;m_Mr@   c                 ~   U R                   R                  S5      n[        R                  " 5       nU" SS/5      n[	        SUR
                  S   R                  5       U5        [	        SUR
                  S   R                  5       US   /S-  5        [	        SUR
                  S   R                  5       US   /5        g )Nr/   r   r   rn   r   r3   )r9   rD   r   rT   rP   rQ   rR   r  r|   s       r   test_values*TestGeometryCollectionPlotting.test_values>  s    WW\\(#||~3*%
a*99;ZHr~~a //1JqM?Q3F	
 	a*99;jm_Mr@   r9   rT  N)rI  rJ  rK  rL  r>   rY  r\  rO  rP  r@   r   rM  rM  $  s    L	NNr@   rM  c                       \ rS rSrS rS rS rS r\R                  R                  SS9S 5       rS	 r\R                  R                  SS9S
 5       rS rSrg)TestNonuniformGeometryPlottingiI  c                     [         R                  " S5        [        / SQ5      n[        / SQ5      n[	        SS5      n[        XU/5      U l        [        U R                  / SQS.5      U l        g )Nr   r  )rO  rB   rP  rQ  rR  rS  r3   rn   r0   r-   )	r   importorskipr   r   r
   r   rT  r   r9   )r;   r   liner   s       r   r>   +TestNonuniformGeometryPlotting.setup_methodJ  sX    L)/0BCdD!U 34DKK9MNr@   c                    U R                   R                  5       n[        SUR                  S   R	                  5       [
        /5        [        SUR                  S   R                  5       [
        /5        [        SUR                  S   R	                  5       [
        /5        U R                   R                  SS9n[        R                  " S5      nU" [        R                  " S5      S-  5      n[        SUR                  S   R	                  5       US   /5        [        SUR                  S   R                  5       US   /5        [        SUR                  S   R	                  5       US   /5        g )Nr3   r   rn   rv   rw   r0   )rT  rD   rP   rQ   rR   rS   r  r   rT   r7   r8   r|   s       r   rY  *TestNonuniformGeometryPlotting.test_colorsS  s   [[a*99;m_Ma*99;m_Ma*99;m_M [[8,||H%"))A,%01
a*99;jm_Ma*99;jm_Ma*99;jm_Mr@   c                     U R                   R                  SS9nUR                  S   R                  5       S/:X  d   eU R                  R                  SS9nUR                  S   R                  5       S/:X  d   eg )Nr"   r   rn   )rT  rD   rQ   r   r9   rI   s     r   r   0TestNonuniformGeometryPlotting.test_style_kwargsb  sq    [[,~~a **,444WW\\R\(~~a **,444r@   c                 N   U R                   R                  SSS9U R                  R                  SSS94 H+  nSSS/4/UR                  S   R	                  5       :X  a  M+   e   U R                   R                  SSS9nS/ S	Q4/UR                  S   R	                  5       :X  d   eg )
Nr|  r3   r}  r   r   r  r   r  r  )rT  rD   r9   rQ   r  rI   s     r   r  :TestNonuniformGeometryPlotting.test_style_kwargs_linestyleh  s     KKsa8GGLL3!L4
B 3+&'2>>!+<+J+J+LLLL	
 [[(;qIN#$q(9(G(G(IIIIr@   zDarray-like style_kwds not supported for mixed geometry types (#1379)reasonc                 :   / SQnU Vs/ s H  n[        US5      PM     nnU R                  R                  USS9U R                  R                  USS9U R                  R                  USS94 H%  nX4R                  S   R                  5       :X  a  M%   e   g s  snf )N)r  r  r  r3   r}  r  r   )r  rT  rD   r9   rQ   r  )r;   r  styler  rJ   s        r   $test_style_kwargs_linestyle_listlikeCTestNonuniformGeometryPlotting.test_style_kwargs_linestyle_listliket  s    
 ,GIJre/q9rJKKrQ7KKa8GGLLB!L4
B
 ^^A.<<>>>>
 Ks   Bc                     U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5        g )Nrn   r  r   )r9   rD   r7   rE   rF   rQ   r  rI   s     r   r  :TestNonuniformGeometryPlotting.test_style_kwargs_linewidth  s>    WW\\A\&


%%qc2>>!+<+K+K+MNr@   c                 ,   U R                   R                  / SQS9U R                   R                  / SQS9U R                  R                  / SQS94 H@  n[        R                  R                  / SQUR                  S   R                  5       5        MB     g )N)rn   rl   r  r  r   )rT  rD   r9   r7   rE   rF   rQ   r  rI   s     r   $test_style_kwargs_linewidth_listlikeCTestNonuniformGeometryPlotting.test_style_kwargs_linewidth_listlike  sw     KK4KK4GGLLKL0
B
 JJ))R^^A.==?
r@   c                     U R                   R                  SS9n[        R                  R	                  S/UR
                  S   R                  5       5        g )Nr   r   r   )r9   rD   r7   rE   rF   rQ   r   rI   s     r   r   6TestNonuniformGeometryPlotting.test_style_kwargs_alpha  s>    WW\\\$


%%seR^^A->-H-H-JKr@   r^  N)rI  rJ  rK  rL  r>   rY  r   r  r   rM  skiprp  r  ru  r   rO  rP  r@   r   r`  r`  I  s{    ON5
J [[U  	?	?O
 [[U  		Lr@   r`  class)scopec                    [        U 5      nUR                  UR                  S:H     UR                  l        UR                  R                  R                  S5      UR                  l        UR                  R                  R                  n[        R                  " US   US   /5      nS[        R                  " U[        R                  -  S-  5      -  UR                  l        g)zJAttach naturalearth_lowres class attribute for unittest style setup_methodzNorth AmericazESRI:102008r3   r0   r  N)r   r   	continentclsnorthto_crs
north_projtotal_boundsr7   meancospir1   )naturalearth_lowresr   r9   boundsy_coords        r   _setup_class_geographic_aspectr    s     
&	'Br||>?GKK$[[..55mDGKK[[++Fggvay&),-G"&&2553!677GKKOr@   r  zpyproj not availablerl  c                        \ rS rSrS rS rSrg)TestGeographicAspecti  c                    U R                   R                  R                  5       nUR                  5       U R                  :X  d   eU R
                  R                  R                  5       nUR                  5       S;   d   eU R                   R                  5       nUR                  5       U R                  :X  d   eU R
                  R                  5       nUR                  5       S;   d   eU R                   R                  S5      nUR                  5       U R                  :X  d   eU R
                  R                  S5      nUR                  5       S;   d   eg )Nequalr   pop_est)r  r.   rD   rF  r1   r  )r;   rJ   rd   r%  r&  s        r   	test_autoTestGeographicAspect.test_auto  s   ZZ  %%'}}$((***oo&&++-~~>111ZZ__}}$((***oo""$~~>111jjooi(~~488+++oo""9-~~>111r@   c                 6   U R                   R                  R                  SS9nUR                  5       S;   d   eU R                   R                  R                  US S9  UR                  5       S;   d   eU R                   R                  R                  SS9nUR                  5       S:X  d   eU R                   R                  R                  US S9  UR                  5       S:X  d   eU R                  R                  R                  SS9nUR                  5       S:X  d   eU R                  R                  R                  US S9  UR                  5       S:X  d   eU R                   R                  SS9nUR                  5       S;   d   eU R                   R                  US S9  UR                  5       S;   d   eU R                   R                  SS9nUR                  5       S:X  d   eU R                   R                  US S9  UR                  5       S:X  d   eU R                  R                  SS9nUR                  5       S:X  d   eU R                  R                  US S9  UR                  5       S:X  d   eU R                   R                  SSS9nUR                  5       S;   d   eU R                   R                  SUS S9  UR                  5       S;   d   eU R                   R                  SSS9nUR                  5       S:X  d   eU R                   R                  SUS S9  UR                  5       S:X  d   eU R                  R                  SSS9nUR                  5       S:X  d   eU R                  R                  SUS S9  UR                  5       S:X  d   eg )Nr  )rE  r  )rJ   rE  r   r  )r  r.   rD   rF  r  )r;   rJ   rd   r%  s       r   test_manual TestGeographicAspect.test_manual  s,   ZZ  %%W%5}}.000

  Bt 4}}.000jj!!&&c&2~~3&&&

  C 5~~3&&&oo&&++3+7~~3&&&  %%T%:~~3&&&ZZ__G_,}}.000

2d+}}.000jjooSo)~~3&&&

3t,~~3&&&oo""#".~~3&&&D1~~3&&&ZZ__Yw_7}}.000

	b6}}.000jjooio4~~3&&&

	c$7~~3&&&oo""9S"9~~3&&&Y3t<~~3&&&r@   rP  N)rI  rJ  rK  rL  r  r  rO  rP  r@   r   r  r    s    2$'r@   r  zGignore:Numba not installed. Using slow pure python version.:UserWarningc                      \ rS rSr\S 5       r\R                  S 5       r\R                  S 5       r	S r
S rS rS rS	 rS
 r\R                   R#                  SSS/5      S 5       rS rS rS rS rS rS rS rSrg)TestMapclassifyPlottingi  c                      SS K nWU l        [        UR                  R                  5      U l        U R                  R                  S5        g ! [         a    [        R                  " S5         Nif = f)Nr   mapclassifyUserDefined)	r  ImportErrorr   rc  mcr{   classifiersCLASSIFIERSremove)r~  r  s     r   setup_class#TestMapclassifyPlotting.setup_class  s\    	/ {66BBC}-	  	/.	/s   A  A0/A0c                    [        U5      n[        R                  " SS[        UR                  5      5      US'   [        R                  " SSUR
                  S   5      US'   [        R                  " SSUR
                  S   5      US'   [        R                  " SS	UR
                  S   5      US
'   [        R                  UR                  UR                  S SS2   S
4'   U$ )Nir"   	NEGATIVESr   333333?low_valsr   mid_valsr   	high_valsr   rn   )r   r7   r   r   rr   r   r4  r   )r;   r  r9   s      r   r9   TestMapclassifyPlotting.df  s     *+++c2s288}=;QRXXa[9:S#rxx{;:++c3<;/1vvrxxA+,	r@   c                 *    [        U5      n/ SQUS'   U$ )N)gMbP?gMb`?g~jth?gMbp?g{Gzt?vals)r   )r;   nybb_filenamer9   s      r   nybbTestMapclassifyPlotting.nybb  s     }%86
	r@   c           	         [         R                  " SS9 nUR                  SSSSSS9nS S S 5        WR                  5       R	                  5        Vs/ s H  oDR                  5       PM     nn[        U R                  R                  US   SS95      R                  S	5      S
S   Vs/ s H  nUR                  S5      S   SS PM     nnXW:X  d   eg ! , (       d  f       N= fs  snf s  snf )NTr   r  	QUANTILESr0   OrRdrO   schemer   rV   r   )r   
rl   |r   r3   )
r   r   rD   r   r  r  r;  r  	Quantilessplit)r;   r9   r   rJ   tr  r   r   s           r   r   #TestMapclassifyPlotting.test_legend  s    $$D1Q t  B 2
 )+(A(A(CD(C1**,(CD **2i=A*>?EEdKABO
O GGCLOAb!O 	 
 !!! 21
 E
s   CC"&!C'
Cc           
          UR                  SSSSSS/ SQ0S9nUR                  5       R                  5        Vs/ s H  o3R                  5       PM     nn/ SQnXE:X  d   eg s  snf )	Nr  r  r0   r  Tr  )foobarbazrO   r  r   rV   r   r  rD   r   r  r  r;   r9   rJ   r  r  r   s         r   test_bin_labels'TestMapclassifyPlotting.test_bin_labels  so    WW!#89  
 )+(A(A(CD(C1**,(CD(!!! Es   A c                     [         R                  " [        5         UR                  SSSSSSSS/0S	9  S S S 5        g ! , (       d  f       g = f)
Nr  r  r0   r  Tr  r  r  r  r   r   r   rD   rA  s     r   test_invalid_labels_length2TestMapclassifyPlotting.test_invalid_labels_length"  sF    ]]:&GG "%u~6   '&&s	   =
Ac                     UR                  SSSSSS9nUR                  5       R                  5        Vs/ s H  o3R                  5       PM     nn/ SQnXE:X  d   eg s  snf )Nr  FISHER_JENKSr0   r  Tr  )z-10.00,  -3.41z -3.41,   3.30z  3.30,  10.00r  r  s         r   test_negative_legend,TestMapclassifyPlotting.test_negative_legend-  sc    WW~PT  
 )+(A(A(CD(C1**,(CDI!!! Es   Ac           	          UR                  SSSSSSS0S9nUR                  5       R                  5        Vs/ s H  o3R                  5       PM     nn/ S	QnXE:X  d   eg s  snf )
Nr  r  r0   r  Tr  r  r  )z-10,  -3z -3,   3z  3,  10r  r  s         r   test_fmt TestMapclassifyPlotting.test_fmt5  sn    WW!)  
 )+(A(A(CD(C1**,(CD7!!! E   Ac           	          UR                  SSSSSSS0S9nUR                  5       R                  5        Vs/ s H  o3R                  5       PM     nn/ SQnXE:X  d   eg s  snf )	Nr  r  r0   r  Tintervalr  )z[-10.00,  -3.41]z( -3.41,   3.30]z(  3.30,  10.00]r  r  s         r   test_interval%TestMapclassifyPlotting.test_intervalB  sn    WW!#T*  
 )+(A(A(CD(C1**,(CDO!!! Er  r  r  FISHERJENKSc                     UR                  SUSSS9n[        UR                  5       R                  5       5      S:X  d   eg )Nr  r0   T)rO   r  r   r   )rD   r   r   r  )r;   r  r9   rJ   s       r   test_scheme_name_compat/TestMapclassifyPlotting.test_scheme_name_compatO  s:    WWK!DWI2==?,,./1444r@   c                 L    U R                    H  nUR                  SUSS9  M     g )Nr  T)rO   r  r   )r  rD   r;   r9   r  s      r   test_schemes$TestMapclassifyPlotting.test_schemesT  s$    &&FGG9VDGA 'r@   c           	         UR                  SSSSSS/0SSS	9nUR                  5       R                  5        Vs/ s H  o3R                  5       PM     nn[	        U R
                  R                  US   SS/S
95      R                  S5      SS   Vs/ s H  nUR                  S5      S   SS PM     nnXF:X  d   eg s  snf s  snf )Nr  percentilesr0   pct2   d   r  T)rO   r  r   classification_kwdsrV   r   )r  r  rl   r  r   r3   r  )rD   r   r  r  r;  r  Percentilesr  )r;   r9   rJ   r  r  r   r   s          r   test_classification_kwds0TestMapclassifyPlotting.test_classification_kwdsY  s    WW !&S	 2  
 )+(A(A(CD(C1**,(CD ,,R	]S	,JKQQRVW
 GGCLOAb! 	 
 !!! E
s   B;!C c           	          [         R                  " [        5         SnUR                  SUSSSS9  S S S 5        g ! , (       d  f       g = f)Nzinvalid_scheme_*#&)(*#
gdp_md_estr0   r  Tr  r  r  s      r   test_invalid_scheme+TestMapclassifyPlotting.test_invalid_schemel  s6    ]]:&-FGG<!&QUGV '&&s	   :
Ac                     [         R                  " 5       nSSKJn  U" U5      nUR	                  SSSS9n[
        R                  " [        5         UR                  SSS	US
9nSSS5        g! , (       d  f       g= f)zPass a 'cax' argument to 'df.plot(.)', that is valid only if 'ax' is
passed as well (if not, a new figure is created ad hoc, and 'cax' is
ignored)
r   make_axes_locatableright5%皙?)sizepadr  r  T)rO   rV   r   r  N)	r   r   mpl_toolkits.axes_grid1r  append_axesr   r   r   rD   )r;   r9   rJ   r  dividerr  s         r   test_cax_legend_passing/TestMapclassifyPlotting.test_cax_legend_passingq  sa    
 XXZ?%b)!!'#!>]]:&	tMB '&&s   A++
A9c           	         [         R                  " SS9 nUR                  SSSS9nSSS5        [        WR	                  5       S5      R                  5       R                  n[        UR	                  5       S5      R                  5       R                  n[        XE-
  5      S	:  d   e[        R                  " 5       u  pgS
SK
Jn  U" U5      n	U	R                  SSSSS9n
[         R                  " SS9 nUR                  SSSXS9nSSS5        [        US5      R                  5       R                  n[        US5      R                  5       R                  n[        XE-
  5      S	:  d   eg! , (       d  f       GNH= f! , (       d  f       N|= f)zaPass a cax argument to 'df.plot(.)', the legend location must be
aligned with those of main plot
Tr   r  r  r   N 
<colorbar>gư>r   r  r  r  r  fixed_colorbar)r  r  r  )rO   rV   r   r  rJ   )r   r   rD   _get_axr   get_positionheightabsr   r   r  r  r  )r;   r9   r   rJ   plot_heightlegend_heightr   rd   r  r  r  s              r   test_cax_legend_height.TestMapclassifyPlotting.test_cax_legend_height~  sC   
 $$D1Q	tDB 2bmmor2??AHH>KKMTT;./4777<<>?%c*!!'#EU!V$$D1Q''#'VC 2c2&335<<%56CCELL;./$666 21 21s   E(1E:(
E7:
Fc                 .  ^ [         R                  " SS5      S-  nUR                  SSSU0SS9n[         R                  " / S	Q/ S
Q/ SQ/5      m[	        U4S jUR
                  S   R                  5        5       5      (       d   e/ SQnUR                  5       R                  5        Vs/ s H  oUR                  5       PM     nnXF:X  d   e/ SQnUR                  5       R                  5        Vs/ s H  oR                  5       PM     snU:X  d   eUR                  SSSU0SS9n	[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      m[	        U4S jU	R
                  S   R                  5        5       5      (       d   e/ SQnU	R                  5       R                  5        Vs/ s H  oUR                  5       PM     nnXF:X  d   eU	R                  5       R                  5        Vs/ s H  oR                  5       PM     snU:X  d   eUR                  SSSU0SS9n
[         R                  " / SQ/ SQ/ SQ/5      m[	        U4S jU
R
                  S   R                  5        5       5      (       d   eU
R                  5       R                  5        Vs/ s H  oUR                  5       PM     nnXF:X  d   eU
R                  5       R                  5        Vs/ s H  oR                  5       PM     snU:X  d   eg s  snf s  snf s  snf s  snf s  snf s  snf )Nr3      r"   r  r  binsT)r  r  r   g,z?g/lV^?g c?r   g ?g{is?g0"?r   gi7>[?g~8gDi?g].;1?r   c              3   d   >#    U  H%  nUT:H  R                  S S9R                  5       v   M'     g7fr3   r*  Nr   r  r'   zr   s     r   r)   :TestMapclassifyPlotting.test_empty_bins.<locals>.<genexpr>  s6      
7 (]Q'++--7   -0r   )
z
0.00, 0.10
0.10, 0.20
0.20, 0.30
0.30, 0.40
0.40, 0.50
0.50, 0.60
0.60, 0.70
0.70, 0.80
0.80, 0.90
0.90, 1.00)
r  r  r  gHMf?gI?gJ({?r   gB?gDi`?gǟlX?r   g(]?g\?g	/)?r   gK?gGS=?gTC?r   g*r9?gF^?gPT6,?r   gݯ|?g?g=ϟ6?r   g5(?gS<?g~[~l?r   r  r  r  r  r  c              3   d   >#    U  H%  nUT:H  R                  S S9R                  5       v   M'     g7fr  r  r	  s     r   r)   r    6      
8 (]Q'++--8r  )
z
-inf, 0.10r  r  r  r  r  r  r  r  r  r  r  r  r  c              3   d   >#    U  H%  nUT:H  R                  S S9R                  5       v   M'     g7fr  r  r	  s     r   r)   r    r  r  )r7   r8   rD   r  r   rQ   rR   r   r  r  r#  r$  )r;   r9   r  rJ   r  r  r   legend_colors_exprd  rd   r%  r   s              @r   test_empty_bins'TestMapclassifyPlotting.test_empty_bins  s3   yyB"$WW !'	  
 88332
  
^^A&557
 
 
 	
 

 )+(A(A(CD(C1**,(CD
 46==?3L3L3N
3N4$$&3N
 	  gg !'	  
 8823322
  
__Q'668
 
 
 	
 


 ),(8(B(B(DE(D1**,(DE36>>3C3M3M3O
3O4$$&3O
 	  gg !'	  
 88333
  
__Q'668
 
 
 	
 

 ),(8(B(B(DE(D1**,(DE 47>>3C3M3M3O
3O4$$&3O
 	 _ E 
H F
, F
s$   *K90K>&L(LLLc                 z   UR                  SSSS9nUR                  5       R                  5        Vs/ s H  o3R                  5       PM     nn/ SQnXE:X  d   eUR                  SSSSS0S9nUR                  5       R                  5        Vs/ s H  o3R                  5       PM     nn/ S	QnXE:X  d   eg s  snf s  snf )
Nr  	quantilesT)r  r   )
0.00, 0.00r%  r%  r%  z
0.00, 0.01r  z{:.3f})r  r   r  )z0.001, 0.002z0.002, 0.003z0.003, 0.003z0.003, 0.004z0.004, 0.005r  )r;   r  rJ   r  r  r   rd   s          r   test_equally_formatted_bins3TestMapclassifyPlotting.test_equally_formatted_bins  s    YY  

 )+(A(A(CD(C1**,(CD
 !!!ii;t%AR  
 ),(8(B(B(DE(D1**,(DE
 !!!+ E Fs   B3B8rP  N)rI  rJ  rK  rL  classmethodr  r   fixturer9   r  r   r  r  r  r  r  rM  rN  r  r  r  r  r  r  r!  r&  rO  rP  r@   r   r  r    s     . . ^^  ^^ ""	""" [[X'FG5 H5B
"&W
N7,pd"r@   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestPlotCollectionsi$  c                    SU l         [        R                  " U R                   5      U l        [	        S [        U R                   5       5       5      U l        [	        [        U R                   5       Vs/ s H  n[        SU4SUS-   4SU4/5      PM     sn5      U l        [	        [        U R                   5       Vs/ s H  n[        SU4SUS-   4SU4/5      PM     sn5      U l
        g s  snf s  snf )Nr0   c              3   8   #    U  H  n[        X5      v   M     g 7fr$   r%   r&   s     r   r)   3TestPlotCollections.setup_method.<locals>.<genexpr>(  r+   r,   r   rl   r   rk   )r4   r7   r8   r/   r   r5   r6   r   rf  r   polygons)r;   r(   s     r   r>    TestPlotCollections.setup_method%  s    ii'CU466]CCAFtvvOAZ!Q!QW1v67O

 ">CDFFmLmWq!fq!c'lQF34mL
 P Ms   3!C*<!C/c                    SSK Jn  SSKJn  [        R
                  " 5       u  p4U" X@R                  5      n[        XQ5      (       d   eUR                  5         U" X@R                  5      n[        U R                  UR                  5       [        /U R                  -  5        UR                  5         U" X@R                  SS9n[        U R                  UR                  5       S/U R                  -  5        [        U R                  UR                  5       S/U R                  -  5        UR                  5         U" X@R                  SSS9n[        U R                  UR                  5       S/U R                  -  5        [        U R                  UR                  5       S/U R                  -  5        UR                  5         U" X@R                  / SQS9n[        U R                  UR                  5       / SQ5        [        U R                  UR                  5       / SQ5        UR                  5         U" UU R                  / S	QS9n[        U R                  UR                  5       / S	Q5        [        U R                  UR                  5       / S	Q5        UR                  5         [        R                  " [         ["        45         U" X@R                  S
S9  S S S 5        g ! , (       d  f       g = f)Nr   )PathCollection_plot_point_collectionr  r   r   r  r   r  r\   r   )r  r  r  r   r  r   )matplotlib.collectionsr2  geopandas.plottingr4  r   r   r6   
isinstanceclarP   r4   rR   rS   r  r   r   r   r   )r;   r2  r4  r   rJ   colls         r   test_pointsTestPlotCollections.test_points0  s   9=,,.%b++6$////
 &b++6dffd113m_tvv5MN 	 &b++SAdffd113cUTVV^Ddffd113cUTVV^D
 &b++PSTdffd113cUTVV^Ddffd113cUTVV^D
 &b++_Mdffd113_Edffd113_E
%KKT

 	FF!N	

 	FF!N	

 	 ]]Iz23"2{{+F 433s   K
K,c                    SSK Jn  [        R                  " 5       u  p#U" X0R                  U R
                  5      nUR                  R                  5         [        R                  " 5       nU" [        R                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  5       U5        g )Nr   r3  r3   )r8  r4  r   r   r6   r/   canvas	draw_idlerT   r7   r8   r4   rP   rR   )r;   r4  r   rJ   r;  rV   rW   s          r   test_points_values&TestPlotCollections.test_points_valuesh  s    = ,,.%b++t{{C

||~ryy0DFFQJ?@dffd113_Er@   c                    SSK Jn  SSKJn  [        R
                  " 5       u  p4U" X@R                  5      n[        XQ5      (       d   eUR                  5         U" X@R                  5      n[        U R                  UR                  5       [        /U R                  -  5        UR                  5         U" X@R                  SS9n[        U R                  UR                  5       S/U R                  -  5        UR                  5         U" X@R                  SSS9n[        U R                  UR                  5       S/U R                  -  5        [        U R                  UR                  5       S/U R                  -  5        UR                  5         U" X@R                  / SQS9n[        U R                  UR                  5       / SQ5        UR                  5         U" UU R                  / S	QS9n[        U R                  UR                  5       / S	Q5        UR                  5         U" X@R                  S
SS9n[!        SS5      nUR#                  5       S   nUS   US   :X  d   eUS   US   :X  d   eUR                  5         [$        R&                  " [(        [*        45         U" X@R                  SS9  S S S 5        g ! , (       d  f       g = f)Nr   )LineCollection_plot_linestring_collectionr  r   r   r  r5  r6  z--r3   r}  r  r   )r7  rD  r8  rF  r   r   rf  r9  r:  rP   r4   	get_colorrS   ry  rR   r  r  r  r   r   r   r   )r;   rD  rF  r   rJ   r;  r  res_lss           r   test_linestrings$TestPlotCollections.test_linestringsu  s    9B,,.*2zz:$////
 +2zz:dffdnn.$&&0HI
 +2zzEdffdoo/#@
 +2zzSTWXdffd113cUTVV^Ddffd113cUTVV^D
 +2zzQdffdoo/A
*JJT

 	FFOON	

 	 +2zzTUVW.x;##%a(ayF1I%%%ayF1I%%%
 ]]Iz23'JJkJ 433s   J::
Kc                 4   SSK Jn  [        R                  " 5       u  p#U" X0R                  U R
                  5      nUR                  R                  5         [        R                  " 5       nU" [        R                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  5       U5        UR                  5         U" X0R                  U R
                  SS9nUR                  R                  5         [        R                  " S5      nU" [        R                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  5       U5        UR                  5         U" X0R                  U R
                  SSS9nUR                  R                  5         [        R                  " 5       nU" S5      /n[        U R                  UR                  5       US-  5        UR                  5         g )	Nr   rE  r3   RdBurw   r0   ro   r   )r8  rF  r   r   rf  r/   r?  r@  rT   r7   r8   r4   rP   rG  r:  )r;   rF  r   rJ   r;  rV   rW   s          r   test_linestrings_values+TestPlotCollections.test_linestrings_values  sg   B,,. +2zz4;;G

||~ryy0DFFQJ?@dffdnn.@
 +2zz4;;VT

||F#ryy0DFFQJ?@dffdnn.@
 +2zz4;;QUVW

||~7)dffdnn.!0CD
r@   c                    SSK Jn  SSKJn  [        R
                  " 5       u  p4U" X@R                  5      n[        XQ5      (       d   eUR                  5         U" X@R                  5      n[        U R                  UR                  5       [        /U R                  -  5        [        UR                  5       5      S:X  d   eUR                  5         U" X@R                  SS9n[        U R                  UR                  5       S/U R                  -  5        [        U R                  UR                  5       S/U R                  -  5        UR                  5         U" X@R                  / SQS9n[        U R                  UR                  5       / SQ5        [        U R                  UR                  5       / SQ5        UR                  5         U" UU R                  / SQS9n[        U R                  UR                  5       / SQ5        [        U R                  UR                  5       / SQ5        UR                  5         U" X@R                  SS9n[        U R                  UR                  5       S/U R                  -  5        [        UR                  5       5      S:X  d   eUR                  5         U" X@R                  SS	S
9n[        U R                  UR                  5       S/U R                  -  5        [        U R                  UR                  5       S	/U R                  -  5        UR                  5         [        R                   " ["        [$        45         U" X@R                  SS9  S S S 5        g ! , (       d  f       g = f)Nr   )PatchCollection_plot_polygon_collectionr  r   )r  r\   r   r6  r  r   r  r   )r7  rP  r8  rR  r   r   r/  r9  r:  rP   r4   r  rS   r   r   r   r   r   r   )r;   rP  rR  r   rJ   r;  s         r   test_polygons!TestPlotCollections.test_polygons  s   :?,,.'MM:$0000
 (MM:dffd002]Odff4LM4%%'(A---
 (MMEdffd002SEDFFNCdffd002SEDFFNC
 (MMQdffd002ODdffd002OD
'MMT

 	FF N	

 	FF N	

 	 (MMSIdffd002SEDFFNC4%%'(A---
 (MMSTWXdffd002SEDFFNCdffd002SEDFFNC
 ]]Iz23$RkJ 433s   M00
M>c                    SSK Jn  [        R                  " 5       u  p#U" X0R                  U R
                  5      nUR                  R                  5         [        R                  " 5       nU" [        R                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  5       U5        UR                  5         U" X0R                  U R
                  SS9nUR                  R                  5         [        R                  " S5      nU" [        R                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  5       U5        UR                  5         U" X0R                  U R
                  SSS9nUR                  R                  5         [        R                  " 5       nU" S5      /n[        U R                  UR                  5       US-  5        UR                  5         U" X0R                  U R
                  S	S
9nUR                  R                  5         [        R                  " 5       nU" [        R                  " U R                  5      U R                  S-
  -  5      n[        U R                  UR                  5       U5        [        U R                  UR                  5       S	/U R                  -  5        UR                  5         g )Nr   rQ  r3   rL  rw   r0   ro   r   r  r  )r8  rR  r   r   r/  r/   r?  r@  rT   r7   r8   r4   rP   r  r:  r   )r;   rR  r   rJ   r;  rV   r}   s          r   test_polygons_values(TestPlotCollections.test_polygons_values  s   ?,,. (MM4;;G

||~"))DFF+tvvz:;
dffd002J? 	 (MM4;;VT

||F#"))DFF+tvvz:;
dffd002J?
 (MM4;;QUVW

||~1gY
dffd002JNC
 (MM4;;RUV

||~"))DFF+tvvz:;
dffd002J?dffd002SEDFFNC
r@   )r4   rf  r6   r/  r/   N)rI  rJ  rK  rL  r>   r<  rA  rI  rM  rS  rV  rO  rP  r@   r   r+  r+  $  s,    	
6Gp	F5Kn:;Kz&r@   r+  c                       \ rS rSrS rS r\R                  r\(       a;  \	R                  R                  S\5      \" SS/S9S 5       5       r\" SS/S9S	 5       rS
 rSrg)TestGeoplotAccessori/  c                     [        / SQ5      [        SS5      /nSS/nSS/n[        XUS.SS	9U l        [        R
                  " X#S
.5      U l        g )Nr   r3   r0   rn   r"   r   )r.   r,  yz	EPSG:4326)crsr,  r[  )r   r
   r   r   r`   	DataFramer9   )r;   
geometriesr,  r[  s       r   r>    TestGeoplotAccessor.setup_method0  sU    67q!E
FH#!4+
 ,,Q/0r@   c                    UR                  5       nU R                  R                  " SXS.UD6  UR                  5       nU R                  R                  " SXS.UD6  UR                  5       n[	        U R                  R                  U5      " SSU0UD6  UR                  5       n[	        U R                  R                  U5      " SSU0UD6  g)zCompare Figures.)kindrJ   rJ   NrP  )r   r9   rD   r   getattr)	r;   rb  fig_testfig_refkwargsax_pandas_1ax_geopandas_1ax_pandas_2ax_geopandas_2s	            r   compare_figures#TestGeoplotAccessor.compare_figures9  s    '')9$9&9 ))+=4=f='')d#={=f= ))+t$AA&Ar@   rb  r  r  )r  c                    SSK nSS/nS/nSS/n0 nX;   a]  UR                  R                  S5      (       d<  [        R                  " [
        S	S
9   U R                  R                  US9  SSS5        gOX;   a  SS0nOX;   a  SSS.nUS:X  a  SUS'   U R                  XX85        [        R                  " S5        g! , (       d  f       g= f)zTest Pandas kind.r   NkdedensitypiescatterhexbinscipyzNo module named 'scipy'r   rb  r[  r,  r]  r"   gridsizer   )	importlibutil	find_specr   r   ModuleNotFoundErrorr   rD   rk  r   r   )	r;   rb  rd  re  rv  _scipy_dependent_kinds_y_kinds	_xy_kindsrf  s	            r   test_pandas_kind$TestGeoplotAccessor.test_pandas_kindI  s     &+Y%7"wH"H-IF- ~~//88+3L 40  9 !s""-8#)+F:&  AIIe  s   B<<
C
c                     UR                  5       nU R                  R                  US9  UR                  5       n[        U R                  R                  S5      " US9  [        R
                  " S5        g)zTest Geo kind.)rJ   geor   N)r   r   rD   rc  r   r   )r;   rd  re  rc   rd   s        r   test_geo_kind!TestGeoplotAccessor.test_geo_kindd  sU     ##%CHHMMSM!""$CDHHMM5)S1IIer@   c                 J   [         R                  " [        SS9   U R                  R	                  SS9  SSS5        [         R                  " [
        SS9   U R                  R                  R                  5         SSS5        g! , (       d  f       NU= f! , (       d  f       g= f)zTest invalid kinds.zerror is not a valid plot kindr   errorrt  Nz1'GeoplotAccessor' object has no attribute 'error')r   r   r   r   rD   AttributeErrorr  rY  s    r   test_invalid_kind%TestGeoplotAccessor.test_invalid_kindm  sp    ]]:-MNHHMMwM' O]]E
 HHMM!	
 
 ON
 
s   B%B
B
B")r9   r   N)rI  rJ  rK  rL  r>   rk  r   _pandas_kindsr/  r   rM  rN  r   r}  r  r  rO  rP  r@   r   rY  rY  /  ss    1
B $11M		 	 	7		7	 
8 
8	2 
	7	 
8	"r@   rY  c                  d   [        / SQ5      n [        / SQ5      n[        X/[        S5      S9n[        USS/S.5      n[        X/SS/S9n[        USS/S.5      nUR	                  SS	9nUR
                  S   R                  5       nUR	                  US   S	9nUR
                  S   R                  5       n[        R                  R                  Xx5        UR	                  US   R                  S	9nUR
                  S   R                  5       n	[        R                  R                  Xy5        UR	                  SS
S9nUR
                  S   R                  5       nUR	                  US   S
S9nUR
                  S   R                  5       n[        R                  R                  Xx5        UR	                  US   R                  S
S9nUR
                  S   R                  5       n	[        R                  R                  Xy5        UR	                  UR                  S
S9nUR
                  S   R                  5       n	[        R                  R                  Xy5        [        R                  " [        SS9   UR	                  [        R                  " / SQ5      S	9nSSS5        g! , (       d  f       g= f)zv
Check that the dataframe plot method returns same values with an
input string (column in df), pd.Series, or np.array
r   r  r  rq   r   r3   r-   r/   rN   T)rO   r   zdifferent number of rowsr   rb  N)r   r   r{   r   rD   rQ   rR   r7   rE   rF   r/   rr   r   r   r   r  )
r  r  r  r9   numeric_index_polysnumeric_index_dfrJ   r   colors_seriescolors_arrays
             r   test_column_valuesr  x  s@    
)	*B	)	*Brhd4j1E	5QF;	<B#RHQF;#1DQRTUPV$WX 
	!B^^A--/F	8	%BNN1%446MJJ!!&8	8++	,B>>!$335LJJ!!&7 
d	3B^^A--/F	8$	7BNN1%446MJJ!!&8	8++	>B>>!$335LJJ!!&7 
		&6&<&<$		OB>>!$335LJJ!!&7 
z)C	DWWBHHY/W0 
E	D	Ds   2&J!!
J/c                     SSK Jn   SSKJn  [	        SS5      R                  S5      R                  [        SS/5      R                  S5      5      nU" U5      n[        X05      (       d   eUR                  5       n[        R                  (       a9  [        UR                  5      [        UR                  5      s=:X  a  S:X  d   e   eg [        UR                  5      [        UR                  5      s=:X  a  S	:X  d   e   eg )
Nr   )	PathPatch)_PolygonPatchg      $@)r   r  g      @      )matplotlib.patchesr  r8  r  r
   r;  r#  r   r9  get_pathcompatGEOS_GE_390r   r   codes)r  r  polygonpatchpaths        r   test_polygon_patchr    s     -0 	a4 ++J7H,I,P,PQT,UV  '"Ee''''>>D4==!S_;;;;;;4==!S_;;;;;;r@   c           	      l   SSK Jn  UR                  n[        [        U5      n[        [        R                  " [        R                  " U5      U 5      5      n[        U5      [        U5      :X  d   S5       e[        Xb5       H0  u  pxXuR                  XS9:X  a  M   U SUR                  XS9 35       e   g)a+  
Asserts that the members of `collection` match the `expected_colors`
(in order)

Parameters
----------
N : int
    The number of geometries believed to be in collection.
    matplotlib.collection is implemented such that the number of geoms in
    `collection` doesn't have to match the number of colors assignments in
    the collection: the colors will cycle to meet the needs of the geoms.
    `N` helps us resolve this.
collection : matplotlib.collections.Collection
    The colors of this collection's patches are read from
    `collection.get_facecolors()`
expected_colors : sequence of RGBA tuples
alpha : float (optional)
    If set, this alpha transparency will be applied to the
    `expected_colors`. (Any transparency on the `collection` is assumed
    to be set in its own facecolor RGBA tuples.)
r   )r   z0Different lengths of actual and expected colors!r   z != N)r   r   colorConvertermaptupler{   	itertoolsislicecycler   zipto_rgba)	r4   r  rW   r   r   convall_actual_colorsactualr   s	            r   rP   rP     s    , "  D }-MY--ioom.LaPQ !S%99 :9   1Ch<< 	
hd4<<<>?@	
< Dr@   c                     [         R                  R                  U 5      u  p#[         R                  R                  X#U5      $ )zConverts a linestyle string representation, namely one of:
    ['dashed',  'dotted', 'dashdot', 'solid'],
documented in `Collections.set_linestyle`,
to the form `onoffseq`.
)r   rf  _get_dash_pattern_scale_dashes)r~  r  offsetdashess       r   r  r    s5      %%77	BNF))&)DDr@   c                 z    [         R                  R                  U 5      R                  5       nUR                  S-  $ )z(Converts a markerstyle string to a path.rn   )r   markersMarkerStyler  r   )markerstyler  s     r   r   r     s2     ))+6??AD==1r@   c                 t    U R                    H  nUR                  5       U:X  d  M  Us  $    [        SU 35      e)z
Helper function to not rely on the order of `fig.axes`.
Previously, we did `fig.axes[1]`, but in matplotlib 3.4 the order switched
and the colorbar ax was first and subplot ax second.
zno ax found with label )r   	get_labelr   )r   r  rJ   s      r   r  r    s:     hh<<>U"I  .ug6
77r@   c                     [        U S5      $ )Nr  )r  )r   s    r   r   r     s    3%%r@   r$   )Hr  r   numpyr7   pandasr`   shapely.affinityr   shapely.geometryr   r   r   r   r   r	   r
   r   r   geopandas._compat_compatr  	geopandasr   r   r   r8  r   r   rc  r   usematplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   r   r/  r  r)  r   rcParamsby_keyr  rS   KeyErrorupdater   rR  r_  r  r1  r8  rM  r`  r  rM  usefixturesskipif
HAS_PYPROJr  r   r  r+  rY  r  r  rP   r  r   r  r   rP  r@   r   <module>r     sD       #
 
 
 # 8 8 .   .
 
u  SN
  
? 1299;E'N1%M   .2 3Z$ Z$z	 	gS gST^S ^SB $&
 &
R"N "NJNL NLx g8 8 9:)))2HI3' 3' J ;3'l Mv" v"v"r	H HVF" F"R(1V<(%
PE	8&u>  N  ?''(:;A>M?s$   1
G" %G1 "G.-G.1HH