
    h.                    $   d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d dlZ ej8                  d      Zej=                  d       d dlm Z! 	 d dl"m#Z#m$Z$ d	Z% ejN                  d	      d        Z(	 ejR                  d   jU                         Z+e+d   d    Z,e!jR                  j]                  dd i        G d d      Z/ G d d      Z0 G d d      Z1 G d d      Z2 G d d      Z3 G d d      Z4 G d d      Z5 G d d       Z6 ejN                  d!"      d#        Z7ejp                  js                  d$      ejp                  ju                  ejv                   d%&       G d' d(                    Z<ejp                  j{                  d)       G d* d+             Z> G d, d-      Z? G d. d/      Z@d0 ZAd1 ZBd7d2ZCd3 ZDd4 ZEd5 ZFd6 ZGy# e&$ r d
Z%Y uw xY w# e-$ r ejR                  d   d    Z,Y Tw xY w)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              #   >   K   d  t        j                  d       y w)Nall)pltclose)requests    P/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/test_plotting.pyclose_figuresr   &   s     	IIes   zaxes.prop_cyclecolorzaxes.color_cyclezfigure.max_open_warningc            
       @   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zej&                  j)                  d edddd       edddd      g eddg       eddg      g edd       edd      gg      d        Zd Zd Zd Zd Zd Zd Zy )!TestPointPlottingc                 x   d| _         t        d t        | j                         D              | _        t	        j
                  | j                         }t        | j                  |d      | _        |dz  dz  | j                  d<   t        | j                        }t        |d      }t        ||gddgd      | _
        y )	N
   c              3   4   K   | ]  }t        ||        y wNr
   .0is     r   	<genexpr>z1TestPointPlotting.setup_method.<locals>.<genexpr>8        CaC   geometryvalues   expZ   r      )Nr   rangepointsnparanger   dfr   r   df2)selfr-   multipoint1multipoint2s       r   setup_methodzTestPointPlotting.setup_method6   s    CU466]CC466"DKK6JK 2+!+ -["-%{31vF
    c                 T   | j                   j                  d      }t        j                  j	                  |j
                  j                         d       | j                  j                  d      }t        j                  j	                  |j
                  j                         d       y )Nr1   r1   )figsize)r4   plotr5   testingassert_array_equalfigureget_size_inchesr7   r9   axs     r   test_figsizezTestPointPlotting.test_figsizeE   so    [[f-


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


%%bii&?&?&A6Jr=   c                    | j                   j                         }t        | j                  |j                  d   j                         t        g| j                  z         | j                  j                         }t        | j                  |j                  d   j                         t        g| j                  z         | j                  j                  d      }t        j                         } |t        j                  | j                        | j                  dz
  z        }t        | j                  |j                  d   j                         |       y )Nr   r-   columnr1   )r4   rA   _check_colorsr2   collectionsget_facecolorsMPL_DFT_COLORr7   r   get_cmapr5   r6   r9   rG   cmapexpected_colorss       r   test_default_colorsz%TestPointPlotting.test_default_colorsL   s     [[FFBNN1%446$&&8P	

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

 WW\\\*||~ryy0DFFQJ?@dffbnnQ/>>@/Rr=   c                 |   t        j                  g d      }| j                  j                  |      }|| j                  d<   | j                  j                  d      }|j                  d   j                         }|j                  d   j                         }t        j                  j                  |d   |d          y )N)
abcrV   rW   rX   rV   rW   rX   rV   
colors_ordr   r1   	pdSeriesr7   rA   rM   rN   r5   rB   rC   r9   rY   ax1ax2point_colors1point_colors2s         r   test_series_color_no_indexz,TestPointPlotting.test_series_color_no_indexa   s    YYQR
 ggll:& !+ggll<( *99;*99;


%%mA&6a8HIr=   c                    t        j                  g dg d      }| j                  j                  |      }|| j                  d<   | j                  j                  d      }|j                  d   j                         }|j                  d   j                         }t        j                  j                  |d   |d          y )N)
rV   rV   rV   rV   rW   rW   rW   rX   rX   rX   )
r   r.      	   r1                  indexrY   r   r1   rZ   r]   s         r   test_series_color_indexz)TestPointPlotting.test_series_color_indexq   s    YY>0

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


%%mA&6a8HIr=   c                    | j                   j                  d      }t        j                  d      } |t	        j
                  | j                        | j                  dz
  z        }t        | j                  |j                  d   j                         |       | j                  j                  d      }t        | j                  |j                  d   j                         |       | j                  j                  dd      }t        j                  d      }t        | j                  |j                  d   j                         |       | j                   j                  t        j                  dd	            }t        j                  dd	      } |t        t        d            d
z        }t        | j                  |j                  d   j                         |       y )NRdYlGnrR   r1   r   r-   )rK   rR   Set1ri   lutrh   )r4   rA   r   rP   r5   r6   r2   rL   rM   rN   r7   listr3   r9   rG   rR   
exp_colorss       r   test_colormapz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                    | j                   j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         t        j                  t        t        f      5  | j                  j                  d       d d d        t        j                  d      5 }| j                  j                  d	d
      }t        | j                  |j                  d   j                         dg| j                  z         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ngreenr   r         ?r|   r|   r|   r|   r|   r|   	not colorTrecordr-   rK   r   )r4   rA   rL   r2   rM   rN   r7   pytestraises
ValueError	TypeErrorwarningscatch_warningsr9   rG   _s      r   test_single_colorz#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+	, $$D1 	QXW=Bq)88:WI<N	 		, 	,	 	s   H2AH>2H;>Ic                    | j                   j                  d      }|j                  d   j                         dgk(  sJ | j                  j                  d      }|j                  d   j                         dgk(  sJ | j                  j                  dd      }|j                  d   j                         dgk(  sJ | j                  j                  d      }|j                  d   j                         | j                  d   k(  j                         sJ | j                  j                  dd      }|j                  d   j                         | j                  d   k(  j                         sJ y )Nr!   
markersizer   r-   )rK   r   )r4   rA   rM   	get_sizesr7   r   rF   s     r   test_markersizez!TestPointPlotting.test_markersize   s7   [[,~~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WW\\h\?q!++-1BBGGIIIr=   c                     | j                   j                  d      }t        d      }t        j                  j                  ||j                  d   j                         d   j                         y )N+)markerr   )	r8   rA   _style_to_verticesr5   rB   rC   rM   	get_pathsvertices)r9   rG   expecteds      r   test_markerstylez"TestPointPlotting.test_markerstyle   sT    XX]]#]&%c*


%%bnnQ'113A6??	
r=   c                     | j                   j                  d      }|j                  d   j                         g dk(  j	                         sJ y )Nk)
edgecolorsr   )r   r   r   r1   )r4   rA   rM   get_edgecolorr   rF   s     r   test_style_kwargsz#TestPointPlotting.test_style_kwargs   sB    [[-q!//1\AFFHHHr=   c                    | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                	 | j                   j                  t        j                  ddd| j                              }t        j                  j	                  t        j                  ddd| j                        |j
                  d   j                                y # t        $ r Y y w xY wNffffff?alphar                 ?
r7   rA   r5   rB   rC   rM   	get_alphalinspacer2   r   rF   s     r   test_style_kwargs_alphaz)TestPointPlotting.test_style_kwargs_alpha       WW\\\$


%%seR^^A->-H-H-JK	BKK3TVV$DEB
 JJ))AsC0"..2C2M2M2O	  		   <C2 2	C>=C>c                    t        j                  d      5 }| j                  j                  ddd      }t	        |j                         j                        dk(  sJ 	 d d d        | j                  j                  d      }t	        |j                         j                        dk(  sJ | j                  j                  ddd	      }|j                  d
   j                         }t        |j                               j                  d   j                         }t        j                  j                  |d
   |d
          t        j                  j                  |d   |d          | j                  j                  ddd      }|j                  d
   j                         }|j                         j                  j                  d   j                         }t        j                  j                  |d
   |d
          t        j                  j                  |d   |d          t        j                  j!                  | j                  dd  j"                  j%                         | j                  dd  j"                  j'                               }| j                  dd  j                  ddd|      }|j                  d
   j                         }t        |j                               j                  d   j                         }t        j                  j                  |d
   |d
          t        j                  j                  |d   |d          |j(                  dk(  sJ y # 1 sw Y   xY w)NTr   r-   ry   )rK   r   legendr1   r   ro   rK   rR   r   r   )rK   categoricalr   vminvmaxr/   )rK   rR   r   norm)   rf   )r   r   r7   rA   len
get_figureaxesrM   rN   _get_colorbar_axr5   rB   rC   
get_legendr   colorsLogNormr/   minmaxshape)r9   r   rG   point_colorscbar_colorsr   s         r   test_legendzTestPointPlotting.test_legend   s   $$D1 	2Q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 	2s   AMM(c                 d   t         j                  j                  }t         j                  j	                  dd      }| j
                  j                  d||      }|j                  d   j                         } |t        j                  d      dz        }t        j                  j                  ||       t        j                         \  }}| j
                  dd  j                  d|||       |j                  d   j                         }t        j                  j                  |d   |d          y 	Nr      r   r-   rK   rR   r   r!   r1   rK   rG   r   rR   r   cm	viridis_rr   	Normalizer7   rA   rM   rN   r5   r6   rB   rC   r   subplotsr9   rR   r   rG   actual_colors_origrv   figactual_colors_subs           r   test_subplots_normz$TestPointPlotting.test_subplots_norm      }}&&  ***;WW\\4\@^^A.==?"))B-2./



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


%%&8&;=Nq=QRr=   c                 n   t        t               g      }t        j                  t              5  |j                         }d d d        t        j                        dk(  sJ t        g       }t        j                  t              5  |j                         }d d d        t        |j                        dk(  sJ t        g dg      }t        j                  t              5  |j                         }d d d        t        |j                        dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   <xY w)Nr   r,   )columns)	r   r   r   warnsUserWarningrA   r   rM   r   )r9   srG   r7   s       r   test_empty_plotz!TestPointPlotting.test_empty_plot  s    wyk"\\+& 	B	2>>"a'''bM\\+& 	B	2>>"a'''"zl3\\+& 	B	2>>"a'''	 		 		 	s#   DDD+DD(+D4c                 8   t        t        g d      t               g      }|j                         }t        |j                        dk(  sJ t        g d      }t        dd      }t        dd      }t               }t        |||g      }|j                  |      |d<   t        j                         5  t        j                  dd	t               d g|j                  d
<   d d d        |j                         }t        |j                        dk(  sJ y # 1 sw Y   4xY w)Nr   r   r1   r   r?   r1   )r   r   )r   rh   rh   rh   )rh   r   r   r   r!   r,   r,   ignorez2The behavior of DataFrame concatenation with emptyr.   )r   r   rA   r   rM   r
   r   intersectionr   r   filterwarningsFutureWarningloc)r9   r   rG   polypointpoint_empty_pointgdfs           r   test_empty_geometryz%TestPointPlotting.test_empty_geometry'  s    w78')DEVVX2>>"a''' EFar2gUK$@A**40J$$& 	 ##D
 CGGAJ	  XXZ2>>"a'''	  	 s   1,DDgeomsr   r1   rg   rj   r?   r1   rh   )rg   r1   )rg   rh   c                    t        |ddg      }|j                  t        dddd            }|j                  ddg	      }t	        j
                  g d
      }|j                  d   dk(  rCt        j                  j                  |j                         d   j                         d   |       y t        j                  j                  |j                         d   j                         d   |       y )NrrW   rk   ri   r   r!   redbluerz   )r   r   r   r   r   )r   r   r   rA   r5   array	geom_typerB   rC   get_childrenr   get_facecolor)r9   r   r   s2rG   r   s         r   test_empty_geometry_colorsz,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                 H   | j                   j                         }t        d|j                  d   j	                         t
        gdz         | j                   j                  d      }t        j                  d      } |d      g| j                  z   |d      g| j                  z  z   }t        d|j                  d   j	                         |       | j                   j                  d	d
g      }t        d|j                  d   j	                         d	gdz  d
gdz  z          y )Nrf   r   r-   rJ   rh   rr   r1   r   r   rW   rz   r!   )	r8   rA   rL   rM   rN   rO   r   rP   r2   rQ   s       r   test_multipointsz"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                    | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                	 | j                   j                  ddg      }t        j                  j	                  dgdz  dgdz  z   |j
                  d   j                                y # t        $ r Y y w xY w)Nr   r   r   皙?r!   r8   rA   r5   rB   rC   rM   r   r   rF   s     r   test_multipoints_alphaz(TestPointPlotting.test_multipoints_alphak  s    XX]]]%


%%seR^^A->-H-H-JK	c3Z0B
 JJ))
cURZ'):)D)D)F	  		s   B? ?	C
Cc                 R   ddgdz  | j                   d<   ddgdz  | j                   d<   dgdz  | j                   d	<   t        j                  ddgdz        | j                   d
<   t        j                  dgdz  ddg      | j                   d<   t        j                  ddgdz  ddg      | j                   d<   ddgdz  | j                   d<   t        j                  ddgdz        | j                   d<   t        j                  ddgdz  d      | j                   d<   | j                   j	                  dd      }| j                   j	                  d
d      }| j                   j	                  d	ddgd      }| j                   j	                  dd      }| j                   j	                  dd      }| j                   j	                  dddgd      }| j                   j	                  dd      }| j                   j	                  dd      }| j                   j	                  dd      }	|j
                  d   j                         }
||||||||	fD ]E  }|j
                  d   j                         }t        j                  j                  |
d   |d          G |j                         j                         D cg c]  }|j                          }}||||||||	fD ][  }|j                         j                         D cg c]  }|j                          }}t        j                  j                  ||       ] t        j                  t              5  | j                   j	                  dd       d d d        t        j                  t         d      5  | j                   j	                  ddg       d d d        t        j                  t         d      5  | j                   j	                  d
dg       d d d        y c c}w c c}w # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Ncat1cat2ri   cats_objectr1   rh   numsr!   singlecat_objectcats)
categories	singlecatcats_orderedFTboolbool_extensionstring)dtypecats_stringr   )r  r   r   non_list)rK   r  z0Column contains values not listed in categories.matchz+Cannot specify 'categories' when column has)r7   r[   Categoricalr   rA   rM   rN   r5   rB   rC   r   	get_linesget_markerfacecolorr   r   r   r   )r9   r^   r_   ax3ax4ax5ax6ax7ax8ax9r`   rG   ra   xlegend1legend2s                   r   test_categoriesz!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;S#sCc: 	NBNN1-<<>MJJ))-*:M!<LM	N 58NN4D4N4N4PQq1((*QQS#sCc: 	<B8:8Q8Q8ST1q,,.TGTJJ))'7;	< ]]9% 	FGGLL*LE	F ]]P
 	D GGLL6(LC	D
 ]]K
 	= GGLLF8L<	= 	= RT	F 	F	D 	D
	= 	=s0   6O;<P PPPPPP&c                    t         j                  | j                  j                  d<   | j                  j	                  d      }t        j                         } |t        j                  | j                  dz
        | j                  dz
  z        }t        | j                  dz
  |j                  d   j                         |       | j                  j	                  dddi      }t        j                         } |t        j                  | j                  dz
        | j                  dz
  z        }t        d|j                  d   j                         dg       t        | j                  dz
  |j                  d   j                         |       | j                  j	                  dddid	d	
      }t        d|j                  d   j                         dg       |j                  d   j                         }|j                  d   j                         }|j                         j                  j                  d   j                         }|j                         j                  j                  d   j                         }t         j                  j                  |d   |d          t         j                  j                  |d   |d          y )Nr   r-   r-   r1   rh   r   r   r   )missing_kwdsT)r  r   r   )r5   nanr7   r   rA   r   rP   r6   r2   rL   rM   rN   r   r   rB   rC   )r9   rG   rR   rS   r   	nan_color
leg_colorsleg_colors1s           r   test_missingz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                     | j                   j                         }|d   j                  d      |d<   |j                  dddid       y )Nr-   strcategory	facecolornoneT)r  r   )r7   copyastyperA   r9   r7   s     r    test_no_missing_and_missing_kwdsz2TestPointPlotting.test_no_missing_and_missing_kwds  s@    WW\\^H,,U3:

+v)>tLr=   c                     t         j                  | j                  j                  d<   | j                  j	                  dddiddd      }|j                         dk(  sJ y )Nr  r-   r   r   Trh   )r  r   r   aspect)r5   r  r7   r   rA   
get_aspectrF   s     r   test_missing_aspectz%TestPointPlotting.test_missing_aspect  sX    #%66K WW\\!3  
 }}!###r=   N)__name__
__module____qualname__r<   rH   rT   rb   rm   rw   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r
   r   r   r   r  r#  r,  r0   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                       e Zd Zd Zd Zy)TestPointZPlottingc                     d| _         t        d t        | j                         D              | _        t	        j
                  | j                         }t        | j                  |d      | _        y )Nr!   c              3   6   K   | ]  }t        |||        y wr#   r$   r%   s     r   r(   z2TestPointZPlotting.setup_method.<locals>.<genexpr>  s     F1aAFs   r+   )r2   r   r3   r4   r5   r6   r   r7   )r9   r-   s     r   r<   zTestPointZPlotting.setup_method  sJ    FdffFF466"DKK6JKr=   c                 8    | j                   j                          y r#   r7   rA   r9   s    r   	test_plotzTestPointZPlotting.test_plot      r=   Nr1  r2  r3  r<   r>  r6  r=   r   r8  r8    s    Lr=   r8  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestLineStringPlottingc                    d| _         t        j                  | j                         }t        t	        | j                         D cg c]  }t        d|fd|dz   fd|fg       c}t        d            | _        t        | j                  |d      | _	        t        | j                  j                  d	d
 j                        }t        | j                  j                  dd j                        }t        ||gddgd      | _        t        t	        | j                         D cg c]  }t        d|fd|dz   fd|fg       c}t        d            | _        t        | j                  |d      | _        y c c}w c c}w )Nr!   r   rf   r|   re   
ABCDEFGHIJrk   r+   ABCDr1   )r2   r5   r6   r   r3   r   rt   linesr   r7   r   r   r-   r8   r   linearringsdf3)r9   r-   r'   
multiline1
multiline2s        r   r<   z#TestLineStringPlotting.setup_method  sA   466"AFtvvOAZ!Q!QW1v67O|$

 DJJ&IJ$TZZ^^C%<%C%CD
$TZZ^^C%<%C%CD
$j1aVD
 %AFtvvOAZ!Q!QW1v67O|$
  T-=-= PQ P Ps   E3 E8c                    | j                   d| j                  dz   j                         }|j                         }| j                   j                  |d       |j                         |k(  sJ | j                  d| j                  dz   j                         }|j                         }| j                  j                  |d       |j                         |k(  sJ y)z,Test linestring plot preserving axes limits.Nrh   FrG   autolimrI  r2   rA   get_ylimr7   r9   rG   ylims      r   test_autolim_falsez)TestLineStringPlotting.test_autolim_false  s    ZZ$&&A+&++-{{}

2u-{{}$$$WW]tvv{#((*{{}E*{{}$$$r=   c                    | j                   d| j                  dz   j                         }|j                         }| j                   j                  |d       |j                         |k7  sJ | j                  d| j                  dz   j                         }|j                         }| j                  j                  |d       |j                         |k7  sJ y)z-Test linestring plot autoscaling axes limits.Nrh   TrO  rQ  rS  s      r   test_autolim_truez(TestLineStringPlotting.test_autolim_true  s    ZZ$&&A+&++-{{}

2t,{{}$$$WW]tvv{#((*{{}D){{}$$$r=   c                    | j                   j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         | j                  j                  d      }t        | j                  |j                  d   j                         dg| j                  z         t        j                  t        t        f      5  | j                  j                  d       d d d        t        j                  d      5 }| j                  j                  dd	      }t        | j                  |j                  d   j                         dg| j                  z         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nry   rz   r   r}   r~   Tr   r-   r   )rI  rA   rL   r2   rM   
get_colorsr7   rJ  rK  r   r   r   r   r   r   r   s      r   r   z(TestLineStringPlotting.test_single_color
  sK   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+	, $$D1 	VQXW=B$&&".."3">">"@7)dffBTU	V 	V	, 	,	V 	Vs   K*AK6*K36K?c                 \   | j                   j                  dd      | j                  j                  dd      | j                  j                  ddd      fD ])  }dddgfg|j                  d	   j	                         k(  r)J  | j                   j                  d
d      }d	g dfg|j                  d	   j	                         k(  sJ t        | j                        D cg c]
  }d|dz      }}|D cg c]  }t        |d       }}| j                   j                  |d      | j                   j                  |d      | j                  j                  |d      | j                  j                  d|d      fD ]$  }||j                  d	   j	                         k(  r$J  y c c}w c c}w )N:r1   	linestyle	linewidthr-   )rK   r]  r^  r   r   ffffff?r   r   r.   r!   r1      ra  )dasheddotteddashdotsolidrf   
linestylesr^  )rI  rA   r7   rM   get_linestyler3   r2   _style_to_linestring_onoffseq)r9   rG   r   lsstexp_lss         r   test_style_kwargs_linestylez2TestLineStringPlotting.test_style_kwargs_linestyle(  s    JJOOcQO7GGLL3!L4GGLLC1LE
 	MB
 3+&'2>>!+<+J+J+LLLL	M ZZ__':a_HN#$q(9(G(G(IIII HMTVV}U!6q1u=UUACD2/A6DDJJOObAO6JJOOrQO7GGLL2L3GGLLB!LD	
 	?B R^^A.<<>>>>	? VDs   F$4F)c                    | j                   j                  d      | j                  j                  d      | j                  j                  dd      fD ]>  }t        j                  j                  dg|j                  d   j                                @ t        | j                        D cg c]
  }d|dz      }}| j                   j                  |      | j                   j                  |      | j                  j                  |      | j                  j                  d|      fD ]=  }t        j                  j                  ||j                  d   j                                ? y c c}w )	Nrh   r^  r-   )rK   r^  r   )r   r1   rh         @r!   ri   
linewidths)
rI  rA   r7   r5   rB   rC   rM   get_linewidthsr3   r2   )r9   rG   r   lws       r   test_style_kwargs_linewidthz2TestLineStringPlotting.test_style_kwargs_linewidth@  s+    JJOOaO(GGLL1L%GGLLAL6
 	SB
 JJ))1#r~~a/@/O/O/QR	S 27tvv?A Q'??JJOObO)JJOOrO*GGLL2L&GGLLBL7	
 	RB JJ))"bnnQ.?.N.N.PQ	R @s   -E.c                    | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                	 | j                   j                  t        j                  ddd| j                              }t        j                  j	                  t        j                  ddd| j                        |j
                  d   j                                y # t        $ r Y y w xY wr   r   rF   s     r   r   z.TestLineStringPlotting.test_style_kwargs_alphaS  r   r   c                     ddl m}  |dd      g}| j                  j                  d|      }|j                  d   j                         d   j                  d   dddk(  sJ y )	Nr   )
withStrokerj   rW   )r^  
foregroundorange)r   path_effects_gc)matplotlib.patheffectsry  r7   rA   rM   get_path_effects__dict__)r9   ry  effectsrG   s       r   test_style_kwargs_path_effectsz5TestLineStringPlotting.test_style_kwargs_path_effects`  sj    5c:;WW\\w\?~~a 113A6??FK
 
 	
 
r=   c                 d   t         j                  j                  }t         j                  j	                  dd      }| j
                  j                  d||      }|j                  d   j                         } |t        j                  d      dz        }t        j                  j                  ||       t        j                         \  }}| j
                  dd  j                  d|||       |j                  d   j                         }t        j                  j                  |d   |d          y r   )r   r   r   r   r   r7   rA   rM   get_edgecolorsr5   r6   rB   rC   r   r   r   s           r   r   z)TestLineStringPlotting.test_subplots_normj  r   r=   c                 l   | j                   j                         }t        |j                  d   j	                               dk(  sJ t        d|j                  d   j                         t        gdz         | j                   j                  d      }t        j                  d      } |d       |d       |d       |d      g}t        d|j                  d   j                         |       | j                   j                  ddg	      }t        d|j                  d   j                         g d
       y Nr   rf   r-   rh   rr   r1   r   rW   rz   )r   r   rW   rW   )
r8   rA   r   rM   r   rL   r  rO   r   rP   rQ   s       r   test_multilinestringsz,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=   N)r1  r2  r3  r<   rU  rW  r   rn  rv  r   r  r   r  r6  r=   r   rB  rB    s9    R*	%	%V<?0R&
SSr=   rB  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zer	  edgddgdddd      d        Znd Zd Zd Zd Zd Zd Zer	  edgddgdddd      d        Zd Zyd Zd Zy)TestPolygonPlottingc                    t        g d      }t        g d      }t        ||gt        d            | _        t	        | j                  ddgd      | _        t        ||g      }t        |d      }t	        ||gddgd      | _        t        g d	      }t	        |t        j                  gd      }t        j                  | j
                  |g      | _        y )
Nr   r   rh   r   rh   r1   ABrk   r   r1   r+      )r  )r.   r   )r.   r1   )r   r   rt   polysr   r7   r	   r   r8   r5   r  r[   concatrK  )r9   t1t2
multipoly1
multipoly2t3df_nans          r   r<   z TestPolygonPlotting.setup_method  s    -.-.BxtDz:
DJJ1a&IJ!2r(+
J,
$j1aVD
 -.2"&&BC99dggv./r=   c                    | j                   dd j                         }|j                         }| j                   j                  |d       |j                         |k(  sJ | j                  dd j                         }|j                         }| j                  j                  |d       |j                         |k(  sJ y)z)Test polygon plot preserving axes limits.Nr1   FrO  r  rA   get_xlimr7   r9   rG   xlims      r   rU  z&TestPolygonPlotting.test_autolim_false  s    ZZ^  "{{}

2u-{{}$$$WWRa[{{}E*{{}$$$r=   c                    | j                   dd j                         }|j                         }| j                   j                  |d       |j                         |k7  sJ | j                  dd j                         }|j                         }| j                  j                  |d       |j                         |k7  sJ y)z*Test polygon plot autoscaling axes limits.Nr1   TrO  r  r  s      r   rW  z%TestPolygonPlotting.test_autolim_true  s    ZZ^  "{{}

2t,{{}$$$WWRa[{{}D){{}$$$r=   c                 x   | j                   j                  d      }t        d|j                  d   j	                         dgdz         t        |j                  d   j                               dk(  sJ | j                  j                  d      }t        d|j                  d   j	                         dgdz         t        |j                  d   j                               dk(  sJ | j                  j                  d      }t        d|j                  d   j	                         dgdz         | j                  j                  d      }t        d|j                  d   j	                         dgdz         t        j                  t        t        f      5  | j                  j                  d       d d d        t        j                  d	      5 }| j                  j                  d
d      }t        d|j                  d   j	                         dgdz         d d d        y # 1 sw Y   rxY w# 1 sw Y   y xY w)Nry   rz   rh   r   r{   r}   r~   Tr   r-   r   )r  rA   rL   rM   rN   r   r  r7   r   r   r   r   r   r   r   s      r   r   z%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+	, $$D1 	PQXW=B!R^^A.==?'QO	P 	P	, 	,	P 	Ps   H$A
H0$H-0H9c                 `   | j                   j                  dddd      }|j                  d   j                         }t        j
                  j                  |d   |d          | j                   j                  dddd      }|j                  d   j                         }t        j
                  j                  |d   |d          | j                  j                  d      }|j                  d   j                         }t	        j                  t	        j                  |d   |d               sJ y )Nr-   Fr   )rK   r   r   r   r1   TrJ   )
r7   rA   rM   rN   r5   rB   rC   rK  any	not_equal)r9   rG   actual_colorss      r   test_vmin_vmaxz"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Gr=   c                    | j                   j                  d      }t        d|j                  d   j	                         dgdz         | j                   j                  dd      }| j                   j                  d      }t
        j                  j                  dg|j                  d   j                                | j                  j                  d	d      }t
        j                  j                  dg|j                  d   j                                | j                   j                  d
dd      }t        d|j                  d   j	                         d
gdz  d       t        d|j                  d   j                         dgdz  d       | j                  j                  dd      }t        d|j                  d   j	                         dgdz         t        d|j                  d   j                         dgdz         | j                  j                  dd      }t        d|j                  d   j	                         dgdz         t        d|j                  d   j                         dgdz         y )Nr   r'  rh   r   r   )r   r'  	edgecolor)r1   r   r   r1   r-   gr   皙?)r'  r  r   r   r{   )r  r|   333333?r'  r  r}   r  r|   r  r|   )
r  rA   rL   rM   rN   r5   rB   rC   r  r7   rF   s     r   test_style_kwargs_colorz+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                    | j                   j                  dd      }dddgfg|j                  d   j                         k(  sJ | j                   j                  dd      }dg d	fg|j                  d   j                         k(  sJ d
dg}|D cg c]  }t	        |d       }}| j                   j                  |d      | j                   j                  |d      fD ]$  }||j                  d   j                         k(  r$J  y c c}w )Nr[  r1   r\  r   r   r_  r   r`  ra  rc  rd  rg  )r7   rA   rM   ri  rj  )r9   rG   rk  rl  rm  s        r   rn  z/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D2/A6DDGGLL2L3GGLLB!L4
 	?B R^^A.<<>>>>		? Es   Dc                 6   | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                | j                   j                  ddg      | j                   j                  ddg      fD ]?  }t        j                  j	                  ddg|j
                  d   j                                A | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                	 | j                   j                  ddg      }t        j                  j	                  ddg|j
                  d   j                                y # t        $ r Y y w xY w)	Nrh   rp  r   rf   rr  r   r   r   )	r7   rA   r5   rB   rC   rM   rt  r   r   rF   s     r   rv  z/TestPolygonPlotting.test_style_kwargs_linewidth  s@   WW\\A\&


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


%%seR^^A->-H-H-JK	US#J/B
 JJ))3*bnnQ6G6Q6Q6ST	  		s   0F 	FFc                    t        | j                  d   j                               }d}| j                  j                  dd|d|D cg c]  }|t	        |      z    c}dd      }t        |      t        |j                         j                               k(  sJ |j                         j                         d   j                         j                  |      sJ |j                         j                         du sJ y c c}w )Nr-   
LABEL_FOR_TF)labelsframeon)rK   r   r  r   legend_kwdsr   )rt   r7   uniquerA   r%  r   r   	get_textsget_text
startswithget_frame_on)r9   r  prefixrX   rG   s        r   test_legend_kwargsz&TestPolygonPlotting.test_legend_kwargs"  s    $''(+2245
WW\\!4>?q6CF??   	
 :#bmmo&?&?&A"BBBB}}((*1-668CCFKKK}}++-666 @s   C>c                 F   d}| j                   j                  dddd|i      }t        |j                               }|j	                         |k(  sJ | j                   j                  ddd|dd      }t        |j                               }|j                         |k(  sJ y )	Nzcolorbar testr-   FTlabelrK   r   r   r  
horizontal)r  orientation)r7   rA   r   r   
get_ylabel
get_xlabel)r9   	label_txtrG   caxs       r   test_colorbar_kwargsz(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                 f    t        g dg dg dg      g}t        |      }|j                          y )Nr   )r   ri   )ri   ri   ri   r   r?   r   r   r  r.   rh   )r.   r.   )rf   r.   )rf   rh   r   )r   r   rA   )r9   r   _dfs      r   test_plot_polygon_with_holesz0TestPolygonPlotting.test_plot_polygon_with_holesN  s6     488E .CHHJr=   c                 R   t        g dg dg dg      g}t        |      }|j                         }|j                  d   j	                         d   j
                  }|j                         j                         j                         }t        j                  j                  ||       y )Nr  r  r  r   r   )r   r   rA   rM   r   r   	normalizeget_coordinatesto_numpyr5   rB   rC   )r9   r   r  rG   plotted_verticesexpected_verticess         r   r  z0TestPolygonPlotting.test_plot_polygon_with_holesc  s    488E .CB!~~a0::<Q?HH # ? ? A J J LJJ))*:<MNr=   c                     | j                   j                  dddddi       | j                   j                  ddddi       y )Nr-   Tfmt{:.0f}r  )rK   r   r  r<  r=  s    r   test_fmt_ignorez#TestPolygonPlotting.test_fmt_ignoret  sG     	)	 	 	
 	HTx?PQr=   c                 l   | j                   j                         }t        |j                  d   j	                               dk(  sJ t        d|j                  d   j                         t        gdz         | j                   j                  d      }t        j                  d      } |d       |d       |d       |d      g}t        d|j                  d   j                         |       | j                   j                  ddg	      }t        d|j                  d   j                         g d
       y r  )
r8   rA   r   rM   r   rL   rN   rO   r   rP   rQ   s       r   test_multipolygons_colorz,TestPolygonPlotting.test_multipolygons_color  r  r=   c           	      @   | j                   j                  dd      }dddgfg|j                  d   j                         k(  sJ | j                   j                  dd      }dg d	fg|j                  d   j                         k(  sJ d
dg}|D cg c]  }t	        d      D ]  }t        |d         }}}| j                   j                  |d      | j                   j                  |d      fD ]$  }||j                  d   j                         k(  r$J  y c c}}w )Nr[  r1   r\  r   r   r_  r   r`  ra  rc  rd  rh   rg  )r8   rA   rM   ri  r3   rj  )r9   rG   rk  rl  r'   rm  s         r   test_multipolygons_linestylez0TestPolygonPlotting.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V2USTXV/A6V6VVHHMMB!M4HHMMR1M5
 	?B R^^A.<<>>>>		? Ws   #Dc                    | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                | j                   j                  ddg      | j                   j                  ddg      fD ]?  }t        j                  j	                  g d|j
                  d   j                                A y )Nrh   rp  r   rf   rr  )rh   rh   rf   rf   )r8   rA   r5   rB   rC   rM   rt  rF   s     r   test_multipolygons_linewidthz0TestPolygonPlotting.test_multipolygons_linewidth  s    XX]]Q]'


%%qc2>>!+<+K+K+MN 88==Aq6=2DHHMMaQRVM4TU 	BJJ))bnnQ/>>@	r=   c                    | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                	 | j                   j                  ddg      }t        j                  j	                  g d|j
                  d   j                                y # t        $ r Y y w xY w)Nr   r   r   r   )r   r   r   r   r   rF   s     r   test_multipolygons_alphaz,TestPolygonPlotting.test_multipolygons_alpha  s    XX]]]%


%%seR^^A->-H-H-JK	c3Z0B
 JJ))$bnnQ&7&A&A&C	  		s   B6 6	CCmultipolygon_with_holesc                     t        dddd      j                  t        dddd            }t        dddd      j                  t        dddd            }t        ||g      }t        |g	      }|j	                          y )
Nr   r1   r   r|   r.   rd   rf   ri   r   )r   
differencer	   r   rA   )r9   poly1poly2	multipolyr  s        r    test_multipolygons_with_interiorz4TestPolygonPlotting.test_multipolygons_with_interior  sp     1aO..s3S#/FGE1aO..s1aA?E$eU^4I4CHHJr=   c                 d   t        dddd      j                  t        dddd            }t        dddd      j                  t        dddd            }t        ||g      }t        |g	      }|j	                         }t        j                  |j                  d   j                         d   j                  |j                  d   j                         d   j                  d
      }|j                         j                         j                         }t
        j                  j                  ||       y )Nr   r1   r   r|   r.   rd   rf   ri   r   axis)r   r  r	   r   rA   r5   appendrM   r   r   r  r  r  rB   rC   )r9   r  r  r  r  rG   r  r  s           r   r  z4TestPolygonPlotting.test_multipolygons_with_interior  s    1aO..s3S#/FGE1aO..s1aA?E$eU^4I4CB!yyq!++-a099q!++-a099 
 !$ ? ? A J J LJJ))*:<MNr=   c                 d   t         j                  j                  }t         j                  j	                  dd      }| j
                  j                  d||      }|j                  d   j                         } |t        j                  d      dz        }t        j                  j                  ||       t        j                         \  }}| j
                  dd  j                  d|||       |j                  d   j                         }t        j                  j                  |d   |d          y )	Nr   r!   r   r-   r   rh   r1   r   r   r   s           r   r   z&TestPolygonPlotting.test_subplots_norm  s    }}&&  ***;WW\\4\@^^A.==?"))A,"-.



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


%%&8&;=Nq=QRr=   N)r1  r2  r3  r<   rU  rW  r   r  r  rn  rv  r  r  MPL_DECORATORSr   r  r  r  r  r  r  r  r   r6  r=   r   r  r    s    0 	%	%P.H$#YJ?$U&7"-0 K	!"u~"%g>	

	

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

	

	,S	OSr=   r  c                       e Zd Zd Zd Zy)TestPolygonZPlottingc                    t        g d      }t        g d      }t        ||gt        d            | _        t	        | j                  ddgd      | _        t        ||g      }t        |d      }t	        ||gddgd      | _        y )	N))r   r   r   r1   r   r   )r1   r1   r1   )r  )rh   r   r   )rh   r1   r1   r  rk   r   r1   r+   r  )	r   r   rt   r  r   r7   r	   r   r8   )r9   r  r  r  r  s        r   r<   z!TestPolygonZPlotting.setup_method  s~    6767BxtDz:
DJJ1a&IJ!2r(+
J,
$j1aVD
r=   c                 8    | j                   j                          y r#   r<  r=  s    r   r>  zTestPolygonZPlotting.test_plot  r?  r=   Nr@  r6  r=   r   r  r    s    

r=   r  c                       e Zd Zd Zd Zd Zy)TestColorParamArrayc                 .   g }g }dD ]E  \  }}t        ||||      }|||j                  d      j                  |j                  gz  }|g dz  }G t	        ||d      | _        | j
                  j                  | j
                  j                        | _        y )N))r   rh   )rf   rd   g?)r   ry   r   )r,   
color_rgba)	r   bufferexteriorcentroidr   r   dissolver   mgdf)r9   geomr   rV   rW   s        r   r<   z TestColorParamArray.setup_method  s    $ 	.DAqAq!QAQ..

;;D--E	.
  T GHHH%%dhh&8&89	r=   c           
         | j                   j                  | j                   d         }t        dt        j                  |j
                  D cg c]  }|j                          c}      dgdz  dgdz  z          t        dt        j                  |j
                  D cg c]  }|j                          c}      dgdz  dgdz  z          y c c}w c c}w Nr  rz   rf   ry   rh   r   r   )r   rA   rL   r5   concatenaterM   r   r   r9   rG   rX   s      r   test_color_singlez%TestColorParamArray.test_color_single  s    XX]],!7]8NNr~~F!AOO-FGIMVHqL(	

 	NNr~~F!AOO-FGGaK6(Q,&	
 G
 G   CCc           
         | j                   j                  | j                   d         }t        dt        j                  |j
                  D cg c]  }|j                          c}      dgdz  dgdz  z          t        dt        j                  |j
                  D cg c]  }|j                          c}      dgdz  dgdz  z          y c c}w c c}w r  )r  rA   rL   r5   r  rM   r   r   r	  s      r   test_color_multiz$TestColorParamArray.test_color_multi  s    YY^^$))L"9^:NNr~~F!AOO-FGIMVHqL(	

 	NNr~~F!AOO-FGGaK6(Q,&	
 G
 Gr  N)r1  r2  r3  r<   r
  r  r6  r=   r   r  r    s    	:

r=   r  c                       e Zd Zd Zd Zd Zy)TestGeometryCollectionPlottingc                     t        t        g d      t        ddg      g      }t        t        dd      t        g d      g      }t	        ||g      | _        t        | j
                  ddgd	      | _        y )
Nr  )r|   r|   r?   )r1   r|   g      ?r1         ?      ?)r   r  )rh   r.   r1   rh   r+   )r   r   r   r
   r   seriesr   r7   )r9   coll1coll2s      r   r<   z+TestGeometryCollectionPlotting.setup_method%  su    "01!57K LM
 #4(@ AB
  /DKKAq6JKr=   c                 R   | j                   j                         }t        d|j                  d   j	                         t
        gdz         t        d|j                  d   j                         t
        gdz         t        d|j                  d   j	                         t
        g       y )Nrh   r   r1   )r  rA   rL   rM   rN   rO   r  rF   s     r   test_colorsz*TestGeometryCollectionPlotting.test_colors3  s    [[r~~a //1M?Q3F	
 	r~~a //1M?Q3F	
 	a*99;m_Mr=   c                 |   | j                   j                  d      }t        j                         } |ddg      }t	        d|j
                  d   j                         |       t	        d|j
                  d   j                         |d   gdz         t	        d|j
                  d   j                         |d   g       y )Nr-   r   r   rh   r   r1   )r7   rA   r   rP   rL   rM   rN   r  ru   s       r   test_valuesz*TestGeometryCollectionPlotting.test_values>  s    WW\\(#||~3*%
a*99;ZHr~~a //1JqM?Q3F	
 	a*99;jm_Mr=   N)r1  r2  r3  r<   r  r  r6  r=   r   r  r  $  s    L	NNr=   r  c                       e Zd Zd Zd Zd Zd Zej                  j                  d      d        Z
d Zej                  j                  d      d	        Zd
 Zy)TestNonuniformGeometryPlottingc                     t        j                  d       t        g d      }t        g d      }t	        dd      }t        |||g      | _        t        | j                  g dd      | _        y )Nr   r  )r  r?   r  r  r  r  r1   rh   r.   r+   )	r   importorskipr   r   r
   r   r  r   r7   )r9   r   liner   s       r   r<   z+TestNonuniformGeometryPlotting.setup_methodJ  sZ    L)/0BCdD!tU 34DKK9MNr=   c                    | j                   j                         }t        d|j                  d   j	                         t
        g       t        d|j                  d   j                         t
        g       t        d|j                  d   j	                         t
        g       | j                   j                  d      }t        j                  d      } |t        j                  d      dz        }t        d|j                  d   j	                         |d   g       t        d|j                  d   j                         |d   g       t        d|j                  d   j	                         |d   g       y )Nr1   r   rh   ro   rp   r.   )r  rA   rL   rM   rN   rO   r  r   rP   r5   r6   ru   s       r   r  z*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                     | j                   j                  d      }|j                  d   j                         dgk(  sJ | j                  j                  d      }|j                  d   j                         dgk(  sJ y )Nr!   r   rh   )r  rA   rM   r   r7   rF   s     r   r   z0TestNonuniformGeometryPlotting.test_style_kwargsb  sq    [[,~~a **,444WW\\R\(~~a **,444r=   c                 X   | j                   j                  dd      | j                  j                  dd      fD ])  }dddgfg|j                  d   j	                         k(  r)J  | j                   j                  dd      }dg d	fg|j                  d   j	                         k(  sJ y )
Nr[  r1   r\  r   r   r_  r   r`  ra  )r  rA   r7   rM   ri  rF   s     r   rn  z:TestNonuniformGeometryPlotting.test_style_kwargs_linestyleh  s     KKsa8GGLL3!L4
 	MB 3+&'2>>!+<+J+J+LLLL		M [[(;qIN#$q(9(G(G(IIIIr=   zDarray-like style_kwds not supported for mixed geometry types (#1379)reasonc                 B   g d}|D cg c]  }t        |d       }}| j                  j                  |d      | j                  j                  |d      | j                  j                  |d      fD ]$  }||j                  d   j                         k(  r$J  y c c}w )N)rf  rd  re  r1   r\  rg  r   )rj  r  rA   r7   rM   ri  )r9   rk  stylerm  rG   s        r   $test_style_kwargs_linestyle_listlikezCTestNonuniformGeometryPlotting.test_style_kwargs_linestyle_listliket  s    
 ,GIJe/q9JJKKrQ7KKa8GGLLB!L4
 	?B
 R^^A.<<>>>>	? Ks   Bc                     | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                y )Nrh   rp  r   )r7   rA   r5   rB   rC   rM   rt  rF   s     r   rv  z:TestNonuniformGeometryPlotting.test_style_kwargs_linewidth  s>    WW\\A\&


%%qc2>>!+<+K+K+MNr=   c                 :   | j                   j                  g d      | j                   j                  g d      | j                  j                  g d      fD ]?  }t        j                  j                  g d|j                  d   j                                A y )N)rh   rf   rq  rr  r   )r  rA   r7   r5   rB   rC   rM   rt  rF   s     r   $test_style_kwargs_linewidth_listlikezCTestNonuniformGeometryPlotting.test_style_kwargs_linewidth_listlike  s|     KK4KK4GGLLKL0
 	B
 JJ))R^^A.==?	r=   c                     | j                   j                  d      }t        j                  j	                  dg|j
                  d   j                                y )Nr   r   r   )r7   rA   r5   rB   rC   rM   r   rF   s     r   r   z6TestNonuniformGeometryPlotting.test_style_kwargs_alpha  s>    WW\\\$


%%seR^^A->-H-H-JKr=   N)r1  r2  r3  r<   r  r   rn  r   r4  skipr*  rv  r-  r   r6  r=   r   r  r  I  s{    ON5
J [[U  	?	?O
 [[U  		Lr=   r  class)scopec                    t        |       }|j                  |j                  dk(     |j                  _        |j                  j                  j                  d      |j                  _        |j                  j                  j                  }t        j                  |d   |d   g      }dt        j                  |t        j                  z  dz        z  |j                  _        y)zJAttach naturalearth_lowres class attribute for unittest style setup_methodzNorth AmericazESRI:102008r1   r.   r  N)r   r   	continentclsnorthto_crs
north_projtotal_boundsr5   meancospir/   )naturalearth_lowresr   r7   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 availabler&  c                       e Zd Zd Zd Zy)TestGeographicAspectc                    | j                   j                  j                         }|j                         | j                  k(  sJ | j
                  j                  j                         }|j                         dv sJ | j                   j                         }|j                         | j                  k(  sJ | j
                  j                         }|j                         dv sJ | j                   j                  d      }|j                         | j                  k(  sJ | j
                  j                  d      }|j                         dv sJ y )Nequalr   pop_est)r5  r,   rA   r/  r/   r7  )r9   rG   r_   r  r  s        r   	test_autozTestGeographicAspect.test_auto  s   ZZ  %%'}}$((***oo&&++-~~>111ZZ__}}$((***oo""$~~>111jjooi(~~488+++oo""9-~~>111r=   c                 r   | j                   j                  j                  d      }|j                         dv sJ | j                   j                  j                  |d        |j                         dv sJ | j                   j                  j                  d      }|j                         dk(  sJ | j                   j                  j                  |d        |j                         dk(  sJ | j                  j                  j                  d      }|j                         dk(  sJ | j                  j                  j                  |d        |j                         dk(  sJ | j                   j                  d      }|j                         dv sJ | j                   j                  |d        |j                         dv sJ | j                   j                  d      }|j                         dk(  sJ | j                   j                  |d        |j                         dk(  sJ | j                  j                  d      }|j                         dk(  sJ | j                  j                  |d        |j                         dk(  sJ | j                   j                  dd      }|j                         dv sJ | j                   j                  d|d        |j                         dv sJ | j                   j                  dd      }|j                         dk(  sJ | j                   j                  d|d        |j                         dk(  sJ | j                  j                  dd      }|j                         dk(  sJ | j                  j                  d|d        |j                         dk(  sJ y )NrD  )r.  rC  )rG   r.  r|   rE  )r5  r,   rA   r/  r7  )r9   rG   r_   r  s       r   test_manualz 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=   N)r1  r2  r3  rF  rH  r6  r=   r   rA  rA    s    2$'r=   rA  zGignore:Numba not installed. Using slow pure python version.:UserWarningc                       e Zd Zed        Zej                  d        Zej                  d        Zd Z	d Z
d Zd Zd Zd	 Zej                  j!                  d
ddg      d        Zd Zd Zd Zd Zd Zd Zd Zy)TestMapclassifyPlottingc                     	 dd l }| _        t        |j                  j                        | _        | j                  j                  d       y # t        $ r t        j                  d       Y gw xY w)Nr   mapclassifyUserDefined)	rL  ImportErrorr   r!  mcrt   classifiersCLASSIFIERSremove)r4  rL  s     r   setup_classz#TestMapclassifyPlotting.setup_class  s\    	/ {66BBC}-	  	/.	/s   A A.-A.c                    t        |      }t        j                  ddt        |j                              |d<   t        j                  dd|j
                  d         |d<   t        j                  dd|j
                  d         |d<   t        j                  dd	|j
                  d         |d
<   t        j                  |j                  |j                  d dd   d
f<   |S )Nir!   	NEGATIVESr   333333?low_valsr   mid_valsr   	high_valsr   rh   )r   r5   r   r   rl   r   r  r   )r9   r<  r7   s      r   r7   zTestMapclassifyPlotting.df  s     *+++c2s288}=;QRXXa[9:S#rxx{;:++c3<;/1vvrxxA+,	r=   c                 *    t        |      }g d|d<   |S )N)gMbP?gMb`?g~jth?gMbp?g{Gzt?vals)r   )r9   nybb_filenamer7   s      r   nybbzTestMapclassifyPlotting.nybb  s     }%86
	r=   c                    t        j                  d      5 }|j                  ddddd      }d d d        j                         j	                         D cg c]  }|j                          }}t        | j                  j                  |d   d            j                  d	      d
d  D cg c]  }|j                  d      d   dd  }}||k(  sJ y # 1 sw Y   xY wc c}w c c}w )NTr   rE  	QUANTILESr.   OrRdrK   schemer   rR   r   )r   
rf   |r   r1   )
r   r   rA   r   r  r  r%  rO  	Quantilessplit)r9   r7   r   rG   tr  r   r   s           r   r   z#TestMapclassifyPlotting.test_legend  s    $$D1 	Q t  B	
 )+(A(A(CD1!**,DD **2i=A*>?EEdKABO
 GGCLOAb!
 
 !!!	 	
 E
s   CC ,C%Cc           
          |j                  ddddddg di      }|j                         j                         D cg c]  }|j                          }}g d}||k(  sJ y c c}w )	NrE  r_  r.   r`  Tr  )foobarbazrK   rb  r   rR   r   r  rA   r   r  r  r9   r7   rG   rh  r  r   s         r   test_bin_labelsz'TestMapclassifyPlotting.test_bin_labels  sp    WW!#89  
 )+(A(A(CD1!**,DD(!!! Es   A!c                     t        j                  t              5  |j                  ddddddddgi	       d d d        y # 1 sw Y   y xY w)
NrE  r_  r.   r`  Tr  rj  rk  rm  r   r   r   rA   r+  s     r   test_invalid_labels_lengthz2TestMapclassifyPlotting.test_invalid_labels_length"  sO    ]]:& 	GG "%u~6  	 	 	s	   ?Ac                     |j                  ddddd      }|j                         j                         D cg c]  }|j                          }}g d}||k(  sJ y c c}w )NrU  FISHER_JENKSr.   r`  Tra  )z-10.00,  -3.41z -3.41,   3.30z  3.30,  10.00rn  ro  s         r   test_negative_legendz,TestMapclassifyPlotting.test_negative_legend-  sd    WW~PT  
 )+(A(A(CD1!**,DDI!!! Es   Ac           	          |j                  dddddddi      }|j                         j                         D cg c]  }|j                          }}g d	}||k(  sJ y c c}w )
NrU  ru  r.   r`  Tr  r  rm  )z-10,  -3z -3,   3z  3,  10rn  ro  s         r   test_fmtz TestMapclassifyPlotting.test_fmt5  so    WW!)  
 )+(A(A(CD1!**,DD7!!! E   Ac           	          |j                  dddddddi      }|j                         j                         D cg c]  }|j                          }}g d}||k(  sJ y c c}w )	NrU  ru  r.   r`  Tintervalrm  )z[-10.00,  -3.41]z( -3.41,   3.30]z(  3.30,  10.00]rn  ro  s         r   test_intervalz%TestMapclassifyPlotting.test_intervalB  so    WW!#T*  
 )+(A(A(CD1!**,DDO!!! Ery  rb  ru  FISHERJENKSc                     |j                  d|dd      }t        |j                         j                               dk(  sJ y )NrU  r.   T)rK   rb  r   r   )rA   r   r   r  )r9   rb  r7   rG   s       r   test_scheme_name_compatz/TestMapclassifyPlotting.test_scheme_name_compatO  s:    WWK!DWI2==?,,./1444r=   c                 N    | j                   D ]  }|j                  d|d        y )NrE  T)rK   rb  r   )rP  rA   r9   r7   rb  s      r   test_schemesz$TestMapclassifyPlotting.test_schemesT  s+    && 	BFGG9VDGA	Br=   c                    |j                  ddddddgidd	      }|j                         j                         D cg c]  }|j                          }}t	        | j
                  j                  |d   ddg
            j                  d      dd  D cg c]  }|j                  d      d   dd  }}||k(  sJ y c c}w c c}w )NrE  percentilesr.   pct2   d   r`  T)rK   rb  r   classification_kwdsrR   r   )r  rc  rf   rd  r   r1   re  )rA   r   r  r  r%  rO  Percentilesrg  )r9   r7   rG   rh  r  r   r   s          r   test_classification_kwdsz0TestMapclassifyPlotting.test_classification_kwdsY  s    WW !&S	 2  
 )+(A(A(CD1!**,DD ,,R	]S	,JKQQRVW
 GGCLOAb!
 
 !!! E
s   B<Cc                     t        j                  t              5  d}|j                  d|ddd       d d d        y # 1 sw Y   y xY w)Nzinvalid_scheme_*#&)(*#
gdp_md_estr.   r`  Tra  rr  r  s      r   test_invalid_schemez+TestMapclassifyPlotting.test_invalid_schemel  sC    ]]:& 	W-FGG<!&QUGV	W 	W 	Ws	   <Ac                     t        j                         }ddlm}  ||      }|j	                  ddd      }t        j                  t              5  |j                  ddd	|
      }ddd       y# 1 sw Y   yxY w)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padrE  r`  T)rK   rR   r   r  N)	r   r   mpl_toolkits.axes_grid1r  append_axesr   r   r   rA   )r9   r7   rG   r  dividerr  s         r   test_cax_legend_passingz/TestMapclassifyPlotting.test_cax_legend_passingq  sn    
 XXZ?%b)!!'#!>]]:& 	N	tMB	N 	N 	Ns   A//A8c                    t        j                  d      5 }|j                  ddd      }ddd       t        j	                         d      j                         j                  }t        |j	                         d      j                         j                  }t        ||z
        d	k\  sJ t        j                         \  }}d
dl
m}  ||      }	|	j                  dddd      }
t        j                  d      5 }|j                  ddd|
|      }ddd       t        |d      j                         j                  }t        |d      j                         j                  }t        ||z
        d	k  sJ y# 1 sw Y   LxY w# 1 sw Y   rxY w)zqPass a cax argument to 'df.plot(.)', the legend location must be
        aligned with those of main plot
        Tr   rE  r`  r   N 
<colorbar>gư>r   r  r  r  r  fixed_colorbar)r  r  r  )rK   rR   r   r  rG   )r   r   rA   _get_axr   get_positionheightabsr   r   r  r  r  )r9   r7   r   rG   plot_heightlegend_heightr   r_   r  r  r  s              r   test_cax_legend_heightz.TestMapclassifyPlotting.test_cax_legend_height~  sb   
 $$D1 	EQ	tDB	Ebmmor2??AHH>KKMTT;./4777<<>S?%c*!!'#EU!V$$D1 	WQ''#RU'VC	Wc2&335<<%56CCELL;./$666	E 	E	W 	Ws   E6;F6F Fc                    t        j                  dd      dz  }|j                  ddd|id      }t        j                  g d	g d
g dg      t	        fd|j
                  d   j                         D              sJ g d}|j                         j                         D cg c]  }|j                          }}||k(  sJ g d}|j                         j                         D cg c]  }|j                          c}|k(  sJ |j                  ddd|id      }	t        j                  g dg dg dg dg dg      t	        fd|	j
                  d   j                         D              sJ g d}|	j                         j                         D cg c]  }|j                          }}||k(  sJ |	j                         j                         D cg c]  }|j                          c}|k(  sJ |j                  ddd|id      }
t        j                  g dg dg dg      t	        fd|
j
                  d   j                         D              sJ |
j                         j                         D cg c]  }|j                          }}||k(  sJ |
j                         j                         D cg c]  }|j                          c}|k(  sJ y c c}w c c}w c c}w c c}w c c}w c c}w )Nr1      r!   rW  rM  binsT)rb  r  r   g,z?g/lV^?g c?r   g ?g{is?g0"?r   gi7>[?g~8gDi?g].;1?r   c              3   d   K   | ]'  }|k(  j                  d       j                          ) ywr1   r  Nr   r  r&   zr   s     r   r(   z:TestMapclassifyPlotting.test_empty_bins.<locals>.<genexpr>  4      
 (]Q'++-
   -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   rX  r  r  r  r  c              3   d   K   | ]'  }|k(  j                  d       j                          ) ywr  r  r  s     r   r(   z:TestMapclassifyPlotting.test_empty_bins.<locals>.<genexpr>  r  r  )
z
-inf, 0.10r  r  r  r  r  r  r  r  r  rY  r  r  r  c              3   d   K   | ]'  }|k(  j                  d       j                          ) ywr  r  r  s     r   r(   z:TestMapclassifyPlotting.test_empty_bins.<locals>.<genexpr>  r  r  )r5   r6   rA   r   r   rM   rN   r   r  r  r  r  )r9   r7   r  rG   r  rh  r   legend_colors_expr"  r_   r  r   s              @r   test_empty_binsz'TestMapclassifyPlotting.test_empty_bins  s   yyB"$WW !'	  
 88332
  
^^A&557
 
 	
 

 )+(A(A(CD1!**,DD
 46==?3L3L3N
+/D$$&
 	  gg !'	  
 8823322
  
__Q'668
 
 	
 

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

 ),(8(B(B(DE1!**,EE 47>>3C3M3M3O
+/D$$&
 	 _ E 
H F
, F
s$   %K)K"K'K,=K1=K6c                 ~   |j                  ddd      }|j                         j                         D cg c]  }|j                          }}g d}||k(  sJ |j                  dddddi      }|j                         j                         D cg c]  }|j                          }}g d	}||k(  sJ y c c}w c c}w )
Nr[  	quantilesT)rb  r   )
0.00, 0.00r  r  r  z
0.00, 0.01r  z{:.3f})rb  r   r  )z0.001, 0.002z0.002, 0.003z0.003, 0.003z0.003, 0.004z0.004, 0.005rn  )r9   r]  rG   rh  r  r   r_   s          r   test_equally_formatted_binsz3TestMapclassifyPlotting.test_equally_formatted_bins  s    YY  

 )+(A(A(CD1!**,DD
 !!!ii;t%AR  
 ),(8(B(B(DE1!**,EE
 !!!+ E Fs   B5B:N)r1  r2  r3  classmethodrS  r   fixturer7   r]  r   rp  rs  rv  rx  r|  r4  r5  r  r  r  r  r  r  r  r  r6  r=   r   rJ  rJ    s     . . ^^  ^^ ""	""" [[X'FG5 H5B
"&W
N7,pd"r=   rJ  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestPlotCollectionsc                    d| _         t        j                  | j                         | _        t	        d t        | j                         D              | _        t	        t        | j                         D cg c]  }t        d|fd|dz   fd|fg       c}      | _        t	        t        | j                         D cg c]  }t        d|fd|dz   fd|fg       c}      | _
        y c c}w c c}w )Nr.   c              3   4   K   | ]  }t        ||        y wr#   r$   r%   s     r   r(   z3TestPlotCollections.setup_method.<locals>.<genexpr>(  r)   r*   r   rf   r|   re   )r2   r5   r6   r-   r   r3   r4   r   rI  r   polygons)r9   r'   s     r   r<   z TestPlotCollections.setup_method%  s    ii'CU466]CCAFtvvOAZ!Q!QW1v67O

 ">CDFFmLWq!fq!c'lQF34L
 P Ms   2C#8C(c                    ddl m} ddlm} t	        j
                         \  }} ||| j                        }t        ||      sJ |j                           ||| j                        }t        | j                  |j                         t        g| j                  z         |j                           ||| j                  d      }t        | j                  |j                         dg| j                  z         t        | j                  |j                         dg| j                  z         |j                           ||| j                  dd      }t        | j                  |j                         dg| j                  z         t        | j                  |j                         dg| j                  z         |j                           ||| j                  g d      }t        | j                  |j                         g d       t        | j                  |j                         g d       |j                           ||| j                  g d	      }t        | j                  |j                         g d	       t        | j                  |j                         g d	       |j                          t        j                  t         t"        f      5   ||| j                  d
       d d d        y # 1 sw Y   y xY w)Nr   )PathCollection_plot_point_collectionr  rz   r   r  r   r  rW   r}   )r  r   rV  r|   r  r~   )matplotlib.collectionsr  geopandas.plottingr  r   r   r4   
isinstanceclarL   r2   rN   rO   r  r   r   r   r   )r9   r  r  r   rG   colls         r   test_pointszTestPlotCollections.test_points0  s7   9=,,.R%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 	G"2t{{+F	G 	G 	Gs   K..K7c                    ddl m} t        j                         \  }} ||| j                  | j
                        }|j                  j                          t        j                         } |t        j                  | j                        | j                  dz
  z        }t        | j                  |j                         |       y )Nr   r  r1   )r  r  r   r   r4   r-   canvas	draw_idlerP   r5   r6   r2   rL   rN   )r9   r  r   rG   r  rR   rS   s          r   test_points_valuesz&TestPlotCollections.test_points_valuesh  s    = ,,.R%b$++t{{C

||~ryy0DFFQJ?@dffd113_Er=   c                    ddl m} ddlm} t	        j
                         \  }} ||| j                        }t        ||      sJ |j                           ||| j                        }t        | j                  |j                         t        g| j                  z         |j                           ||| j                  d      }t        | j                  |j                         dg| j                  z         |j                           ||| j                  dd      }t        | j                  |j                         dg| j                  z         t        | j                  |j                         dg| j                  z         |j                           ||| j                  g d      }t        | j                  |j                         g d       |j                           ||| j                  g d	      }t        | j                  |j                         g d	       |j                           ||| j                  d
d      }t!        dd      }|j#                         d   }|d   |d   k(  sJ |d   |d   k(  sJ |j                          t%        j&                  t(        t*        f      5   ||| j                  d       d d d        y # 1 sw Y   y xY w)Nr   )LineCollection_plot_linestring_collectionr  rz   r   r  r  r  z--r1   r\  rc  r~   )r  r  r  r  r   r   rI  r  r  rL   r2   	get_colorrO   rY  rN   r  rj  ri  r   r   r   r   )r9   r  r  r   rG   r  rm  res_lss           r   test_linestringsz$TestPlotCollections.test_linestringsu  s<   9B,,.R*2tzz:$///
 +2tzz:dffdnn.$&&0HI
 +2tzzEdffdoo/#@
 +2tzzSTWXdffd113cUTVV^Ddffd113cUTVV^D
 +2tzzQdffdoo/A
*JJT

 	FFOON	

 	 +2tzzTUVW.x;##%a(ayF1I%%%ayF1I%%%
 ]]Iz23 	K'DJJkJ	K 	K 	Ks   -KKc                 <   ddl m} t        j                         \  }} ||| j                  | j
                        }|j                  j                          t        j                         } |t        j                  | j                        | j                  dz
  z        }t        | j                  |j                         |       |j                           ||| j                  | j
                  d      }|j                  j                          t        j                  d      } |t        j                  | j                        | j                  dz
  z        }t        | j                  |j                         |       |j                           ||| j                  | j
                  dd      }|j                  j                          t        j                         } |d      g}t        | j                  |j                         |dz         |j                          y )	Nr   r  r1   RdBurp   r.   ri   r   )r  r  r   r   rI  r-   r  r  rP   r5   r6   r2   rL   r  r  )r9   r  r   rG   r  rR   rS   s          r   test_linestrings_valuesz+TestPlotCollections.test_linestrings_values  so   B,,.R +2tzz4;;G

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

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

||~7)dffdnn.!0CD
r=   c                    ddl m} ddlm} t	        j
                         \  }} ||| j                        }t        ||      sJ |j                           ||| j                        }t        | j                  |j                         t        g| j                  z         t        |j                               dk(  sJ |j                           ||| j                  d      }t        | j                  |j                         dg| j                  z         t        | j                  |j                         dg| j                  z         |j                           ||| j                  g d      }t        | j                  |j                         g d       t        | j                  |j                         g d       |j                           ||| j                  g d      }t        | j                  |j                         g d       t        | j                  |j                         g d       |j                           ||| j                  d      }t        | j                  |j                         dg| j                  z         t        |j                               dk(  sJ |j                           ||| j                  dd	
      }t        | j                  |j                         dg| j                  z         t        | j                  |j                         d	g| j                  z         |j                          t        j                   t"        t$        f      5   ||| j                  d       d d d        y # 1 sw Y   y xY w)Nr   )PatchCollection_plot_polygon_collectionr  rz   )r  rW   r   r  r  r   r  r~   )r  r  r  r  r   r   r  r  r  rL   r2   r   rO   r   r   r   r   r   r   )r9   r  r  r   rG   r  s         r   test_polygonsz!TestPlotCollections.test_polygons  s   :?,,.R'DMM:$000
 (DMM:dffd002]Odff4LM4%%'(A---
 (DMMEdffd002SEDFFNCdffd002SEDFFNC
 (DMMQdffd002ODdffd002OD
'MMT

 	FF N	

 	FF N	

 	 (DMMSIdffd002SEDFFNC4%%'(A---
 (DMMSTWXdffd002SEDFFNCdffd002SEDFFNC
 ]]Iz23 	K$RkJ	K 	K 	Ks   #NNc                    ddl m} t        j                         \  }} ||| j                  | j
                        }|j                  j                          t        j                         } |t        j                  | j                        | j                  dz
  z        }t        | j                  |j                         |       |j                           ||| j                  | j
                  d      }|j                  j                          t        j                  d      } |t        j                  | j                        | j                  dz
  z        }t        | j                  |j                         |       |j                           ||| j                  | j
                  dd      }|j                  j                          t        j                         } |d      g}t        | j                  |j                         |dz         |j                           ||| j                  | j
                  d	
      }|j                  j                          t        j                         } |t        j                  | j                        | j                  dz
  z        }t        | j                  |j                         |       t        | j                  |j                         d	g| j                  z         |j                          y )Nr   r  r1   r  rp   r.   ri   r   r  r  )r  r  r   r   r  r-   r  r  rP   r5   r6   r2   rL   r   r  r   )r9   r  r   rG   r  rR   rv   s          r   test_polygons_valuesz(TestPlotCollections.test_polygons_values  s   ?,,.R (DMM4;;G

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

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

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

||~"))DFF+tvvz:;
dffd002J?dffd002SEDFFNC
r=   N)
r1  r2  r3  r<   r  r  r  r  r  r  r6  r=   r   r  r  $  s,    	
6Gp	F5Kn:;Kz&r=   r  c                       e Zd Zd Zd Zej                  ZerAej                  j                  de       eddg      d               Z eddg      d        Zd	 Zy
)TestGeoplotAccessorc                     t        g d      t        dd      g}ddg}ddg}t        |||dd	      | _        t	        j
                  ||d
      | _        y )Nr   r1   r.   rh   r!   r   )r,   r  yz	EPSG:4326)crsr  r  )r   r
   r   r   r[   	DataFramer7   )r9   
geometriesr  r  s       r   r<   z TestGeoplotAccessor.setup_method0  sY    67q!E
FH#!!4+
 ,,QQ/0r=   c                    |j                         } | j                  j                  d||d| |j                         } | j                  j                  d||d| |j                         } t	        | j                  j                  |      dd|i| |j                         } t	        | j                  j                  |      dd|i| y)zCompare Figures.)kindrG   rG   Nr6  )r   r7   rA   r   getattr)	r9   r  fig_testfig_refkwargsax_pandas_1ax_geopandas_1ax_pandas_2ax_geopandas_2s	            r   compare_figuresz#TestGeoplotAccessor.compare_figures9  s    '')9$;9&9 ))+=4N=f='')#d#={=f= ))+$t$AA&Ar=   r  r  r  )r  c                    ddl }ddg}dg}ddg}i }||v r\|j                  j                  d      s]t        j                  t
        d	
      5  | j                  j                  |       ddd       y||v rddi}n||v rddd}|dk(  rd|d<   | j                  ||||       t        j                  d       y# 1 sw Y   yxY w)zTest Pandas kind.r   NkdedensitypiescatterhexbinscipyzNo module named 'scipy'r  r  r  r  r  r!   gridsizer   )	importlibutil	find_specr   r   ModuleNotFoundErrorr   rA   r  r   r   )	r9   r  r  r  r  _scipy_dependent_kinds_y_kinds	_xy_kindsr  s	            r   test_pandas_kindz$TestGeoplotAccessor.test_pandas_kindI  s     &+Y%7"wH"H-IF-- ~~//8+3L 1 401 !s""-8#)+F:&  x&AIIe1 s   B88Cc                     |j                         }| j                  j                  |       |j                         } t        | j                  j                  d      |       t	        j
                  d       y)zTest Geo kind.)rG   geor   N)r   r   rA   r  r   r   )r9   r  r  r^   r_   s        r   test_geo_kindz!TestGeoplotAccessor.test_geo_kindd  sW     ##%CHHMMSM!""$C)GDHHMM5)S1IIer=   c                 D   t        j                  t        d      5  | j                  j	                  d       ddd       t        j                  t
        d      5  | j                  j                  j                          ddd       y# 1 sw Y   RxY w# 1 sw Y   yxY w)zTest invalid kinds.zerror is not a valid plot kindr  errorr  Nz1'GeoplotAccessor' object has no attribute 'error')r   r   r   r   rA   AttributeErrorr  r=  s    r   test_invalid_kindz%TestGeoplotAccessor.test_invalid_kindm  sz    ]]:-MN 	(HHMMwM'	(]]E
 	" HHMM!		" 	"	( 	(	" 	"s   B
%B
BBN)r1  r2  r3  r<   r  r   _pandas_kindsr  r   r4  r5  r   r  r  r  r6  r=   r   r  r  /  ss    1
B $11M		 	 	7		7	 
8 
8	2 
	7	 
8	"r=   r  c                     t        g d      } t        g d      }t        | |gt        d            }t        |ddgd      }t        | |gddg      }t        |ddgd      }|j	                  d	      }|j
                  d   j                         }|j	                  |d   	      }|j
                  d   j                         }t        j                  j                  ||       |j	                  |d   j                  	      }|j
                  d   j                         }	t        j                  j                  ||	       |j	                  dd
      }|j
                  d   j                         }|j	                  |d   d
      }|j
                  d   j                         }t        j                  j                  ||       |j	                  |d   j                  d
      }|j
                  d   j                         }	t        j                  j                  ||	       |j	                  |j                  d
      }|j
                  d   j                         }	t        j                  j                  ||	       t        j                  t        d      5  |j	                  t        j                  g d      	      }ddd       y# 1 sw Y   yxY w)z
    Check that the dataframe plot method returns same values with an
    input string (column in df), pd.Series, or np.array
    r   r  r  rk   r   r1   r+   r-   rJ   T)rK   r   zdifferent number of rowsr  r   N)r   r   rt   r   rA   rM   rN   r5   rB   rC   r-   rl   r   r   r   r   )
r  r  r  r7   numeric_index_polysnumeric_index_dfrG   r   colors_seriescolors_arrays
             r   test_column_valuesr#  x  sV    
)	*B	)	*Br2hd4j1E	5QF;	<B#RHQ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 1WWBHHY/W01 1 1s   (KKc                     ddl m}  ddlm} t	        dd      j                  d      j                  t        ddg      j                  d            } ||      }t        ||       sJ |j                         }t        j                  r7t        |j                        t        |j                        cxk(  rdk(  sJ  J y t        |j                        t        |j                        cxk(  rd	k(  sJ  J y )
Nr   )	PathPatch)_PolygonPatchg      $@)r   r  g      @      )matplotlib.patchesr%  r  r&  r
   r   r  r   r  get_pathcompatGEOS_GE_390r   r   codes)r%  r&  polygonpatchpaths        r   test_polygon_patchr2    s     -0 	a4 ++J7H,I,P,PQT,UV  '"EeY'''>>D4==!S_;;;;;;4==!S_;;;;;;r=   c                 v   ddl m} |j                  }t        t        |      }t        t        j                  t        j                  |      |             }t        |      t        |      k(  sJ d       t        ||      D ]8  \  }}||j                  ||      k(  rJ | d|j                  ||               y)aw  
    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tuplert   	itertoolsislicecycler   zipto_rgba)	r2   r  rS   r   r   convall_actual_colorsactualr   s	            r   rL   rL     s    , "  D }-MY--ioom.LaPQ !S%99 :9   1?C 
he<< 	
hd4<<<>?@	
<
r=   c                     t         j                  j                  |       \  }}t         j                  j                  |||      S )zConverts a linestyle string representation, namely one of:
        ['dashed',  'dotted', 'dashdot', 'solid'],
    documented in `Collections.set_linestyle`,
    to the form `onoffseq`.
    )r   rI  _get_dash_pattern_scale_dashes)r]  r^  offsetdashess       r   rj  rj    s9      %%77	BNFF))&&)DDr=   c                 z    t         j                  j                  |       j                         }|j                  dz  S )z(Converts a markerstyle string to a path.rh   )r   markersMarkerStyler+  r   )markerstyler1  s     r   r   r     s2     ))+6??AD==1r=   c                 n    | j                   D ]  }|j                         |k(  s|c S  t        d|       )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  rG   s      r   r  r    s?     hh <<>U"I .ug6
77r=   c                     t        | d      S )Nr  )r  )r   s    r   r   r     s    3%%r=   r#   )Hr7  r   numpyr5   pandasr[   shapely.affinityr   shapely.geometryr   r   r   r   r   r	   r
   r   r   geopandas._compat_compatr,  	geopandasr   r   r   r  r   r   r!  r   usematplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   r   r  rN  r  r   rcParamsby_keyr9  rO   KeyErrorupdater   r8  rB  r  r  r  r  r  r?  r4  usefixturesskipif
HAS_PYPROJrA  r   rJ  r  r  r#  r2  rL   rj  r   r  r   r6  r=   r   <module>r]     sJ       #
 
 
 # 8 8 .  V  .
 
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& %G4 &G10G14HH