1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
U
­ý°d™{ã@sÖdZddlmZddlmZddlZddlZddlmZddl    m
Z
ddl m m ZddlZddlmZmZmZmZddlmZddlmZmZejd    d
„ƒZejd d „ƒZejd d„ƒZejGdd„deƒƒZ dS)z Test cases for Series.plot é)Údatetime)ÚchainN)Úis_platform_linux)Únp_version_gte1p24)Ú    DataFrameÚSeriesÚ
date_rangeÚplotting)Ú TestPlotBaseÚ_check_plot_workscCs tjddS)NÚts©Úname)ÚtmZmakeTimeSeries©rrúXd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/plotting/test_series.pyr sr cCs tjddS)NÚseriesr )rZmakeStringSeriesrrrrrsrcCs tjddS)NÚiseriesr )rZmakePeriodSeriesrrrrr$src
@s˜eZdZejjdd„ƒZdd„Zej ddddej    d    e
j d
d d g¡d d„ƒZ dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zej d#d$ejd%d&g¡d'd(„ƒZd)d*„ZejjeoÖeƒd+d,d-d.d/„ƒZd0d1„Zd2d3„Z d4d5„Z!d6d7„Z"d8d9„Z#d:d;„Z$d<d=„Z%d>d?„Z&ej d@dAdBg¡dCdD„ƒZ'dEdF„Z(e
j dGdH„ƒZ)e
j dIdJ„ƒZ*ejjdKdLdMdN„ƒZ+e
j ej de,j-j.e,j-j/¡dOdP„ƒƒZ0ej de,j-j.¡dQdR„ƒZ1e
j ej de,j-j.¡dSdT„ƒƒZ2ej de,j-j.¡dUdV„ƒZ3dWdX„Z4dYdZ„Z5d[d\„Z6ejjd]d^„ƒZ7ejjd_d`„ƒZ8ejje
j dadb„ƒƒZ9ej dcdddedfdgg¡dhdi„ƒZ:djdk„Z;dldm„Z<dndo„Z=dpdq„Z>drds„Z?dtdu„Z@dvdw„ZAejjdxdLdydz„ƒZBej ddd{g¡d|d}„ƒZCd~d„ZDd€d„ZEej d‚dƒd„d…d%gd…d„dƒd†gfd‡dˆd‰dŠgd‹dŒddŽgfg¡dd„ƒZFd‘d’„ZGej d“d”d•d–g¡ej ddd{ddd g¡d—d˜„ƒƒZHej d#eIjJd†d„d™dšeIjKdƒd›eIjKd„d›gg¡dœd„ƒZLd$S)žÚTestSeriesPlotscCs¼t|jddt|jddt|jdd}|j|ddt|jdd    d
}|j|d d t|jdd    d }|j|d dt|jdd    d}|j|d d dt|dd…jjƒt|jjdddS)NZfoo)ÚlabelF)Ú    use_indexr)Úrot©ZxrotÚ.T)ÚstyleÚlogyÚlog©Úyaxis)rZlogx)Úxaxis)rZloglog)rré
©Ústacked)r ÚplotÚ_check_ticks_propsÚ_check_ax_scalesÚbarÚarea)Úselfr ÚaxesÚaxrrrÚ    test_plot+szTestSeriesPlots.test_plotcCst|jƒdS©N©r r#)r(rrrrÚtest_plot_iseries>sz!TestSeriesPlots.test_plot_iseriesÚkindÚliner&ÚbarhÚkde)ZmarksÚhistÚboxcCst|dd…j|ddS)Né©r/r-)r(rr/rrrÚtest_plot_series_kindsAs z&TestSeriesPlots.test_plot_series_kindscCst|dd…jjƒdS)Nr )r r#r1©r(rrrrÚtest_plot_series_barhOsz%TestSeriesPlots.test_plot_series_barhcCs8tttj d¡ƒjjdd}|j|jdgdgddS)Nr Zblack©Úcolorr©Z
facecolors)    r rÚnpÚrandomÚrandnr#r&Ú _check_colorsÚpatches)r(r*rrrÚtest_plot_series_bar_axRsz'TestSeriesPlots.test_plot_series_bar_axcCsbt|jdd}|j|dddt|jddd}|j|dddt|jddd}|j|ddddS)    NT)Úsubplotsé©rDrD)Úaxes_numÚlayout)éÿÿÿÿrD)rCrG)rDrH)r r#Ú_check_axes_shape)r(r r*rrrÚtest_plot_6951Vs zTestSeriesPlots.test_plot_6951cCsB|j ¡\}}|jdd|d}| |jd¡|j|dddddS)NZTest)éé)ÚtitleÚfigsizer*rDrE)rFrGrN)ÚpltrCr#Ú_check_text_labelsrMrI)r(rÚ_r*rrrÚtest_plot_figsize_and_title`sz+TestSeriesPlots.test_plot_figsize_and_titlecCsLd}|jj|}|j ¡\}}tdddgƒj|d||jj|ksHt‚dS)Nzaxes.prop_cyclerDéé©r*)rOÚrcParamsrCrr#ÚAssertionError)r(ÚkeyÚcolorsrQr*rrrÚtest_dont_modify_rcParamsgs
 z)TestSeriesPlots.test_dont_modify_rcParamscCsÜ|j ¡\}}|j|d}| ¡\}}| ¡}||djddddksNt‚||djddddksnt‚t ¡|jd|d}| ¡\}}| ¡}||djddddks¸t‚||djddddksØt‚dS)NrUrF©ÚorigrHT©Ú secondary_yr*)    rOrCr#Úget_xlimÚ    get_linesÚget_datarWrÚclose)r(r Úfigr*ÚxminÚxmaxÚlinesrrrÚtest_ts_line_limos      z TestSeriesPlots.test_ts_line_limcCs|j ¡\}}|jjd|d}| ¡\}}| ¡djddd}||dksRt‚||dksbt‚|j|ddt     
¡|j ¡\}}|jjdd|d}| ¡\}}| ¡djddd}||dksÌt‚||dksÜt‚|j|d    dt     
¡|  ¡}|  d
¡  d ¡|_|j ¡\}}|jjdd|d}| ¡\}}| ¡djddd}||dksbt‚||dkstt‚|j|ddt     
¡|j ¡\}}|jjdd|d }| ¡\}}| ¡djddd}||dksàt‚||dksòt‚|j|dddS) NF)r"r*rr[rHrT)r"Zx_compatr*éÚGMTZCET)r"r^r*)rOrCr#r'r_r`rarWr$rrbÚcopyZ tz_localizeZ
tz_convertÚindex)r(r rQr*rdrer0Ztz_tsrrrÚtest_ts_area_lim~sB    z TestSeriesPlots.test_ts_area_limcCsn|jjdddd\}\}}t|ƒj|ddt|ƒj|dd| |¡ ||¡sTt‚| |¡ ||¡sjt‚dS)NrDrST)Zshareyr')r*r/)rOrCÚabsr#Z
get_y_axisZjoinedrW)r(r rcÚax1Úax2rrrÚtest_area_sharey_dont_overwrite¥s
z/TestSeriesPlots.test_area_sharey_dont_overwritecCs:tddgƒ}|j ¡\}}|jdd|d}|j|dgd|j ¡|j ¡\}}|jd|d}|j|dgd|j ¡d    |_|j ¡\}}|jd|d}|j|d    gd|j ¡|j ¡\}}|jdd|d
}|j|dgd|j ¡|j ¡\}}|jd d|d
}| ¡dkst‚|     ¡|j|dgddS) NrDrSZLABELT)rÚlegendr*©Úlabels©rqr*ÚÚNAME)rqrr*F)
rrOrCr#Ú_check_legend_labelsrbrZ
get_legendrWrq)r(ÚsrQr*rrrÚ
test_label¯s. 
 
 
 
zTestSeriesPlots.test_labelc    CsHtdddgƒ}t|jddd}tjt|dt|jƒW5QRXdS)NFT)Z include_boolúno numeric data to plot©Úmatch)rr r#ÚpytestÚraisesÚ    TypeError)r(rxÚmsgrrrÚ test_booleanËs
zTestSeriesPlots.test_booleanrkNé)Úkc    Csddtjdg}t||d}t|jƒ}|jd ¡}tjdddgtjd}t     
t  |j d¡|¡t     
|j t ddddg¡¡tjddddgtjd}t|jdd    }t     
|jd ¡|¡t|jjƒ}t     
|jd ¡|¡t|jjdd    }t     
|jd ¡|¡dS)
NrDrSrT©rkr©ZdtypeFTr!)r=Únanrr r#rfÚ    get_ydataÚarrayÚfloat64rÚassert_numpy_array_equalÚdeleteÚdataÚmaskr')r(rkÚvaluesÚdr*ZmaskedÚexpÚexpectedrrrÚtest_line_area_nan_seriesÔs 
 z)TestSeriesPlots.test_line_area_nan_seriescCs†tdddgdddgd}d|j_|j ¡\}}|jd    |d
}| ¡}|d ksPt‚|j ¡\}}|jjd    |d
}| ¡}|d ks‚t‚dS) NrDrSrTÚaÚbÚcr„z    The IndexF©rr*ru)    rrkrrOrCr#Ú
get_xlabelrWr&)r(rxrQr*rroÚlabel2rrrÚtest_line_use_index_falseçs z)TestSeriesPlots.test_line_use_index_falsezWeird rounding problemsF)ÚreasonÚstrictc    Cs†t ddddddg¡}|j ¡\}}tddgƒjjd    |d
}t |j     
¡|¡t  ¡|j ¡\}}tddgƒjj d    |d
}t |j  
¡|¡t  ¡t d d d ddddg¡}|j ¡\}}tddd gƒjd    d|d}d}d}| ¡}t |d|¡t |d|¡t |j     
¡|¡t  ¡|j ¡\}}tddd gƒjd    d|d}| ¡}t |d|¡t |d|¡t |j  
¡|¡dS)Ngš™™™™™¹?çð?g$@gY@g@@gˆÃ@éÈiôT)rr*gñh㈵øä>g-Cëâ6?gü©ñÒMbP?g{®Gáz„?r&)rr/r*g!Ñ,åNJ?gЄ–-?À?rrDr1)r=rˆrOrCrr#r&rrŠrÚ get_ticklocsrbr1rZget_ylimZassert_almost_equalr_)r(r‘rQr*ZyminÚymaxÚresrrrÚ test_bar_logós2zTestSeriesPlots.test_bar_logcCsVtddddgddddgd    }|j ¡\}}|jjd
|d }| | ¡d d ddg¡dS)NrDrSrTr‚r“r”r•rr„Fr–Ú0Ú1Ú2Ú3)rrOrCr#r&rPÚget_xticklabels)r(ÚdfrQr*rrrÚtest_bar_ignore_indexsz%TestSeriesPlots.test_bar_ignore_indexcCsRtddddgƒ}|jjddddgd}dd    „|jDƒ}d
d d d
g}||ksNt‚dS) NrDrSrTr‚ÚredÚbluer:cSsg|] }| ¡‘qSr)Z get_facecolor)Ú.0ÚprrrÚ
<listcomp>"sz8TestSeriesPlots.test_bar_user_colors.<locals>.<listcomp>)rœçr®rœ)r®r®rœrœ)rr#r&rArW)r(rxr*Úresultr‘rrrÚtest_bar_user_colorssüz$TestSeriesPlots.test_bar_user_colorscCshttj dd¡ƒ}|j ¡\}}|j|d}|j|dd|j ¡\}}|jd|d}|j|dddS)Nr5rUrrrh)rr*)rr=r>r?rOrCr#r$)r(r§rQr*r)rrrÚ test_rotation+s zTestSeriesPlots.test_rotationc
Cs¨ddlm}tddƒ}|dddddd    d
d d g    }ttj t|ƒ¡|ƒ}|j     ¡\}}|j
|d }|  t dddƒd|¡}|  dd¡|| ¡dks–t‚|j|dddS)Nr)ÚDatetimeConverterú1/1/2000z3/1/2000rDrSrTr5é    r é é rUiÏruz1/1/1999ú1/1/2001rhr)Z%pandas.plotting._matplotlib.converterr²rrr=r>r?ÚlenrOrCr#ÚconvertrZset_xlimr_rWr$)r(r²ÚrngÚserrQr*ZxprrrÚtest_irregular_datetime6s 
  z'TestSeriesPlots.test_irregular_datetimec    Cs¢tddtjddddgddddtjddgd}|j ¡\}}|j|d    }| ¡\}}| ¡}|t |d
j    d d d
¡ks|t
‚|t  |d
j    d d d
¡ksžt
‚dS) Nr®rœg@g@g@g@g@r„rUrFr[) rr=r†rOrCr#r_r`ZnanminrarWZnanmax)r(r»rQr*rdrerfrrrÚtest_unsorted_index_xlimCsþ  "z(TestSeriesPlots.test_unsorted_index_xlimc        Csðttj dd¡dddddgdd    }t|jjƒ}| |j|j    ¡| 
¡dksNt ‚t|jjdd
}| |jd gd¡d d dg}t|jj|d}d d dd d g}|j |j |ddddddg}d d dddg}t|jj||d}| |j|¡|j |j |dt|jj|ddd}dd„|j| ¡Dƒ}tt t|j    |ƒ¡ƒ}| |j|¡|jD]}| ¡dksLt ‚qLtdddddgdddddgd }tjtd!d"|j ¡W5QRXtddtjdgddddgdd    }t|jjƒ}| |jddd dg¡dS)#NrDr5r“r”r•rÚeZYLABEL©rkrrrruÚrÚg©rYr<ÚAÚBÚCÚDÚEÚm)rsrYz%.2fé)rYZautopctZfontsizecSsg|]}|dd›‘qS)édz.2fr)r«rxrrrr­osz3TestSeriesPlots.test_pie_series.<locals>.<listcomp>rSrr‚rHr„z&pie plot doesn't allow negative valuesr{)rr=r>Úrandintr r#ÚpierPÚtextsrkÚ
get_ylabelrWr@rArŽÚsumÚlistrÚ from_iterableÚzipZ get_fontsizer}r~Ú
ValueErrorr†)    r(rr*Z
color_argsZcolor_expectedrsZpctsZexpected_textsÚtrrrÚtest_pie_seriesOsH ÿ 
ÿ
   zTestSeriesPlots.test_pie_seriescCs\tdtjddgƒ}|j ¡\}}|jjd|d}ddddg}dd    „|jDƒ}||ksXt‚dS)
NrDTrtr¢rur¤r¥cSsg|] }| ¡‘qSr)Zget_text)r«Úxrrrr­„sz0TestSeriesPlots.test_pie_nan.<locals>.<listcomp>)    rr=r†rOrCr#rÌrÍrW)r(rxrQr*r‘r¯rrrÚ test_pie_nans  zTestSeriesPlots.test_pie_nancCsfttj dd¡tdƒd}ttj d¡dd}|j ¡\}}|j|d}|jdd|d    |j    |d
d d d gd| 
¡  ¡s~t ‚|j  
¡  ¡st ‚t ¡|j ¡\}}|j|d}|j|ddd|j    |d
d d d gd| 
¡  ¡sèt ‚|j  
¡  ¡sút ‚t ¡|j ¡\}}|jd|d}|jdd|d    dddd g}|j    |j|d|j 
¡  ¡r^t ‚| 
¡  ¡spt ‚t ¡|j ¡\}}|jd|d}|j|ddddddd g}|     |j|¡|j 
¡  ¡rÒt ‚| 
¡  ¡sät ‚t ¡|j ¡\}}|jdd|d}|j|dddd
d d d g}|     |j|¡|j 
¡  ¡rHt ‚| 
¡  ¡sZt ‚t ¡dS)NrhrTÚabc)ÚcolumnsrÖr rUT)rqr^r*r“r”r•z    x (right)rr)r*rqr^r]z    a (right)z    b (right)z    c (right)F)r^Z
mark_rightr*)rr=r>r?rÐrrOrCr#rwZ    get_yaxisZ get_visiblerWZright_axrrbZleft_ax)r(r§rxrQr*r‘rrrÚtest_df_series_secondary_legend‡sP     z/TestSeriesPlots.test_df_series_secondary_legendzinput_logy, expected_scale)Tr)ÚsymZsymlogcCs^ttj d¡ƒ}ttj d¡ƒ}|j|d}|jd|d}| ¡|ksJt‚| ¡|ksZt‚dS)Nrh)rT)r^r)rr=r>r?r#Z
get_yscalerW)r(Z
input_logyZexpected_scaleÚs1Ús2rnrorrrÚtest_secondary_logyÆs  z#TestSeriesPlots.test_secondary_logyc    CsPttj d¡ƒ}|j ¡\}}d}tjt|d|j    dd|dW5QRXdS)NrSzCannot pass 'style' string with a color symbol and 'color' keyword argument. Please use one or the other or pass 'style' without a color symbolr{zk--rƒ)rr;r*)
rr=r>r?rOrCr}r~rÓr#)r(rÖrQr*r€rrrÚ)test_plot_fails_with_dupe_color_and_styleÕs ÿz9TestSeriesPlots.test_plot_fails_with_dupe_color_and_stylecCs´t ddd¡}t|jjdddt|jjdddt|jjdt d¡dt|jjd|dt|jjd|d|j ¡\}}|jjdd||d}|j    |d    d
| 
|j   ¡d ¡dS) NiœÿÿÿrÊéZscott)Ú    bw_methodÚindgà?T)rrárâr*rrZDensity) r=Zlinspacer r#r2Úint_ZdensityrOrCr%rPrZ    get_label)r(r Z sample_pointsrQr*rrrÚtest_kde_kwargsàszTestSeriesPlots.test_kde_kwargscCsJttjjddƒ}tj|d<t|jjƒ}tt     |j
d  ¡¡ƒsFt ‚dS)Né2)Úsizer) rr=r>Úuniformr†r r#r2ÚanyÚisnanrfÚ    get_xdatarW)r(rxr)rrrÚtest_kde_missing_valsís
 z%TestSeriesPlots.test_kde_missing_valszApi changed in 3.6.0)ršcCsf|j ¡\}}|jjd|d}|j|dd| ¡}| ||jg¡| ¡}| |dgt    |ƒ¡dS)NT)rr*rrru)
rOrCr#r4r%r¦rPrZget_yticklabelsr¸)r(r rQr*ZxlabelsZylabelsrrrÚtest_boxplot_seriesösz#TestSeriesPlots.test_boxplot_seriescCs\ttdƒƒ}|j ¡\}}|j||d|j ¡|j ¡\}}t|j|ƒƒ|j ¡dS)NrT©r/r*)rÚrangerOrCr#rbÚgetattr)r(r/rxrQr*rrrÚtest_kind_both_wayss 
z#TestSeriesPlots.test_kind_both_waysc    CsJttdƒƒ}|j ¡\}}d}tjt|d|j||dW5QRXdS)NZabcdrzr{rí)rrÐrOrCr}r~rr#©r(r/rxrQr*r€rrrÚtest_invalid_plot_datas
 z&TestSeriesPlots.test_invalid_plot_datacCs"ttdƒtd}t|j|ddS)Nr r…r6)rrîÚobjectr r#)r(r/rxrrrÚtest_valid_object_plotsz&TestSeriesPlots.test_valid_object_plotc    CsNtddddgƒ}|j ¡\}}d}tjt|d|j||dW5QRXdS)Nr“r”rœrSrzr{rí)rrOrCr}r~rr#rñrrrÚ test_partially_invalid_plot_datas
z0TestSeriesPlots.test_partially_invalid_plot_datac    Cs6tddgƒ}tjtdd|jddW5QRXdS)NrDrSz%invalid_kind is not a valid plot kindr{Z invalid_kindr6)rr}r~rÓr#)r(rxrrrÚtest_invalid_kind$s z!TestSeriesPlots.test_invalid_kindcCsJtddd}tddd}| |¡}tj |j¡}t||d}t|jƒdS)Nz1/1/2009r‚©Úperiodsz1/2/2009r„)    rÚappendr=r>r?rærr r#)r(Zdr1Zdr2rkrŽrxrrrÚtest_dup_datetime_index_plot)s   
 z,TestSeriesPlots.test_dup_datetime_index_plotc    CsÈtt d¡dd}tj dd¡}|j||d}t dd„|jd ¡Dƒ¡}|j    t 
d    dg¡|  ¡  d    d¡}t  ||¡d
t|ƒ›d }tjt|d |jtj dd ¡dW5QRXt  ¡dS)Nr rÖr rS)ÚyerrÚxerrcSsg|]}|jdd…df‘qS)NrD)Zvertices©r«Úirrrr­8sz>TestSeriesPlots.test_errorbar_asymmetrical.<locals>.<listcomp>rDrHz?Asymmetrical error bars should be provided with the shape \(2, z\)r{rµ©rû)rr=Úaranger>Zrandr#ZvstackÚ collectionsÚ    get_pathsÚTrˆZto_numpyZreshaperrŠr¸r}r~rÓrb)r(rxÚerrr*r¯r‘r€rrrÚtest_errorbar_asymmetrical1s$ ÿ z*TestSeriesPlots.test_errorbar_asymmetricalc     Cstt d¡dd}t tj d¡¡}tt tj dd¡¡|jddgd}ddg}|D]®}t|j    t|ƒ|d    }|j
|d
d d t|j    ||d    }|j
|d
d d t|j    |  ¡|d    }|j
|d
d d t|j    ||d    }|j
|d
d d t|j    d d |d}|j
|d d d qTt|j    |d}|j
|d d
d t dddd}tt d¡|dd}tt tj d¡¡|d}    tt tj dd¡¡|ddgd}
t|j    |    d}|j
|d
d d t|j    |
d}|j
|d
d d t  t¡|j    t d¡dW5QRXdgd}t  t¡|j    |dW5QRXdS)Nr rÖr rSÚy)rkrÙr0r&)rûr/rrD)rürûgš™™™™™É?)rürûr/)rür³r·ÚM)Úfreqr¶r¿r„rÿrµZzzz)rr=rrmr>r?rrkr r#Z_check_has_errorbarsÚtolistrrZexternal_error_raisedrÓr) r(rxZs_errZd_errÚkindsr/r*Úixr Zts_errZtd_errrrrÚtest_errorbar_plotEsDÿ" 
 z"TestSeriesPlots.test_errorbar_plotcCs t|jddt|j|ddS)NT)Útabler-r8rrrÚ
test_tablepszTestSeriesPlots.test_tablecCs&| tdddgƒtjjtjj¡dS)NrDrSrT)Z_check_grid_settingsrr    Ú PlotAccessorÚ _series_kindsÚ _common_kinds)r(rrrÚtest_series_grid_settingsus þz)TestSeriesPlots.test_series_grid_settingsr•rÀr©Úgreenz#FF0000cCs„ddlm}|d|d}||gks&t‚|d|gd}||gksBt‚|d|d}||gdks`t‚|d|gd}||gdks€t‚dS)Nr©Úget_standard_colorsrDr:rT)Ú!pandas.plotting._matplotlib.stylerrW)r(r•rr¯rrrÚtest_standard_colors~s   z$TestSeriesPlots.test_standard_colorscCsddlm}ddlm}|jD]x}|d|d}||gks<t‚|d|gd}||gksXt‚|d|d}||gdksvt‚|d|gd}||gdkst‚q|jjD]x}|d|d}||gks¾t‚|d|gd}||gksÚt‚|d|d}||gdksøt‚|d|gd}||gdks t‚q dS)NrrÂrrD)Z
num_colorsr;rT)Ú
matplotlibrYrrZcnamesrWZColorConverter)r(rYrr•r¯rrrÚtest_standard_colors_allŽs(  
     z(TestSeriesPlots.test_standard_colors_allcCsB|j ¡\}}tt d¡dƒjd|d}|j| ¡dgddS)Nr¶rDr©r;r*©Z
linecolors)rOrCrr=rr#r@r`©r(rQr*rrrÚtest_series_plot_color_kwargs¯sz-TestSeriesPlots.test_series_plot_color_kwargscCsN|j ¡\}}tt d¡dtddddjd|d}|j| ¡dgddS)    Nr¶rDr³r÷r„rrr)    rOrCrr=rrr#r@r`rrrrÚ"test_time_series_plot_color_kwargsµs ÿz2TestSeriesPlots.test_time_series_plot_color_kwargsc    Cs~ddl}| |j¡}tddd}tt dd¡|d}d}|j ¡\}}t    |ƒD]}|j
|d    }qN|j |  ¡|d|…d
dS) Nrr³r¶r÷rDé r„rTrUr) rZ_unpack_cyclerrVrrr=rrOrCrîr#r@r`)    r(ZmplZ
def_colorsrkrxZncolorsrQr*rþrrrÚ-test_time_series_plot_color_with_empty_kwargs½s   z=TestSeriesPlots.test_time_series_plot_color_with_empty_kwargscCsftt d¡dd„tdƒDƒd}|j ¡\}}|jddddg|d    }d
d„d Dƒ}| | ¡|¡dS) Nr cSsg|]}d|d›‘qS©ÚPZ02drrýrrrr­Ísz4TestSeriesPlots.test_xticklabels.<locals>.<listcomp>r„rrTr5r´)Úxticksr*cSsg|]}d|d›‘qSr!rrýrrrr­Ðs)rrTr5r´)    rr=rrîrOrCr#rPr¦)r(rxrQr*rrrrÚtest_xticklabelsËs
 z TestSeriesPlots.test_xticklabelscCs^ttdƒdd„tdƒDƒd}|jjtdddƒd}t ttdddƒƒ¡}t ||     ¡¡dS)    Nr cSsg|]}d|d›‘qSr!rrýrrrr­Õsz6TestSeriesPlots.test_xtick_barPlot.<locals>.<listcomp>r„rrµrS)r#)
rrîr#r&r=rˆrÐrrŠZ
get_xticks)r(rxr*rrrrÚtest_xtick_barPlotÓsz"TestSeriesPlots.test_xtick_barPlotcCs@ddlm}ttddƒtjdd|dgdd    d
}t|jƒdS) Nr)ÚCustomBusinessDayrÊéyz
2014-05-01z
2014-06-01z
2014-05-26)Zholidays)ÚstartÚendrr„)Zpandas.tseries.offsetsr&rrîÚpdZ bdate_ranger r#)r(r&rxrrrÚtest_custom_business_day_freqÚs 
ýþ    z-TestSeriesPlots.test_custom_business_day_freqziGH#24426, see also github.com/pandas-dev/pandas/commit/ef1bd69fa42bbed5d09dd17f08c44fc8bfc2b685#r61470674cCsntddddgƒ}|j ¡\}}|j|d}|j ¡}|jddgdd|j ¡\}}|j ¡}t ||¡dS)    NrDrSrTr‚rUrT)Zinplace)    rrOrCr#rržZdroprrŠ)r(r»rQr*ZbeforeÚafterrrrÚ%test_plot_accessor_updates_on_inplaceés 
 
z5TestSeriesPlots.test_plot_accessor_updates_on_inplacer'cCsTtddgƒ}|j ¡\}}|j||d| ¡}|ddks@t‚|ddksPt‚dS)NrSrTrírrD)rrOrCr#r_rW)r(r/rxrQr*ÚxlimsrrrÚtest_plot_xlim_for_seriesùs  z)TestSeriesPlots.test_plot_xlim_for_seriescCshttd}|jst‚| ¡}t| ¡ƒdks0t‚| ¡d}t| ¡ƒdksPt‚t| ¡ƒdksdt‚dS)Nr…rDr)    rÚintÚemptyrWr#r¸r`rêr‡)r(r§r*r0rrrÚtest_plot_no_rowss
 
 z!TestSeriesPlots.test_plot_no_rowsc    Cs4tdddgƒ}tjtdd| ¡W5QRXdS)Nr“r”r•rzr{)rr}r~rr#)r(r§rrrÚtest_plot_no_numeric_datasz)TestSeriesPlots.test_plot_no_numeric_dataz data, indexrDrSrTrr råràrhivi€i¼ižcCsLt||d}|jdd}| ¡}dd„t|jdd„dDƒ}||ksHt‚dS)    N)rŒrkr&r6cSsg|]}| ¡j‘qSr)Úget_bboxrŸ)r«Úpatchrrrr­!sÿz3TestSeriesPlots.test_plot_order.<locals>.<listcomp>cSs
| ¡jSr,)r4re)r5rrrÚ<lambda>#óz1TestSeriesPlots.test_plot_order.<locals>.<lambda>)rX)rr#r    ÚsortedrArW)r(rŒrkr»r*r‘r¯rrrÚtest_plot_orders      þzTestSeriesPlots.test_plot_ordercCs4tddgƒ}|jddd}|jd ¡dks0t‚dS)NrDrSrxZC3)rr;r)rr#rfZ    get_colorrW)r(rxr*rrrÚtest_style_single_ok's z$TestSeriesPlots.test_style_single_okz index_name, old_label, new_label)NruÚnew)Úoldr<r;)NrurucCsÌtddddgƒ}||j_|j|d}|dkrN| ¡dks<t‚| ¡|ks˜t‚nJ|dkrx| ¡dksft‚| ¡d    ks˜t‚n | ¡dksˆt‚| ¡|ks˜t‚|j|||d
}| ¡|ks¸t‚| ¡|ksÈt‚dS) NrDrSrTr‚r6r1rur3Z    Frequency)r/ZylabelZxlabel)rrkrr#r—rWrÎ)r(r/Z
index_nameZ    old_labelZ    new_labelr»r*rrrÚtest_xlabel_ylabel_series,s z)TestSeriesPlots.test_xlabel_ylabel_seriesrÆ)r(rør)ÚdayscCs0d}tddg|dj|d}| ¡dks,t‚dS)N)rTrDrDrSr„)Zxlim)rr#r_rW)r(rkr.r*rrrÚtest_timedelta_indexGs    z$TestSeriesPlots.test_timedelta_index)MÚ__name__Ú
__module__Ú __qualname__r}ÚmarkZslowr+r.Z parametrizeÚparamÚtdZskip_if_no_scipyr7r9rBrJrRrZrgrlrpryrrZ makeDateIndexr’r™Zxfailrrr¡r¨r°r±r¼r½rÕr×rÚrÞrßrärërìr    rrrrðròrôrõrörúrr rrrrrrr r$r%r+r-r/r2r3r9r:r=r*Ztimedelta_rangeZ    Timedeltar?rrrrr)sä
úþ
 
'
    
 ý
!    0?ÿ
 
 
 
    þ     
 
 
*
 
!ÿ
 
 
þþ
þ þþr)!Ú__doc__rÚ    itertoolsrÚnumpyr=r}Z pandas.compatrZpandas.compat.numpyrZpandas.util._test_decoratorsÚutilZ_test_decoratorsrEZpandasr*rrrr    Zpandas._testingZ_testingrZpandas.tests.plotting.commonr
r Zfixturer rrZskip_if_no_mplrrrrrÚ<module>s&