hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
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
Ë
nñúh7<ãó´—ddlmZddlmZddlmZddlZddlmZddl    Zddl
Z ddl m Z ddlmZddlmZmZmZer.dd    lmZmZdd
lmZdd lmZdd lmZdd lmZddl    mZddl m!Z!m"Z"dd„Z#dd„Z$dd„Z%    d             d!d„Z&        d"                            d#d„Z'                            d$                                    d%d„Z(d&d„Z)d'd„Z*                                                                d(d„Z+d)d„Z,                d*                    d+d„Z-d,d„Z.d-d„Z/y).é)Ú annotations)Úceil)Ú TYPE_CHECKINGN)Úticker)Úfind_stack_level)Ú is_list_like)Ú ABCDataFrameÚABCIndexÚ    ABCSeries)ÚIterableÚSequence)ÚAxes)ÚAxis)ÚFigure)ÚLine2D)ÚTable)Ú    DataFrameÚSeriescó>—t|d«sy|j« S)z+Whether fig has constrained_layout enabled.Úget_constrained_layoutF)Úhasattrr)Úfigs úTH:\Change_password\venv_build\Lib\site-packages\pandas/plotting/_matplotlib/tools.pyÚdo_adjust_figurer's"€ä 3Ð0Ô 1ØØ×)Ñ)Ó+Ð +Ð+ócó@—t|«r|j|i|¤Žyy)zCCall fig.subplots_adjust unless fig has constrained_layout enabled.N)rÚsubplots_adjust)rÚargsÚkwargss   rÚmaybe_adjust_figurer .s$€ä˜Ô؈×јTÐ, VÓ,ðrcó²—|j«D]$}|jd«|j|«Œ&|j«}|t    |d¬«yy)NÚrightgš™™™™™É?)Úbottom)Úget_xticklabelsÚset_horizontalalignmentÚ set_rotationÚ
get_figurer )ÚaxÚrotÚlabelrs    rÚformat_date_labelsr+4sW€à×#Ñ#Ó%ò ˆØ ×%Ñ% gÔ.Ø ×ј3Õð ð -‰-‹/€CØ
€ä˜C¨Ö,ðrc ó—t|t«r|j«}nt|t«rn t    d«‚|€ |j
}|€ |j }|j}tjj|f|||dœ|¤ŽS)Nz&Input data must be DataFrame or Series)ÚcellTextÚ    rowLabelsÚ    colLabels)
Ú
isinstancer Úto_framer    Ú
ValueErrorÚindexÚcolumnsÚvaluesÚ
matplotlibÚtable)r(Údatar.r/rr-s      rr7r7?s€ô$œ    Ô"؏}‰}‹‰Ü    Dœ,Ô    'Ø äÐAÓBÐBàÐØ—J‘Jˆ    àÐØ—L‘Lˆ    à{‰{€Hô × Ñ × !Ñ !Ø
ð àØØñ     ð
ñ  ðrcó —|©t|ttf«rt|«dk7r t    d«‚|\}}|dk(r|dkDrt ||z «|fx}\}}n7|dk(r|dkDr|t ||z «fx}\}}n|dkr|dkr d}t    |«‚||z|krt    d|›d|›d|›«‚|S|d    k(ry
|d k(rd |fS|d k(r|d fSd
ddddœ}    ||S#t $r3d }|dz|kr|d z }|dz|krŒ|d z
|z|k\r    ||d z
fcYS||fcYSwxYw)Néz)Layout must be a tuple of (rows, columns)éÿÿÿÿrz1At least one dimension of layout must be positivez
Layout of Úxz# must be larger than required size Úsingle)ér>Ú
horizontalr>Úvertical)r>r:)r:r:)r>r:éé)r0ÚtupleÚlistÚlenr2rÚKeyError)ÚnplotsÚlayoutÚ layout_typeÚnrowsÚncolsÚmsgÚlayoutsÚks        rÚ _get_layoutrO\s‡€ð
Ðܘ&¤5¬$ -Ô0´C¸³KÀ1Ò4DÜÐHÓIÐ Ià‰ ˆˆuà BŠ;˜5 1š9Ü%)¨&°5©.Ó%9¸5Ð$AÐ AˆF‘\U™EØ bŠ[˜U QšYØ%*¬D°¸%±Ó,@Ð$AÐ AˆF‘\U™EØ aŠZ˜E QšJØEˆCܘS“/Ð !à 5‰=˜6Ò !ÜØ˜U˜G 1 U GÐ+NÈvÈhÐWóð ðˆ àhÒØØ    ˜ Ò    $ؐ6ˆ{ÐØ    ˜
Ò    "ؘˆ{Ðà˜V¨°6Ñ:€Gð
ؐv‰ÐøÜ òØ ˆØ‰dVŠmØ ‰FˆAð‰dV‹m𠐉EQ‰;˜&Ò  Øq˜1‘u:Ò àa4ŠKðúsà CàD Ã2D ÄD Ä D c     ó†—ddlm}    |€i}|€|    jdi|¤Ž}
nt|«rš|r t    |«}|$t j dtt«¬«|s|r$t j dtt«¬«|j|k(r!|jdj«}
|
|fStd|›d«‚|j«}
|dk(r|r|
|fS|
t    |«fSt j d    tt«¬«|
j«t|||¬
«\} } | | z} tj | t"¬ «}|
j$| | dfi|¤Ž}|r||d <|r||d <||d<t'd| «D]>}|j)«}||k\r
d|d <d|d <|
j$| | |dzfi|¤Ž}|||<Œ@|| k7r||dD]}|j+d«Œt-|| || | ||«|r2| dk(r    |d}|
|fS|j/| | «j1«}|
|fS|j/| | «}|
|fS)a”    
    Create a figure with a set of subplots already made.
 
    This utility wrapper makes it convenient to create common layouts of
    subplots, including the enclosing figure object, in a single call.
 
    Parameters
    ----------
    naxes : int
      Number of required axes. Exceeded axes are set invisible. Default is
      nrows * ncols.
 
    sharex : bool
      If True, the X axis will be shared amongst all subplots.
 
    sharey : bool
      If True, the Y axis will be shared amongst all subplots.
 
    squeeze : bool
 
      If True, extra dimensions are squeezed out from the returned axis object:
        - if only one subplot is constructed (nrows=ncols=1), the resulting
        single Axis object is returned as a scalar.
        - for Nx1 or 1xN subplots, the returned object is a 1-d numpy object
        array of Axis objects are returned as numpy 1-d arrays.
        - for NxM subplots with N>1 and M>1 are returned as a 2d array.
 
      If False, no squeezing is done: the returned axis object is always
      a 2-d array containing Axis instances, even if it ends up being 1x1.
 
    subplot_kw : dict
      Dict with keywords passed to the add_subplot() call used to create each
      subplots.
 
    ax : Matplotlib axis object, optional
 
    layout : tuple
      Number of rows and columns of the subplot grid.
      If not specified, calculated from naxes and layout_type
 
    layout_type : {'box', 'horizontal', 'vertical'}, default 'box'
      Specify how to layout the subplot grid.
 
    fig_kw : Other keyword arguments to be passed to the figure() call.
        Note that all keywords not recognized above will be
        automatically included here.
 
    Returns
    -------
    fig, ax : tuple
      - fig is the Matplotlib Figure object
      - ax can be either a single axis object or an array of axis objects if
      more than one subplot was created.  The dimensions of the resulting array
      can be controlled with the squeeze keyword, see above.
 
    Examples
    --------
    x = np.linspace(0, 2*np.pi, 400)
    y = np.sin(x**2)
 
    # Just a figure and one subplot
    f, ax = plt.subplots()
    ax.plot(x, y)
    ax.set_title('Simple plot')
 
    # Two subplots, unpack the output array immediately
    f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
    ax1.plot(x, y)
    ax1.set_title('Sharing Y axis')
    ax2.scatter(x, y)
 
    # Four polar axes
    plt.subplots(2, 2, subplot_kw=dict(polar=True))
    rNz6When passing multiple axes, layout keyword is ignored.)Ú
stacklevelzoWhen passing multiple axes, sharex and sharey are ignored. These settings must be specified when creating axes.z"The number of passed axes must be z, the same as the output plotr>zTTo output multiple subplots, the figure containing the passed axes is being cleared.)rHrI©ÚdtypeÚsharexÚshareyF©)Úmatplotlib.pyplotÚpyplotÚfigurerÚ flatten_axesÚwarningsÚwarnÚ UserWarningrÚsizeÚflatr'r2ÚclearrOÚnpÚemptyÚobjectÚ add_subplotÚrangeÚcopyÚ set_visibleÚhandle_shared_axesÚreshapeÚsqueeze)ÚnaxesrTrUrjÚ
subplot_kwr(rHrIÚfig_kwÚpltrrJrKrGÚaxarrÚax0ÚiÚkwdsÚaxess                   rÚcreate_subplotsrtŽs•€õj$àÐØˆ
à    €z؈cj‰jÑ"˜6Ñ"Šä ˜Ô ÙÜ! "Ó%ØÐ!Ü— ‘ ØLÜÜ/Ó1õñ
™Ü— ‘ ðXäÜ/Ó1õ    ð w‰w˜%ÒØ—g‘g˜a‘j×+Ñ+Ó-Ø˜Bwä Ø8¸¸ð@.ð.óðð
m‰m‹oˆà AŠ:ÙØ˜BwàœL¨Ó,Ð,Ð,ä M‰Mð4äÜ+Ó-õ     ð I‰IŒKä˜u¨VÀÔML€Eˆ5Ø U‰]€Fô H‰HV¤6Ô *€Eð ˆ#/‰/˜% ¨Ñ
8¨ZÑ
8€Cá Ø"ˆ
8ÑÙ Ø"ˆ
8ÑØ€Eˆ!Hô1fÓ ò    ˆØ‰Ó ˆð Š:Ø!ˆD‰NØ!ˆD‰NØ ˆS_‰_˜U E¨1¨q©5Ñ 9°DÑ 9ˆØˆˆaŠð    ð ‚ؘ˜-ò    "ˆBØ N‰N˜5Õ !ð    "ôu˜f e¨U°E¸6À6ÔJáð QŠ;ؘ‘8ˆD𠐈9Ðð —=‘= ¨Ó.×6Ñ6Ó8ˆDð
ˆ9Ðð}‰}˜U EÓ*ˆà ˆ9Ðrcó—|j«D]}|jd«Œt|j«tj
«r#|j t    j««t|j«tj«r$|jt    jd««|j«D]}|jd«Œ|j«jd«y)NFÚ)Úget_majorticklabelsrgr0Úget_minor_locatorrÚ NullLocatorÚset_minor_locatorÚ AutoLocatorÚget_minor_formatterÚ NullFormatterÚset_minor_formatterÚFormatStrFormatterÚget_minorticklabelsÚ    get_label)ÚaxisÚts  rÚ_remove_labels_from_axisr„FsÅ€Ø × %Ñ %Ó 'òˆØ     ‰ eÕðô
$×(Ñ(Ó*¬F×,>Ñ,>Ô?Ø ×Ñœv×1Ñ1Ó3Ô4ܐ$×*Ñ*Ó,¬f×.BÑ.BÔCØ × Ñ ¤×!:Ñ!:¸2Ó!>Ô?Ø × %Ñ %Ó 'òˆØ     ‰ eÕðð    ‡NNÓ× Ñ  Õ'rcóF—|dk(r|j«}n!|dk(r|j«}n td«‚|j|«}|j    «j «}|D]6}t j||j    «j ««rŒ6yy)aA
    Return whether an axis is externally shared.
 
    Parameters
    ----------
    ax1 : matplotlib.axes.Axes
        Axis to query.
    compare_axis : str
        `"x"` or `"y"` according to whether the X-axis or Y-axis is being
        compared.
 
    Returns
    -------
    bool
        `True` if the axis is externally shared. Otherwise `False`.
 
    Notes
    -----
    If two axes with different positions are sharing an axis, they can be
    referred to as *externally* sharing the common axis.
 
    If two axes sharing an axis also have the same position, they can be
    referred to as *internally* sharing the common axis (a.k.a twinning).
 
    _handle_shared_axes() is only interested in axes externally sharing an
    axis, regardless of whether either of the axes is also internally sharing
    with a third axis.
    r<ÚyzD_has_externally_shared_axis() needs 'x' or 'y' as a second parameterTF)Úget_shared_x_axesÚget_shared_y_axesr2Ú get_siblingsÚ get_positionÚ
get_pointsraÚ array_equal)Úax1Ú compare_axisrsÚ axes_siblingsÚ
ax1_pointsÚax2s      rÚ_has_externally_shared_axisr’Vs¢€ð:sÒØ×$Ñ$Ó&‰Ø    ˜Ò    Ø×$Ñ$Ó&‰äØ Ró
ð    
ð×%Ñ% cÓ*€Mð×!Ñ!Ó#×.Ñ.Ó0€JàòˆÜ~‰~˜j¨#×*:Ñ*:Ó*<×*GÑ*GÓ*IÕJÙðð rcó^—|dkDrâd„}d„}d„}    |dkDr™    tj|dz|dzftj¬«}
|D]#} | j«|
|| «|| «f<Œ%|D]=} |
|| «dz|| «fsŒ|s t    | d«sŒ)t | j «Œ?    |dkDr5|D]/} |    | «rŒ |s t    | d«sŒt | j«Œ1yyy#t$r:d„} |D]/} | | «rŒ |s t    | d«sŒt | j «Œ1YŒ~wxYw)    Nr>cóJ—|j«jjS©N)Úget_subplotspecÚrowspanÚstart©r<s rú<lambda>z$handle_shared_axes.<locals>.<lambda>’ó€˜A×-Ñ-Ó/×7Ñ7×=Ñ=€rcóJ—|j«jjSr•)r–Úcolspanr˜r™s rršz$handle_shared_axes.<locals>.<lambda>“r›rcó>—|j«j«Sr•)r–Ú is_first_colr™s rršz$handle_shared_axes.<locals>.<lambda>•s€ ×!2Ñ!2Ó!4×!AÑ!AÓ!C€rrRr<có>—|j«j«Sr•)r–Ú is_last_rowr™s rršz$handle_shared_axes.<locals>.<lambda>«s€¨×(9Ñ(9Ó(;×(GÑ(GÓ(I€rr†)    raÚzerosÚbool_Ú get_visibler’r„ÚxaxisÚ
IndexErrorÚyaxis) rorGrkrJrKrTrUÚrow_numÚcol_numrŸrHr(r¡s              rrhrhˆsT€ð‚zÙ=ˆÙ=ˆáCˆ à 1Š9ð ;ôŸ™ 5¨1¡9¨e°a©iÐ"8ÄÇÁÔIØòHBØ79·~±~Ó7GF™7 2›;©°« Ð3Ò4ðHð ò;Bð"¡'¨"£+°¡/±7¸2³;Ð">Ò?Ø ÙÔ!<¸RÀÕ!EÜ0°·±Õ:ñ;ð& 1Š9Øò 7ñ  Ô#ØÙÔ8¸¸SÕAÜ,¨R¯X©XÕ6ñ 7ð ðCøô.ò ;ñJ Øò;BÙ" 2”Ø ÙÔ!<¸RÀÕ!EÜ0°·±Õ:ò    ;ð     ;ús•A?C)ÂC)Ã)(D,ÄD,Ä+D,cóô—t|«stj|g«St|tjt
f«r#tj |«j«Stj|«Sr•)rraÚarrayr0Úndarrayr
ÚasarrayÚravel)rss rrZrZ½sT€Ü ˜Ô ܏x‰x˜˜ÓÐÜ    Dœ2Ÿ:™:¤xÐ0Ô    1܏z‰z˜$Ó×%Ñ%Ó'Ð'Ü 8‰8D‹>ÐrcóL—ddlm}t|«D]}|!|j|j    «|¬«|!|j|j    «|¬«|!|j|j «|¬«|€Œo|j|j «|¬«Œ‘|S)Nr)Úfontsize)Úrotation)rWrXrZÚsetpr$Úget_yticklabels)rsÚ
xlabelsizeÚxrotÚ
ylabelsizeÚyrotrnr(s       rÚset_ticks_propsr¸Åsž€õ$ä˜4Ó ò:ˆØ Ð !Ø H‰HR×'Ñ'Ó)°JˆHÔ ?Ø Ð Ø H‰HR×'Ñ'Ó)°DˆHÔ 9Ø Ð !Ø H‰HR×'Ñ'Ó)°JˆHÔ ?Ø Ñ Ø H‰HR×'Ñ'Ó)°DˆHÕ 9ð:ð €Krcóʗ|j«}t|d«r||jj«z }t|d«r||jj«z }|S)NÚright_axÚleft_ax)Ú    get_linesrrºr»)r(Úliness  rÚ get_all_linesr¾ÚsT€Ø L‰L‹N€Eäˆr:ÔØ —‘×&Ñ&Ó(Ñ(ˆäˆr9ÔØ —‘×%Ñ%Ó'Ñ'ˆà €Lrcóú—tjtj }}|D]R}|jd¬«}ttj|«|«}t tj |«|«}ŒT||fS)NF)Úorig)raÚinfÚ    get_xdataÚminÚnanminÚmaxÚnanmax)r½Úleftr"Úliner<s     rÚget_xlimrÉæsh€Ü—&‘&œ2Ÿ6™6˜'ˆ%€DØò)ˆØ N‰N ˆNÓ &ˆÜ”2—9‘9˜Q“< Ó&ˆÜ”B—I‘I˜a“L %Ó(‰ð)𠐈;Ðr)rrÚreturnÚbool)rrrÊÚNone)r(rrÊrÌ)NN)r8zDataFrame | SeriesrÊr)NÚbox)rGÚintrHztuple[int, int] | NonerIÚstrrÊztuple[int, int])FFTNNNrÍ)
rkrÎrTrËrUrËrjrËrIrÏ)r‚rrÊrÌ)rrrŽrÏrÊrË)rozIterable[Axes]rGrÎrkrÎrJrÎrKrÎrTrËrUrËrÊrÌ)rsúAxes | Sequence[Axes]rÊz
np.ndarray)NNNN)rsrÐr´ú
int | Noner¶rÑ)r(rrÊz list[Line2D])r½zIterable[Line2D]rÊztuple[float, float])0Ú
__future__rÚmathrÚtypingrr[r6rÚmatplotlib.tableÚnumpyraÚpandas.util._exceptionsrÚpandas.core.dtypes.commonrÚpandas.core.dtypes.genericr    r
r Úcollections.abcr r Úmatplotlib.axesrÚmatplotlib.axisrÚmatplotlib.figurerÚmatplotlib.linesrrÚpandasrrrr r+r7rOrtr„r’rhrZr¸r¾rÉrVrrú<module>ràsðå"åÝ ÛåÛÛå4å2÷ññ ÷õ
%Ý$Ý(Ý'Ý&÷ó ,ó-ó -ð=AðØ ðà
óð>&*Øð,Ø ð,à "ð,ðð,ðó    ,ðhØØØØ Ø ØðuØ ðuà ðuð ðuðð    uðóuóp (ó /ðd27Ø ð27à ð27ð ð27ð ð    27ð
ð 27ð ð 27ð ð27ð
ó27ójð"Ø     Ø!Ø     ð Ø
ðàððó    ó*    ôr