zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
168
169
170
171
172
173
174
175
176
U
­ý°dmã@s¨dZddlZddlZddlZddlZddlmZddlm    Z    ddl
m m Z ddlZddlmZmZmZddlmZddlmZddlmZe jGdd    „d    eƒƒZdS)
z Test cases for DataFrame.plot éN)Úis_platform_linux)Únp_version_gte1p24)Ú    DataFrameÚSeriesÚ
date_range)Ú TestPlotBase)Ú pprint_thingc@seZdZejjdd„ƒZdd„Zdd„Zejj    ddd    d
„ƒZ
d d „Z ej  d idddfddidddfg¡dd„ƒZ ejjdd„ƒZdd„Zdd„Zdd„Zdd„Zejj    eo²eƒdd d!d"d#„ƒZejj    eoÒeƒdd d!d$d%„ƒZd&d'„Zd(d)„Zd*d+„Zd,d-„Zej  d.d/d0d1d2d3d4dd5gfg¡ej  d6d7d8d9g¡d:d;„ƒƒZej  d<d9d=d>œd9d=d?d@œdAd=d>œdAd=d?d@œd9d d>œd9d d?d@œdAd d>œdAd d?d@œd9d=dBœd9d=d?dCœdAd=dBœdAd=d?dCœd9d=dDdEœd9d=d?dDdFœdAd=dDdEœdAd=d?dDdFœd9d dDdEœd9d d?dDdFœdAd dDdEœdAd d?dDdFœd9d=dDdGœd9d=d?dDdHœdAd=dDdGœdAd=d?dDdHœg¡dIdJ„ƒZej  d<d9d d>œd9d=d>œdAd d>œdAd=d>œd9d=dBœdAd=dBœg¡dKdL„ƒZej  d<d9d d>œd9d=d>œdAd d>œdAd=d>œd9d=dBœdAd=dBœg¡dMdN„ƒZej  dOddPg¡dQdR„ƒZdSdT„Z dYdWdX„Z!d3S)ZÚTestDataFramePlotsSubplotscCsðttj dd¡ttjdd…ƒd}dD]À}|j|dddd}|j|ddd|j    d    ks^t
‚t ||j ƒD]\}}|j |t|ƒgd
qj|dd …D]b}| |j¡|j| ¡d d |dkrÔ|j|jddd d |j|j ¡d d | | ¡¡q”| |dj¡| |d ¡¡| |djdd¡| |dj ¡¡| |d ¡¡|j|dd d}|D]P}| |j¡| | ¡¡| |jdd¡| |j ¡¡| | ¡¡qj|j|dd d}|D]}| ¡dksÐt
‚qÐq(dS)Né
é©Úindex)ÚbarÚbarhÚlineÚareaT)ÚkindÚsubplotsÚsharexÚlegend©r é©Zaxes_numÚlayout©r ©ÚlabelséþÿÿÿF©Zvisibler©Úminoréÿÿÿÿ©rrr)rrr)rÚnpÚrandomÚrandÚlistÚstringÚ ascii_lettersÚplotÚ_check_axes_shapeÚshapeÚAssertionErrorÚzipÚcolumnsÚ_check_legend_labelsrÚ_check_visibleÚxaxisÚget_xticklabelsÚ    get_labelÚget_yticklabelsZ
get_legend)ÚselfÚdfrÚaxesÚaxÚcolumn©r:úfd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/plotting/frame/test_frame_subplots.pyÚ test_subplotss:$
  z(TestDataFramePlotsSubplots.test_subplotscCs¤tdddd}ttj dd¡|d}dD]t}|j|ddd    }|j|dd
d |dd …D]Z}| |j¡|j|     ¡d d|j|j    ddd d|j|j 
¡d d| |  ¡¡qZ| |dj¡| |d     ¡¡| |dj    dd¡| |dj 
¡¡| |d  ¡¡|j |dd|j|dd ddd}|D]b}| |j¡| |     ¡¡| |j    dd¡| |j 
¡¡| |  ¡¡|j |ddddq:q(dS)Nú
2014-07-01ÚMr
©ÚstartÚfreqÚperiodsr r )rrTr"rrrFrrr!r)Úxroté-é)rrrZrotÚfontsize)Z
xlabelsizerCZ
ylabelsize) rrr#r$r%r)r*r0r1r2r3r4Z_check_ticks_props)r5Úidxr6rr7r8r:r:r;Útest_subplots_timeseriesBs2
  z3TestDataFramePlotsSubplots.test_subplots_timeseriesc        Cst dddg¡tjdddtjdddtjdd    dgt d
¡t d ¡t d ¡gtjd
d dtjd d dtjd d dgdddgdœ}t|ƒ}ddddg}|D]>}|j|d}| ¡d ¡d}||j    }||k 
¡sšt ‚qšd}t j t|d|jddW5QRXdS)NrééiöÿÿÿÚs)Úunitr
ÚmÚhú2017-08-01 00:00:00ú2017-08-01 02:00:00ú2017-08-02 00:00:00T©ÚutcZThisZshouldZfail)ÚnumericÚ    timedeltaÚdatetime_no_tzÚdatetime_all_tzÚtextrTrUrVrW)Úyrzno numeric data to plot©ÚmatchrX)r#ÚarrayÚpdZ    TimedeltaÚ to_datetimerr)Ú    get_linesÚget_dataÚvaluesÚallr,ÚpytestÚraisesÚ    TypeError)    r5ÚdataÚtestdataZy_colsÚcolr8ÚresultÚexpectedÚmsgr:r:r;Útest_subplots_timeseries_y_axisbs2   ýý   ýï  
z:TestDataFramePlotsSubplots.test_subplots_timeseries_y_axisz6not support for period, categorical, datetime_mixed_tz)ÚreasoncCst dddg¡tjdddtjdddtjdddgtjd    d
d gd d
d    gd d tjdddt d¡t d¡gdœ}t|ƒ}|jddd}| ¡d     ¡d|dj
k  ¡s®t ‚|jddd}| ¡d     ¡d|dj
k  ¡sât ‚|jddd}| ¡d     ¡d|dj
k  ¡st ‚dS)aÉ
        This test will fail for:
            period:
                since period isn't yet implemented in ``select_dtypes``
                and because it will need a custom value converter +
                tick formatter (as was done for x-axis plots)
 
            categorical:
                 because it will need a custom value converter +
                 tick formatter (also doesn't work for x-axis, as of now)
 
            datetime_mixed_tz:
                because of the way how pandas handles ``Series`` of
                ``datetime`` objects with different timezone,
                generally converting ``datetime`` objects in a tz-aware
                form could help with this problem
        rrIrJrOÚH)rAz2017-08-01 02:00rQÚcÚbÚaF)Ú
categoriesZorderedTrRrP)rTÚperiodÚ categoricalÚdatetime_mixed_tzrTrs)ÚxrYrrtruN) r#r\r]ZPeriodZ Categoricalr^rr)r_r`rarbr,)r5rfrgZ    ax_periodZax_categoricalZax_datetime_mixed_tzr:r:r;Ú-test_subplots_timeseries_y_axis_not_supported„s:   ýÿ ýöÿ
ÿÿ
ÿÿzHTestDataFramePlotsSubplots.test_subplots_timeseries_y_axis_not_supportedc    CsŒttj dd¡ttjdd…ƒd}|jddd}|j|ddd|j    dksPt
‚|jddd}|j|ddd|j    dks|t
‚|jdd    d}|j|ddd|j    dks¨t
‚|jdd
d}|j|dd
d|j    d
ksÔt
‚|jdd d}|j|dd
d|j    d
kst
‚|jdd d}|j|dd d|j    d ks0t
‚d}t j t |d|jdddW5QRXd}t j t |d|jdddW5QRXdS)Nr
r r T©rIrI©rrr©r!rI©rIr!)ré)r!r|)r|r!)r|rz1Layout of 1x1 must be larger than required size 3rZ©rrz1At least one dimension of layout must be positive)r!r!)rr#r$r%r&r'r(r)r*r+r,rcrdÚ
ValueError)r5r6r7rkr:r:r;Ú!test_subplots_layout_multi_column·s2$z<TestDataFramePlotsSubplots.test_subplots_layout_multi_columnz:kwargs, expected_axes_num, expected_layout, expected_shaperr}©rr)r r cCsZttj dd¡ttjdd…ƒd}|jfddi|—Ž}|j|||d|j    |ksVt
‚dS)Nr
rr rTr) rr#r$r%r&r'r(r)r*r+r,)r5ÚkwargsZexpected_axes_numZexpected_layoutZexpected_shaper6r7r:r:r;Ú"test_subplots_layout_single_columnÜs $ýz=TestDataFramePlotsSubplots.test_subplots_layout_single_columnc    Csft d¡Rttj dd¡ƒ}|jdddttj dd¡tdddd}|jdddW5QRXdS)    Nédr|T)r rIryú1/1/2000©rBr )ÚtmÚassert_produces_warningrr#r$Úrandnr)r©r5r6r:r:r;Útest_subplots_warningsðs 
ÿz1TestDataFramePlotsSubplots.test_subplots_warningsc    Csx|j dd¡\}}ttj dd¡ttjdd…ƒd}|j    d|dddd}|j
|dd    d
|j d ksjt ‚|dj |ks|t ‚|j    d|d ddd}|j
|dd    d
|j d ks°t ‚|dj |ksÂt ‚|j
|d dd
t ¡d}tjt|d&|j dd¡\}}|j    d|dW5QRX|j dd¡\}}t ¡²t dt¡ttj dd¡ttjdd…ƒd}|j    d|dddd}|j
|ddd
|j dks˜t ‚|j    d|dddd}|j
|ddd
|j dksÌt ‚|j    d|dddd}W5QRX|j
|ddd
|j dks
t ‚|j d d ¡\}}ttj dd ¡ttjdd…ƒd}|j    d|gddd}|j
|d dd
|j dkstt ‚dS)NrIr r
r TrF)rr8rÚsharey)rr rrré)rIr z@The number of passed axes must be 3, the same as the output plotrZ©rr8Úignorer|)rIr)rr8rrr‹rx)r|r{rzr}r€)Úpltrrr#r$r%r&r'r(r)r*r+r,Úfigurer†Úclosercrdr~ÚwarningsÚcatch_warningsÚ simplefilterÚ UserWarning)r5Úfigr7r6Úreturnedrkr:r:r;Útest_subplots_multiple_axesüsh$
 $ÿÿÿ$z6TestDataFramePlotsSubplots.test_subplots_multiple_axescCsX|jjddddd\}}|jjdddddttj dd    ¡td
d dd d }t|     ¡ƒD]\}}||j
|ddqX|dd…     ¡D]}|j |  ¡ddq„|d     ¡D]}|j |  ¡ddq¨|dddgdgf     ¡D]}|j |  ¡ddqØ|dddgdgf     ¡D]}|j |  ¡ddq|dddgdgf     ¡D]}|j |  ¡ddq:dS)Nr T)rr‹gš™™™™™©?gffffffî?g333333Ó?)ÚleftÚrightZhspaceZwspacer
é    r=r>r?r rJ)r8rFrr!FrrrI)rrZsubplots_adjustrr#r$rˆrÚ    enumerateÚravelr)r0r2r4)r5r–r7r6Úir8r:r:r;Útest_subplots_ts_share_axes7s$  þz6TestDataFramePlotsSubplots.test_subplots_ts_share_axescCs°ddddgddddgddddgd    œ}t|td
d ƒd }|d dgjdd}|dj|ddd|j|d ¡dd|j|d ¡dd| ¡D]}|j| ¡ddq”dS)Nçð?g@g@g@rJrr r|)ÚAÚBÚCz
2014 10 11z
2014 10 14r r¡r¢T©rr£r)r8Ú secondary_yFr)rrr)r0r2rr4)r5Údr6r7r8r:r:r;Ú'test_subplots_sharex_axes_existing_axesTs$ zBTestDataFramePlotsSubplots.test_subplots_sharex_axes_existing_axescCsættj dd¡tdƒd}|jdd}|D]&}|j|dgdt|jƒdks*t    ‚q*t
  ¡|jddd    }|D]&}|j|dgdt|jƒdkslt    ‚qlt
  ¡|jdd
}|j|d gddt|jƒd ksÎt    ‚t|j jƒdksât    ‚dS) NrJZaaaaa©r.Tr¤rqrr)rr¥)r¥z    a (right)r) rr#r$r%r&r)r/ÚlenÚlinesr,r†r‘Zright_ax)r5r6r7r8r:r:r;Útest_subplots_dup_columnsas  z4TestDataFramePlotsSubplots.test_subplots_dup_columnszWeird rounding problemsF)rmÚstrictcCs^t ddddg¡}tdgdttddƒƒd    œtdƒd
}|jjd d d }t |j     
¡|¡dS) N皙™™™™¹?r ç$@rƒr rJrrŒ©r¡r¢r T)ÚgridÚlog) r#r\rr&Úranger)rr†Úassert_numpy_array_equalÚyaxisÚ get_ticklocs)r5rjr6r8r:r:r;Útest_bar_log_no_subplotsvs&z3TestDataFramePlotsSubplots.test_bar_log_no_subplotscCsnt ddddddg¡}ttddgƒtdd    gƒgƒjjd
d
d }t |d j     ¡|¡t |d j     ¡|¡dS)Nr­r r®gY@g@@gˆÃ@éÈi,iôT)r±rrr)
r#r\rrr)rr†r³r´rµ)r5rjr8r:r:r;Útest_bar_log_subplots…sÿz0TestDataFramePlotsSubplots.test_bar_log_subplotscCsl|}|jjdd}t|tƒs t‚|j|ddddgddD],}|jj|dd}|j||dddgd    d
q:dS) NTr¤ÚheightZweightÚcategory)Ú expected_keys)Údictr7Zboth)Ú return_typerF)r»Zcheck_ax_title)r)ZboxÚ
isinstancerr,Z_check_box_return_type)r5Zhist_dfr6riÚtr—r:r:r;Ú!test_boxplot_subplots_return_type”s ÿüz<TestDataFramePlotsSubplots.test_boxplot_subplots_return_typec    Cs<ddlm}ttj dd¡tdddtdƒd}|jddd    d
\}}|j    d    |d }|D](}t
|j ƒdkslt ‚|j | ¡d    d qV|j |d ¡d d |j |djd    dd d |j |d ¡d    d |j |djd    dd    d t ¡| dd¡\}}t t¡|j    d    |d    d}W5QRX|D],}t
|j ƒdks:t ‚|j | ¡d    d q"|j |d ¡d d |j |djd    dd d |j |d ¡d    d |j |djd    dd    d t ¡| dd¡\}}|j    d    |d }|D]T}t
|j ƒdksòt ‚|j | ¡d    d |j | ¡d    d |j |jd    dd    d qÚt ¡dS)Nrr
rIr„r…ZAB)r r.rT)rrrFr)rr8r)Zmatplotlib.pyplotZpyplotrr#r$rˆrr&rr)r©rªr,r0r4r2r†r‘r‡r•)r5rr6r–r7r8r:r:r;Ú$test_df_subplots_patterns_minorticks§sF  
ý z?TestDataFramePlotsSubplots.test_df_subplots_patterns_minortickscCs¦ttj dd¡ƒ}tj|jdd…df<tj|jdd…df<|j dd¡\}}|jj    |dddt 
d    dd
¡}t 
d dd
¡}t   |d  ¡|¡t   |d  ¡|¡dS) Nr
rIrJrrTF)r8rrg@çà?çà¿)rr#r$r%ÚnanZilocrrr)rÚaranger†r³Z
get_xticks)r5r6ZfigsZaxsZ expected_ax1Z expected_ax2r:r:r;Útest_subplots_sharex_falseÕsz5TestDataFramePlotsSubplots.test_subplots_sharex_falsec
Csœtddd}ttj dd¡|d}i}t|jjdƒr<d|d<|jjd |Ž\}}t     
d¡:|j |d
d t    j dd }|j  |¡W5QRXW5QRXdS)NÚnowr
)r@rBr r Zget_constrained_layoutTZconstrained_layoutrIr)r8)Zreturn_filelike)rI)rrr#r$r%ÚhasattrrZFigurerr†r‡r)Z ensure_cleanZsavefig)r5rGr6rr–r7Úpathr:r:r;Ú test_subplots_constrained_layoutås  z;TestDataFramePlotsSubplots.test_subplots_constrained_layoutz index_name, old_label, new_label)NÚÚnew)ÚoldrÍrÌ)NrËrË)NrËrNrËrIrrrrcs¬tddgddggddgd}||j_|j|dd}td    d
„|DƒƒsHt‚t‡fd d
„|Dƒƒsbt‚|j|ˆˆdd }t‡fd d
„|DƒƒsŽt‚t‡fdd
„|Dƒƒs¨t‚dS)NrrIrJzType AzType Br¨T©rrcss|]}| ¡dkVqdS)rËN)Ú
get_ylabel©Ú.0r8r:r:r;Ú    <genexpr>szSTestDataFramePlotsSubplots.test_xlabel_ylabel_dataframe_subplots.<locals>.<genexpr>c3s|]}| ¡ˆkVqdS©N)Ú
get_xlabelrÐ)Ú    old_labelr:r;rÒs)rZylabelZxlabelrc3s|]}| ¡tˆƒkVqdSrÓ)rÏÚstrrЩÚ    new_labelr:r;rÒ sc3s|]}| ¡tˆƒkVqdSrÓ)rÔrÖrÐr×r:r;rÒ s)rr Únamer)rbr,)r5rZ
index_namerÕrØr6r7r:)rØrÕr;Ú%test_xlabel_ylabel_dataframe_subplotsòsz@TestDataFramePlotsSubplots.test_xlabel_ylabel_dataframe_subplotsrT)rÚstackedçÍÌÌÌÌÌì?©rrÛÚwidthrrΩrrrÞÚedge)rrÛÚalign)rrÛrÞrá)rrrá)rrrÞrácCs6tdgdttdƒƒdœtdƒd}|j|f|ŽdS)Nr rJr¯r )rr&r²Ú_check_bar_alignment©r5rr6r:r:r;Útest_bar_align_multiple_columnss#$z:TestDataFramePlotsSubplots.test_bar_align_multiple_columnscCs"ttj d¡ƒ}|j|f|ŽdS)NrJ©rr#r$rˆrârãr:r:r;Útest_bar_align_single_column4s z7TestDataFramePlotsSubplots.test_bar_align_single_columncCs.ttj dd¡ƒ}|j|fdddœ|—ŽdS)NrJrÜgš™™™™™É?)rÞÚpositionrårãr:r:r;Útest_bar_barwidth_positionCs z5TestDataFramePlotsSubplots.test_bar_barwidth_positionÚwr c
Csˆttj dd¡ƒ}|jjd|d}|j ¡}t     |t 
dddddg¡¡|  ¡d    ksXt ‚|j d ¡d
ksnt ‚|j d  ¡d ks„t ‚dS) NrJT)rÛrÞrrrIr r|)gè¿g@rÃr!g @)rr#r$rˆr)rr1rµr†r³r\Úget_xlimr,ÚpatchesÚget_x)r5rér6r8Zticksr:r:r;Útest_bar_barwidth_position_intRs
z9TestDataFramePlotsSubplots.test_bar_barwidth_position_intcCspttj dd¡ƒ}|j|dddd|j|dddd|j|dddd|j|dddd|j|dddddS)    NrJrTrrÝrFrßrår‰r:r:r;Ú&test_bar_barwidth_position_int_width_1^s zATestDataFramePlotsSubplots.test_bar_barwidth_position_int_width_1ÚcenterrÂc    Cs:|j||||||dd}| |¡}|D] }    |dkrp|    j}
|     ¡\} } tdd„|    jDƒƒ} tdd„|    jDƒƒ}nH|dkr´|    j}
|     ¡\} } tdd„|    jDƒƒ} td    d„|    jDƒƒ}nt    ‚t
  | | d
¡t
  | |d
¡|    jd }|dkr|dksþ|dkr|  ¡}||  ¡|}n¸|dkrT|d krT|  ¡|  ¡t|jƒ|}|  ¡}n||dkr|dksr|dkr| ¡| ¡|}| ¡}n@|dkrÌ|d krÌ| ¡| ¡t|jƒ|}| ¡}nt    ‚|
 ¡t t|ƒ¡k ¡sðt‚|d krt
  |
 ¡d |¡q&|dkr0t
  |
 ¡d |¡q&t    ‚q&|S)NT)rrÛrrárÞrçr°rcss|]}| ¡VqdSrÓ)rì©rÑÚpr:r:r;rҁszBTestDataFramePlotsSubplots._check_bar_alignment.<locals>.<genexpr>css|]}| ¡| ¡VqdSrÓ)rìÚ    get_widthrðr:r:r;r҂srcss|]}| ¡VqdSrÓ)Úget_yrðr:r:r;r҆scss|]}| ¡| ¡VqdSrÓ)róÚ
get_heightrðr:r:r;r҇sgÐ?rFrïrà)r)Z_flatten_visibler1rêÚminrëÚmaxr´Zget_ylimr~r†Zassert_almost_equalrìròr©r.rórôrµr#rÅrbr,)r5r6rrÛrrárÞrçr7r8ZaxisZax_minZax_maxZmin_edgeZmax_edgerñràrïr:r:r;râgsZ
ù
 
 
 
 
 
 
 
 
z/TestDataFramePlotsSubplots._check_bar_alignment)rFFrïrÂrÂ)"Ú__name__Ú
__module__Ú __qualname__rcÚmarkZslowr<rHrlZxfailrwrZ parametrizer‚rŠr˜rŸr§r«rrr¶r¸rÀrÁrÆrÊrÚrärærèrírîrâr:r:r:r;r    sØ
& " 
2%
þþ
 
; ý
 
ý
 
.  ûþ
 
 
 
 
 
 
 
 
 
 
 
 
 äþ!
úþ
úþ
 
 ør    )Ú__doc__r'r’Únumpyr#rcZ pandas.compatrZpandas.compat.numpyrZpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr]rrrZpandas._testingZ_testingr†Zpandas.tests.plotting.commonrZpandas.io.formats.printingrZskip_if_no_mplr    r:r:r:r;Ú<module>s