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
U
­ý°dLcã@s®dZddlZddlZddlZddlZddlmmZ    ddl
m Z m Z m Z mZmZmZddlmZddlmZmZddlmZe    jGdd„deƒƒZe    jGdd    „d    eƒƒZdS)
z  Test cases for .boxplot method éN)Ú    DataFrameÚ
MultiIndexÚSeriesÚ
date_rangeÚplottingÚtimedelta_range)Ú TestPlotBaseÚ_check_plot_works)Ú pprint_thingc @sveZdZdd„Zejjdd„ƒZdd„Zdd„Z    d    d
„Z
d d „Z d d„Z dd„Z dd„Zdd„Zej ddddddœdddddœfddiddifddddddœfg¡dd„ƒZej ddd d d!d dœfd"d#d#d$d#dœfg¡d%d&„ƒZej d'ddd(œd)fg¡d*d+„ƒZej d,d-d.d/d0g¡d1d2„ƒZej d3d4d5g¡d6d7„ƒZej d3d4d5g¡d8d9„ƒZej d3d4d5g¡d:d;„ƒZd<S)=ÚTestDataFramePlotsc    CsØddlm}d}ttj ddddg|¡tj ddddg|¡tj ddddg|¡dœt d|¡d}|jdd    d
}d d „| ¡Dƒ|j     
¡kst ‚|  t ddd ¡¡|  ¡dd „| ¡Dƒtt ddd ¡ƒksÔt ‚dS)NréPééé)ZClinicalZ    ConfirmedZ    Discarded©ÚindexÚbarT)ÚkindZstackedcSsg|]}t| ¡ƒ‘qS©©ÚintÚget_text©Ú.0Úxrrú`d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/plotting/test_boxplot_method.pyÚ
<listcomp>,szDTestDataFramePlots.test_stacked_boxplot_set_axis.<locals>.<listcomp>é
cSsg|]}t| ¡ƒ‘qSrrrrrrr/s)Úmatplotlib.pyplotÚpyplotrÚnpÚrandomÚchoiceZarangeÚplotÚget_xticklabelsrZto_listÚAssertionErrorZ
set_xticksZdrawÚlist)ÚselfÚpltÚnÚdfÚaxrrrÚtest_stacked_boxplot_set_axiss  ý
ú  ÿz0TestDataFramePlots.test_stacked_boxplot_set_axisc    Cs\ttj dd¡ttjdd…ƒddddgd}dd    gd
|d <dd    dgd |d <t|jddt|jddgddt    j
t ddt|jddgd dW5QRXt|jdd d gdt    j
t ddt|jd dW5QRXt    j
t ddt|jd d gdW5QRXtt j j|dddt|jdddt    j
t ddt|jd ddW5QRXdS)NééÚoneÚtwoÚthreeÚfour©rÚcolumnsÚfoorrZindicrZindic2Údict©Ú return_type©Úcolumnr8F©Zcheck_stacklevel)r:Úby©r<)Údatar8r )Únotchr8)r<r?)rr r!Úrandnr&ÚstringÚ ascii_lettersr    ÚboxplotÚtmÚassert_produces_warningÚ UserWarningrZ_core©r'r*rrrÚtest_boxplot_legacy13s( 
ýz'TestDataFramePlots.test_boxplot_legacy1c Cszttj dd¡ddgd}tddddddddddg
ƒ|d<tdgdƒ|d    <tjtd
d t|j    dd W5QRX|j
  ¡\}}|j    dd|d }|j }||ks¤t ‚|j
  ¡\}}| d    ¡j    |dd}|j }||dksÜt ‚|j
  ¡\}}t t¡|j    ddgd|dd}W5QRX|d ¡|ks,t ‚|j
  ¡\}}|j    |dd}ttj | ¡¡ƒ}t| ¡ƒt|ƒksvt ‚dS)NrrZCol1ZCol2©r4ÚAÚBÚXÚYFr;r=)r<r+Úaxes)r+r8)r:r<r+r8r6)rr r!ÚrandrrDrErFr    rCr(ÚsubplotsrNr%ÚgroupbyZ
get_figurer&Ú    itertoolsÚchainÚ from_iterableÚvaluesÚlenÚ    get_lines)r'r*Úfigr+rNZax_axesÚdÚlinesrrrÚtest_boxplot_legacy2Ls4   ÿz'TestDataFramePlots.test_boxplot_legacy2cCs| ¡}t||jjƒst‚dS©N)rCÚ
isinstancer(ZAxesr%)r'Úhist_dfÚresultrrrÚtest_boxplot_return_type_nonensz0TestDataFramePlots.test_boxplot_return_type_nonec    Csúttj dd¡ttjdd…ƒddddgd}d}tjt    |d    |j
d
d W5QRX| 
¡}|  |d ¡t   d ¡|j
dd }W5QRX|  |d¡t   d ¡|j
d d }W5QRX|  |d ¡t   d ¡|j
dd }W5QRX|  |d¡dS)Nr-r.r/r0r1r2r3z,return_type must be {'axes', 'dict', 'both'}©ÚmatchZ
NOT_A_TYPEr7rNFr6Úboth)rr r!r@r&rArBÚpytestÚraisesÚ
ValueErrorrCÚ_check_box_return_typerDrE)r'r*Úmsgr_rrrÚtest_boxplot_return_type_legacyss& 
ý      z2TestDataFramePlots.test_boxplot_return_type_legacyc    Csúdd„}| ¡}tj dd|jd¡|d<|jddgd    d
\}}||d|ƒ||d|ƒ|j|ksjt‚|jdddgd    d
}|d |d |d }}}|d}||d|ƒ||d|ƒ||d|ƒ|j|ksÚt‚|j|ksèt‚|jdksöt‚dS)NcSs0| ¡\}}|| ¡kst‚|| ¡ks,t‚dSr\)Zget_ylimÚminr%Úmax)Úcolr+Zy_minZy_maxrrrÚ_check_ax_limitss zETestDataFramePlots.test_boxplot_axis_limits.<locals>._check_ax_limitsr érZageÚheightÚweightÚcategoryr=)rr)rr )r r©r r )Úcopyr r!ÚrandintÚshaperCZ_shareyr%)    r'r^rmr*Z    height_axZ    weight_axÚpZage_axZdummy_axrrrÚtest_boxplot_axis_limitsŽs z+TestDataFramePlots.test_boxplot_axis_limitscCs8ttj dd¡ƒ}tj|jdd…df<t|jdddS)Nrnr.rrNr7)rr r!r@ÚnanÚlocr    rCrGrrrÚtest_boxplot_empty_column¨sz,TestDataFramePlots.test_boxplot_empty_columncCsVttj dd¡dddddgd}|jd    d
d }|jjjd ks@t‚|jjj    d ksRt‚dS)NrérJrKÚCÚDÚErIrN)é é)r8Zfigsizerr€)
rr r!rOrCÚfigureZ bbox_inchesÚwidthr%ro)r'r*r_rrrÚ test_figsize­s zTestDataFramePlots.test_figsizecCs6tdddddddgiƒ}|j|jddd    ddd
dS) NÚar rrr.r{r-é)Úfontsize©Z
xlabelsizeZ
ylabelsize©rZ_check_ticks_propsrCrGrrrÚ test_fontsize³s  ÿz TestDataFramePlots.test_fontsizec
Cs€ttdddtj d¡tj d¡dtddd t¡tddddtddddœƒ}|jd    d
}d d „|     ¡Dƒd dgks|t
‚dS)Nz
2012-01-01éd)ÚperiodsrÚUTC)r‹Útzz1 days)r„ÚbÚcrYÚeÚfÚbox)rcSsg|] }| ¡‘qSr©rrrrrrÆsz@TestDataFramePlots.test_boxplot_numeric_data.<locals>.<listcomp>rŽr) rrr r!r@ÚastypeÚstrrr#r$r%)r'r*r+rrrÚtest_boxplot_numeric_data¹s
 
 
úÿ
z,TestDataFramePlots.test_boxplot_numeric_datazcolors_kwd, expectedÚrrŽÚgr)ÚboxesÚwhiskersÚmediansÚcapsr™cCsNttj dd¡ƒ}|j|dd}| ¡D] \}}||d ¡|ks(t‚q(dS)Nrrr6©Úcolorr8r)rr r!rOrCÚitemsÚ    get_colorr%)r'Z
colors_kwdÚexpectedr*r_ÚkÚvrrrÚtest_color_kwdÈs z!TestDataFramePlots.test_color_kwdzscheme,expectedZdark_backgroundz#8dd3c7z#bfbbd9Údefaultz#1f77b4z#2ca02ccCsfttj dd¡ƒ}ddlm}|j |¡|jj    dd}| 
¡D] \}}||d  ¡|ks@t ‚q@dS)Nrrrr6r7) rr r!rOrrÚstyleZuser#r’rŸr r%)r'Úschemer¡r*r(r_r¢r£rrrÚtest_colors_in_themeÚs   z'TestDataFramePlots.test_colors_in_themezdict_colors, msg)r™Z invalid_keyzinvalid key 'invalid_key'c    Cs>ttj dd¡ƒ}tjt|d|j|ddW5QRXdS)Nrrrar6r)rr r!rOrdrerfrC)r'Z dict_colorsrhr*rrrÚtest_color_kwd_errorsûsz(TestDataFramePlots.test_color_kwd_errorszprops, expected)Zboxpropsr™)Z whiskerpropsrš)Zcappropsrœ)Z medianpropsr›cCsNtdd„dDƒƒ}|ddii}|jfddi|—Ž}||d ¡dksJt‚dS)    NcSsi|]}|tj d¡“qS)rŠ)r r!)rr¢rrrÚ
<dictcomp>sz?TestDataFramePlots.test_specified_props_kwd.<locals>.<dictcomp>ÚABCržZC1r8r6r)rrCr r%)r'Úpropsr¡r*Zkwdr_rrrÚtest_specified_props_kwds  z+TestDataFramePlots.test_specified_props_kwdÚvertTFcCslttj d¡tj d¡tj ddgd¡dœƒ}d\}}|jd|||d}| ¡|ksXt‚| ¡|ksht‚dS)NrŠÚgroup1Úgroup2©r„rŽÚgroup©rÚyr’)rr®ÚxlabelÚylabel)    rr r!r@r"r#Ú
get_xlabelr%Ú
get_ylabel©r'r®r*rµr¶r+rrrÚtest_plot_xlabel_ylabels
 
ýÿz*TestDataFramePlots.test_plot_xlabel_ylabelcCsjttj d¡tj d¡tj ddgd¡dœƒ}d\}}|j|||d}| ¡|ksVt‚| ¡|ksft‚dS)NrŠr¯r°r±r³)r®rµr¶)    rr r!r@r"rCr·r%r¸r¹rrrÚtest_boxplot_xlabel_ylabel$s
 
ýÿz-TestDataFramePlots.test_boxplot_xlabel_ylabelcCsÈttj d¡tj d¡tj ddgd¡dœƒ}d\}}|jd|||d}|D]$}| ¡|ks`t‚| ¡|ksLt‚qL|j     
¡|jd|d}|D]*}|rž| ¡n| ¡}|t dgƒksŽt‚qŽ|j     
¡dS)    NrŠr¯r°r±r³r²)r<r®rµr¶)r<r®) rr r!r@r"rCr·r%r¸r(Úcloser
)r'r®r*rµr¶r+ZsubplotZ target_labelrrrÚ test_boxplot_group_xlabel_ylabel2s"
 
ýÿ
z3TestDataFramePlots.test_boxplot_group_xlabel_ylabelN)Ú__name__Ú
__module__Ú __qualname__r,rdÚmarkÚslowrHr[r`rirwrzrƒr‰r–Ú parametrizer¤r¨r©r­rºr»r½rrrrr sx
"  þúþ
üþ
üþöþ
 
þ
üþ    
 
 
r c@süeZdZdd„Zejjdd„ƒZdd„Zdd„Z    ejjd    d
„ƒZ
ejjd d „ƒZ ejjd d„ƒZ dd„Z ej dddddddgfdgdddddgfddddddgfddgddddddddddg
fdddddddddddg
fg¡dd „ƒZd!d"„Zd#d$„ZdS)%ÚTestDataFrameGroupByPlotsc    Csn|jdd}tjtddt|jdd}W5QRX|jt|jƒddd    t|jddd
}|j|d d d    dS) NÚgenderr=Fr;rNr7r©r r©Zaxes_numÚlayout©rPr8r rr)    rQrDrErFr    rCÚ_check_axes_shaper&rU)r'r^ÚgroupedrNrrrrHKs  z.TestDataFrameGroupByPlots.test_boxplot_legacy1c    Cs¢ttjdd…tdƒƒ}ttj dd¡t     |¡d}|j
dd}t j t ddt|jdd    }W5QRX|jt|jƒdd
d t|jddd }|j|dd d dS)Nrrrr ©ÚlevelFr;rNr7)r.rrÇrÉrr)ÚziprArBÚrangerr r!rOrÚ from_tuplesrQrDrErFr    rCrÊr&rU©r'Útuplesr*rËrNrrrr[Ss z.TestDataFrameGroupByPlots.test_boxplot_legacy2c    Cs¬ttjdd…tdƒƒ}ttj dd¡t     |¡d}|j
ddj ddd}t j tdd    t|jd
d }W5QRX|jt|jƒdd d t|jdd
d}|j|ddd dS)Nrrrr rÌr)rÍZaxisFr;rNr7©rrrÇrÉrr)rÎrArBrÏrr r!rOrrÐZunstackrQrDrErFr    rCrÊr&rUrÑrrrÚtest_boxplot_legacy3_sz.TestDataFrameGroupByPlots.test_boxplot_legacy3cCsîd}ttjjdd|dƒ}ttjjdd|dƒ}tj d¡jddg|d}t|||d    œƒ}| d
¡}| ¡}t    |j
  ¡ƒd ks‚t ‚t    |ƒd ks’t ‚t  ¡|jd d }t    |j
  ¡ƒdks¼t ‚t    |ƒd ksÌt ‚t  ¡| d
¡ ¡}t  ¡dS)Nré¦rn)Úsizeé<é*ZmaleZfemale)rorprÅrÅrrNr7r )rr r!ÚnormalZ RandomStater"rrQr#rVr(Z get_fignumsr%rDr¼rCÚhist)r'r)rprorÅr*ÚgbÚresrrrÚtest_grouped_plot_fignumsis 
 z3TestDataFrameGroupByPlots.test_grouped_plot_fignumsc    Cs(|}|jdd}t|tjƒs t‚|j|ddddgd| d¡jdd}|j|dd    d
gdd  ¡}ttj     
d d ¡|d}d ¡}|d|d<dD]}| d¡j|d}|j||dddgd|jd|d}|j||dddgd| d¡j|d}|j|||d|jd|d}|j|||dq’dS)NrÅr=rorprq)Z expected_keysr6r7ZMaleZFemalezX B C D A G Y N Q Oé2rrIzA B C D E F G H I Jr{)r6rNrcÚ    classroomrJrKr|)r<r8) rCr]r Zndarrayr%rgrQÚsplitrr!r@)    r'r^r*r_Zcolumns2Zdf2Z categories2ÚtÚreturnedrrrÚtest_grouped_box_return_types6 ÿ ÿz6TestDataFrameGroupByPlots.test_grouped_box_return_typec    Cs¦|}d}tjt|d|jddg|jddW5QRXd}tjt|d|jdddgd    d
d W5QRXd }tjt|d|jddg|jd dW5QRXtjtddt|     d¡jdd
d}W5QRX|j
|j   ¡j dddtjtddt|     d¡jdd
d}W5QRX|j
|j   ¡j dddtjtddt|     d¡jdd
d}W5QRX|j
|j   ¡j ddd|jdddgddd}|j
|j   ¡j ddd|dfD].}|j| ¡dd|j|j ¡gddq°|d|dfD]&}| | ¡¡| |j ¡g¡qð|     d¡jdddgd
d}|j
|j   ¡j dddtjtddt|     d¡jddd
d }W5QRX|j
|j   ¡j dddtjtddt|     d¡jddd
d }W5QRX|j
|j   ¡j ddd|jdddgddd}|j
|j   ¡j ddd|jdddgddd}|j
|j   ¡j dd d|     d¡jdddgd!d
d }|j
|j   ¡j dd!d|     d¡jdddgd"d
d }|j
|j   ¡j dd#ddS)$Nz1Layout of 1x1 must be larger than required size 2rarprorr)r:r<rÈz7The 'layout' keyword is not supported when 'by' is Nonerq)rr r6)r:rÈr8z1At least one dimension of layout must be positive)éÿÿÿÿräFr;rÅr9rrÆrÇr.rÓrßrrN)r:r<r8)Zvisible)rr)rrä)r.r )rär )rr )r r.)r rä©r r)rdrerfrCrÅrDrErFr    rQrÊr(ÚgcfrNZ_check_visibler$ZxaxisZ    get_label)r'r^r*rhr’rNr+rrrÚtest_grouped_box_layout¢s¸ ý 
ÿ
ÿ
ÿÿ
ÿ
ü
üÿÿ
ÿ
ÿz1TestDataFrameGroupByPlots.test_grouped_box_layoutc
Cs¶|}t t¡F|j dd¡\}}| d¡jdd|d|j|j ¡j    dddW5QRX|j dd    ¡\}}t t¡"|jdd
dgd d|d d }W5QRXt
  t |j ƒ¡}|j|d    ddt ||d ¡|d j|ksàt‚t t¡&| d¡jdd
dgd|dd}W5QRXt
  t |j ƒ¡}|j|d    ddt ||d¡|d j|ksZt‚d}tjt|d@|j dd    ¡\}}t t¡| d¡j|d}W5QRXW5QRXdS)NrrqrorN)r:r8r+r.rÓrÇrrprÅr)r:r<r8r+rårßr z@The number of passed axes must be 3, the same as the output plotra)r+)rDrErFr(rPrQrCrÊrærNr Úarrayr&rUZassert_numpy_array_equalrr%rdrerf)r'r^r*rXrNrârhrrrÚtest_grouped_box_multiple_axess@ " ü 
ÿ z8TestDataFrameGroupByPlots.test_grouped_box_multiple_axescCsFtddddddgddddddgdœƒ}|j|jd    d
d d d d d dS)Nr rrr.r{r-r)r„rŽr„rŽr…)r<r†r‡rˆrGrrrr‰-s &ÿz'TestDataFrameGroupByPlots.test_fontsizezcol, expected_xticklabelr£z(a, v)z(b, v)z(c, v)z(d, v)z(e, v)Úv1z(a, v1)z(b, v1)z(c, v1)z(d, v1)z(e, v1)NcCslttj tdƒd¡tj d¡tj d¡dœƒ}| d¡}t|jd|dd}dd    „|     ¡Dƒ}||ksht
‚dS)
NZabcderŠ)Úcatr£rêrëFrN)rPr:r8cSsg|] }| ¡‘qSrr“rrrrrhszQTestDataFrameGroupByPlots.test_groupby_boxplot_subplots_false.<locals>.<listcomp>) rr r!r"r&rOrQr    rCr$r%)r'rlÚexpected_xticklabelr*rËrNÚresult_xticklabelrrrÚ#test_groupby_boxplot_subplots_false3s(
 
ýÿ
ÿz=TestDataFrameGroupByPlots.test_groupby_boxplot_subplots_falsec    CsD| d¡}| d¡}d}tjt|dt|jddW5QRXdS)NÚobjectrÅz:boxplot method requires numerical columns, nothing to plotraF)rP)r”rQrdrerfr    rC)r'r^r*rËrhrrrÚtest_groupby_boxplot_objectks
 
 
z5TestDataFrameGroupByPlots.test_groupby_boxplot_objectc        Cs¦ddddddddgddddddddgg}tt|Žƒ}tj|ddgd    }ttj d
d ¡d d dg|d}ddg}t|j    |dd}ddg}dd„| 
¡Dƒ}||ks¢t ‚dS)NrZbazr5Zquxr/r0ÚfirstÚsecond)Únamesrr€rJrKr|r3)rr/)rr0rNr9z
(bar, one)z
(bar, two)cSsg|] }| ¡‘qSrr“rrrrrszLTestDataFrameGroupByPlots.test_boxplot_multiindex_column.<locals>.<listcomp>) r&rÎrrÐrr r!r@r    rCr$r%)    r'ZarraysrÒrr*rlrNrìrírrrÚtest_boxplot_multiindex_columnssþ z8TestDataFrameGroupByPlots.test_boxplot_multiindex_column)r¾r¿rÀrHrdrÁrÂr[rÔrÝrãrçrér‰rÃrîrðrôrrrrrÄIs`
 
 
"
]
,öþöþíþ&
rÄ)Ú__doc__rRrAÚnumpyr rdZpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasrrrrrrZpandas._testingZ_testingrDZpandas.tests.plotting.commonrr    Zpandas.io.formats.printingr
Zskip_if_no_mplr rÄrrrrÚ<module>s   .