Files
intellecton/venv/lib/python3.12/site-packages/matplotlib/__pycache__/text.cpython-312.pyc
T

897 lines
82 KiB
Plaintext
Raw Normal View History

Ë
†RãóJdZddlZddlZddlZddlmZddlZddlZddl Z
ddl m Z m
Z
mZmZddl
mZddlmZddlmZmZmZdd lmZmZdd
lmZmZmZmZmZm Z ejBe"«Z#d Z$d Z%ejLd
«d«Z'ejPe jRdgddgdgdgdgdgdgdgdgdgdgdgdœ «Gdde«««Z*Gdd «Z+Gd!„d"«Z,Gd#„d$e*e,«Z-ejPj]e-j^j¬%«y)&z)
Classes for including text in a figure.
éN)ÚRealé)Ú_apiÚartistÚcbookÚ
_docstring)ÚArtist)ÚFontProperties)ÚFancyArrowPatchÚFancyBboxPatchÚ Rectangle)ÚTextPathÚ
TextToPath)ÚAffine2DÚBboxÚBboxBaseÚBboxTransformToÚIdentityTransformÚ Transformcó0g}g}tj|j««}t«j | «}|j |«\}}}|D]W\} }
} } |
\}
}|j
| | f«\}}||z}||
z||z}}|j||g«|j||g«ŒYt|«t|«}}t|«|z
t|«|z
}}t«j |«j
||f«\}}||||fS)
Calculate the bounding box of the text.
The bbox position takes text rotation into account, but the width and
height are those of the unrotated box (unlike `.Text.get_window_extent`).
)
ÚnpÚdeg2radÚ get_rotationrÚrotateÚ _get_layoutÚ transformÚextendÚminÚmax)ÚtextÚrendererÚ projected_xsÚ projected_ysÚthetaÚtrÚpartsÚwhÚxt1Úyt1Úxt2Úyt2Úxt_boxÚyt_boxÚw_boxÚh_boxÚx_boxÚy_boxs úR/home/antigravity/intellecton/venv/lib/python3.12/site-packages/matplotlib/text.pyÚ _get_textboxr:s*ð€LØ€Lä J‰J +€EÜ × Ñ ˜E˜6Ó "€Bà×" ,K€A€uˆò(‰ ˆˆ2ˆqˆˆ—<<  A Ó'‰ˆˆ ˆq‰ˆØ˜‘7˜C !™GˆSˆà×јS #˜JÔ×јS #˜˜Ó¨LÓ(9ˆF€FÜ$ -¬s°<Ó/@À6Ñ/Iˆ5€Eä“:×$ +×5°v¸vÐ6FÓGL€Eˆ5à %˜ Ð cóbttj|«||j«||«S)zECall ``renderer.get_text_width_height_descent``, caching the results.)Ú!_get_text_metrics_with_cache_implÚweakrefÚrefÚcopy)r!r ÚfontpropÚismathÚdpis r9Ú_get_text_metrics_with_cacherDAs-ô  ˜t X§]¡]£_°f¸ CðCr;icó2|«j|||«S©N)Úget_text_width_height_descent)Ú renderer_refr rArBrCs r9r=r=Isñ >× 7¸¸hÈÓ Or;ÚfontÚfont_propertiesÚfamilyÚnameÚsizeÚstretchÚstyleÚvariantÚweightÚhaÚvaÚma) ÚcolorÚfontpropertiesÚ
fontfamilyÚfontnameÚfontsizeÚ fontstretchÚ fontstyleÚ fontvariantÚ
fontweightÚhorizontalalignmentÚverticalalignmentÚmultialignmentcóˆeZdZdZdZe«ZdZ dRddddddddddddddœ
ˆfd „ Z dSd
Z ˆfd Z
ˆfd Z d
Z dZ
dZdZdZdZdZdZdZdZˆfdZdZdZdZdZdZˆfdZdTˆfd„ ZˆfdZd „Zd!„Z d"„Z!d#„Z"d$„Z#d%„Z$e%jLd&„«Z'd'„Z(d(„Z)d)„Z*d*„Z+d+„Z,d,„Z-d-„Z.d.„Z/d/„Z0d0„Z1d1„Z2d2„Z3d3„Z4d4„Z5dUd5„Z6d6„Z7d7„Z8d8„Z9d9„Z:d:„Z;d;„Z<d<„Z=d=„Z>d>„Z?d?„Z@d@„ZAdA„ZBdB„ZCdC„ZDdD„ZEdE„ZFdF„ZGdG„ZHdH„ZIdI„ZJdJ„ZKdK„ZLeMjœdL«dM„«ZOdN„ZPdO„ZQdP„ZRdQ„ZSˆxZTS)VÚTextzAHandle storing and drawing of text in window or data coordinates.écóVd|jd|jd|jdS)NzText(ú, ú))Ú_xÚ_yÚ_text©Úselfs r9Ú__repr__z
Text.__repr__es)Øt—wwi˜r $§'¡' ¨"¨T¯Z©Z¨N¸<r;baselineÚleftF)
rVr`r_rarWÚrotationÚ linespacingÚ
rotation_modeÚusetexÚwrapÚtransform_rotates_textÚ
parse_mathÚ antialiasedc
 ó®t|«||c|_|_d|_|j |||| ||
|||| ||
| |¬«|j
|«y)a 
Create a `.Text` instance at *x*, *y* with string *text*.
The text is aligned relative to the anchor point (*x*, *y*) according
to ``horizontalalignment`` (default: 'left') and ``verticalalignment``
(default: 'baseline'). See also
:doc:`/gallery/text_labels_and_annotations/text_alignment`.
While Text accepts the 'label' keyword argument, by default it is not
added to the handles of a legend.
Valid keyword arguments are:
%(Text:kwdoc)s
Ú)r rVrWrsrvrtr`r_rarprurqrrrwN)ÚsuperÚ__init__rhrirjÚ_reset_visual_defaultsÚupdate)rlr+r,r rVr`r_rarWrprqrrrsrtrurvrwÚkwargsÚ __class__s €r9r{z
Text.__init__hssø€ô@ ÑÔØ˜aЈŒØˆŒ
Ø ×ØØØØ/Ø 3ØØ#9Ø
ð
r;có`|j|«|jtj|d««|j |«|j |«|j
tj|d««|j|«|j|«|j|«| |_
|j|
«| |_ d|_
d|_| d} |j| «|j!|
«|j#||«ytj$d«y)Nz
text.colorztext.parse_mathg333333ó?ztext.antialiased)Úset_textÚ set_colorÚmplÚ
_val_or_rcÚset_fontpropertiesÚ
set_usetexÚset_parse_mathÚset_wrapÚset_verticalalignmentÚset_horizontalalignmentÚ_multialignmentÚ set_rotationÚ_transform_rotates_textÚ _bbox_patchÚ _rendererÚset_linespacingÚset_rotation_modeÚset_antialiasedÚrcParams)rlr rVrWrsrvrtr`r_rarprurqrrrws r9r|zText._reset_visual_defaultssð"
Ø ”s—~‘~ e¨\Ó ×Ñ Ô ˜ÔØ ×ÑœCŸN™N¨:Ð7HÓ
Ø ×"Ð#4Ô ×$Ð%8ÔÔØ ×ј(Ô#Ø'=ˆÔˆÔ؈ŒØ Р؈KØ ×ј[Ô ×ј}Ô ×ѨKÐ,C˜ Ÿ\™\Ð*<Ñ ?r;cóhg}tj|t«}t«}|j d|«}||ur |j |j
|««|j d|«}|jt|%|««||ur |j |j|««|S)NrWÚbbox) rÚnormalize_kwargsrcÚobjectÚpopÚappendr…rrzr}Úset_bbox)rlr~ÚretÚsentinelrWr•rs €r9r}z Text.updateÂs˜ø€àˆÜ×´Ó5ˆÜ“8ˆàŸÐ$4°hÓØ  Ñ J‰Jt×.¨~Ó z‰z˜& +ˆØ
”57>   Ø J‰Jt—}}  ˆ
r;có.t|«}d|d<|S)Nr)rzÚ __getstate__)rlr(rs €r9zText.__getstate__Òsø€Ü ‰GÑ Ó àˆˆ+‰Øˆr;cóÀ|j|«s|j«r |jdifStj |«}|j
|j cxkxr|jkncxr.|j|jcxkxr|jknc}i}|jr)|jj|«\}}|xs|}||d<||fS)zs
Return whether the mouse event occurred inside the axis-aligned
bounding-box of the text.
bbox_patch)
Ú_different_canvasÚ get_visiblerrcÚget_window_extentÚx0r+Úx1Úy0r,Úy1rŽÚcontains)rlÚ
mouseeventr•ÚinsideÚcattrÚ patch_insideÚ patch_cattrs r9z
Text.containsØð
× "  .°d×6FÑ6FÔ6HØ—>˜" ô×% +ˆØ—''˜ZŸ\™\Ö4¨T¯W©WÔ—g‘g §¡Ö·±Ô àˆð × Ò Ø(,×(8Ñ(8×(AÑ(AÀ*Ó(MÑ %ˆL˜Ò+˜|ˆFØ"-ˆE Øuˆr;cój|j«\}}|j«j||f«S)zW
Get the (possibly unit converted) transformed x, y in display coords.
)Úget_unitless_positionÚ
get_transformr©rlr+r,s r9Ú_get_xy_displayzText._get_xy_displayïs4ð×+‰ˆˆ1Ø×-¨q°!¨fÓ5r;cóJ|j |jS|jSrF)rÚ_horizontalalignmentrks r9Ú_get_multialignmentzText._get_multialignmentös&Ø × Ñ Ð × × ,r;cóŒ|jsy|j}t|j«}|tjvrt «tj|<tj|}t
|«D]D}||vsŒ|j|«|j«}|j|jz
||<ŒF|j|«|j«}tjdg|Dcgc]}||Œ c}z«}|jz
}tj||z
«j«Scc}w)a
Calculate the index closest to the coordinate x in display space.
The position of text[index] is assumed to be the sum of the widths
of all preceding characters text[:index].
This works only on single line texts.
r)rjÚstrÚ_fontpropertiesrcÚ_charsize_cacheÚdictÚsetrrÚcumsumÚabsÚargmin) rlr+r rWÚcharsize_cacheÚcharÚbbÚ
size_accumÚstd_xs r9Ú_char_index_atzText._char_index_atüsðzŠzØàz‰zˆä˜Tר ¤×!5Ñ!5Ñ 5Ü37³6ŒD× Ñ  Ñ ×-¨nÑܘ“Iò 5ˆDؘ>Ò
˜dÔ×-Ø')§u¡u¨r¯u©u¡}˜
Ø
×
ä—YY ˜Ö%F¸A n°QÓ&7Ò%FÑGˆ
ØB—E‘E‘ ˆÜz EÑ*×4ùò&GsÃ7 E
cóÌ|j«rI|j«j|jg|j «g«j d«S|jS)z3Return the text angle in degrees between 0 and 360.r)Úget_transform_rotates_textr°Útransform_anglesÚ _rotationr¯Úitemrks r9rzText.get_rotationsYà × ×'×Ð  4×#=Ñ#=Ó#?Ð"@óBßBFÁ$ÀqÃ'ð
Jð—> !r;có|jS)zV
Return whether rotations of the transform affect the text direction.
)rrks r9zText.get_transform_rotates_text$sð×+r;cóX|d}ntjd|¬«||_d|_y)a•
Set text rotation mode.
Parameters
----------
m : {None, 'default', 'anchor'}
If ``"default"``, the text will be first rotated, then aligned according
to their horizontal and vertical alignments. If ``"anchor"``, then
alignment occurs before rotation. Passing ``None`` will set the rotation
mode to ``"default"``.
default)ÚanchorrÌ)rrT)rÚ
check_in_listÚ_rotation_modeÚstale)rlÚms r9rzText.set_rotation_mode*s.ð
ˆ9؉Aä × Ñ Ð4ÀAÕ ˆÔ؈
r;có|jS)zReturn the text rotation mode.)rks r9Úget_rotation_modezText.get_rotation_mode=sà×"r;có ||_d|_y)aG
Set whether to use antialiased rendering.
Parameters
----------
antialiased : bool
Notes
-----
Antialiasing will be determined by :rc:`text.antialiased`
and the parameter *antialiased* will have no effect if the text contains
math expressions.
TN)Ú _antialiasedrÐ)rlrws r9rzText.set_antialiasedAsð(ˆÔ؈
r;có|jS)z-Return whether antialiased rendering is used.)rks r9Úget_antialiasedzText.get_antialiasedRsà× Ñ Ð r;cóÄt||«|j|_|j|_|j|_|j
|_|j j«|_|j|_|j|_ |j|_
|j|_ |j|_ |j|_
d|_y)NT)rzÚ update_fromÚ_colorrÚ_verticalalignmentr´r¸r@Ú_usetexrÈrÚ_pickerÚ _linespacingrÕ)rlÚotherrs €r9zText.update_fromVø€ä
јEÔ—l‘lˆŒ Ø$×4ˆÔØ"'×":Ñ":ˆÔØ$)×$>Ñ$>ˆÔ$×ÔØ—}‘}ˆŒ ØŸˆŒØ',×'DÑ'DˆÔ—}Œ ØÔØÔ؈
r;c
ó¸d\}}|j«jd«}g}g}g}g}t|d|j|j «rdnd|j d¬«j ¬«\} }
} |
| z
|jz} t|«D\}
}|j|«\}}|r9t|||j||j d¬«j ¬«\}}}nd x}x}}t||
«}t|| «}|j|«|j|«||z
|z
}|
d k(r||z
}n|t| ||z
|jz«z}|j|«|j|«||z}Œð}t|«}d }|}d }|d
|z
}t«j|j««}|j«}|d k(r!t!||«Dcgc] \}}||fŒ }}}ne|d k(r1t!|||«Dcgc]\}}}||d
z z|d
z z
|fŒ}}}}n/|dk(r*t!|||«Dcgc]\}}}||z|z
|fŒ}}}}t#j$||f||f||f||fg«} |j'| «}!|!ddd fj)«}|!ddd fj«}|!dddfj)«}|!dddfj«}||z
}||z
}"|j*}#|j,}$|j/«}%|%dk7rM|#d k(r ||zd
z }&n
|#dk(r|}&n|}&|$d k(r ||zd
z }'n|$dk(r|}'nŽ|$dk(r||z}'nƒ|$dk(r ||"zdz z
}'nr|}'no| d \}(})| d
\}*}+|#d k(r |(|*zdz }&n
|#dk(r|*}&n|(}&|$d k(r |)|+zdz }'n#|$dk(r|+}'n|$dk(r|+z
}'n|$dk(r |+dz z
}'n|)}'|j'|&|'f«\}&}'||&z}||'z}t1j2||||"«},|j'«|&|'fz
}-|,t5t!|t!||«g|-j6¢­Ž«|fScc}}wcc}}}wcc}}}w)
Return the extent (bbox) of the text together with
multiple-alignment information. Note that it returns an extent
of a rotated text when necessary.
)çú
ÚlpÚTeXFT©Úroot)rBrCréÿÿÿÿroÚcenteréÚrightNrÚtoprnÚcenter_baselineg@)Ú_get_wrapped_textÚsplitrDr¸Ú
get_usetexÚ
get_figurerCÚ enumerateÚ_preprocess_mathrr™rÚ
rotate_degrÚziprÚarrayrrr´rÚ from_boundsÚlistÚT).rlr!ÚthisxÚthisyÚlinesÚwsÚhsÚxsÚysr&Úlp_hÚlp_dÚmin_dyÚlineÚ
clean_linerBr-r.r(rnÚdescentÚwidthÚxminÚxmaxÚymaxÚyminÚmalignr+r,Ú
offset_layoutÚ
corners_horizÚcorners_rotatedÚheightÚhalignÚvalignrrÚoffsetxÚoffsetyÚxmin1Úymin1Úxmax1Úymax1r•Úxyss. r9rzText._get_layoutfs+ð  ˆˆ×(×.¨tÓ4ˆà
ˆØ
ˆØ
ˆØ
ˆô d˜D× ŸO™OÔ-‘5°5Ø TÓ0‰
ˆˆ4ð˜‘+ ×!2Ñ!2Ñ2ˆä  Ó ‰GˆAˆtØ!%×!6Ñ!6°tÓ!<Ñ ˆJ˜Ùܘj¨$×*>Ñ*>Ø! ¡¸D Ó'A×'EÑ'EôG1

A˜ô
At“ ˆAt“ ˆ I‰IaŒLØ I‰IaŒLð˜A™ ˆHàAŠvà˜a™%˜ðœ˜V a¨!¡e¨t×/@Ñ/@Ñ%@ÓAà I‰I Ø I‰I à Q‰J‰Eð? ðDˆôB“ˆØˆØˆØˆØ"‰v˜Ñˆô
J× ! $×"3Ñ"3Ó"5Ó 6ˆðר  Ü03°B¸³ ר¨1˜a šVÐ<ˆ

ä,/°°B¸«O÷=Ù!(  A   %¨!¡)™m¨a°!©eÑ3°QÒ=ˆ

ä,/°°B¸«O÷=Ù!(  A   %™i¨!™m¨QÒ=ˆMòŸØDˆ\˜D $˜<¨$°¨¸¸d°|Ð Fˆ
ðŸ+™+ mÓàšq !˜tÑØšq !˜tÑØšq !˜tÑØšq !˜tÑØt‘ ˆØ˜ˆðר×à×
Ø ˜HÒ ˜Ò $™;¨!Ñ+‘ؘ7Òàà˜Ò $™;¨!Ñ+‘ؘ5’ØØ˜:Ò ™.‘ØÐ ™-¨(°S©.Ñ8‘ààÑ+‰LˆEÑ+‰LˆE˜Ò  5™=¨CÑ/‘ؘ7Òàà˜Ò  5™=¨CÑ/‘ؘ5’ØØ˜:Ò (Ñ*‘ØÐ (¨S¡.Ñ0‘àà Ÿ{™{¨G°WÐ+=Ó ˆG ˆØ ˆä×Ñ  d¨E°6Óðk‰k˜-Ó(¨G°WÐ+=Ñà”Tœ#˜e¤S¨¨R£[Ð9°3·5±5Ò:¸GÐCùóa=ùô=ùô=sÇ+QÈQÉ QcóN|Œ|j«}|jdd«}|jdd«}|d}|d}||j«z}n|d}t|t«r d|vr|d|zz
}t d|t
«d œ|¤Ž|_nd|_|j«y)
a
Draw a bounding box around self.
Parameters
----------
rectprops : dict with properties for `.patches.FancyBboxPatch`
The default boxstyle is 'square'. The mutation
scale of the `.patches.FancyBboxPatch` is set to the fontsize.
Examples
--------
::
t.set_bbox(dict(facecolor='red', alpha=0.5))
boxstyleÚpadÚsquareég333333Ó?z
,pad=%0.2f)©rrrr)rr) r@r˜Úget_sizeÚ
isinstancer·r rÚ_update_clip_properties)rlÚ rectpropsÚpropsrrs r9z
Text.set_bboxþð" Ð Ø—N‘NÓ$ˆEØ—y‘y ¨TÓ2ˆHØ—)‘)˜E 4Ó(ˆCØÐØ#Øt—}}“Ñ&à˜(¤CÔ(¨U¸(Ñ-BؘL¨3Ñ.Ü Kà!Ô->Ó-@ñ KàDIñ KˆDÕ ð $ˆ à ×&r;có|jS)zf
Return the bbox Patch, or None if the `.patches.FancyBboxPatch`
is not made.
)rks r9Úget_bbox_patchzText.get_bbox_patch&sð
×ÑÐr;cóv|jr,t|j|j««}t|j |j
««}|j
«j||f«\}}t||«\}}}}|jjdd||«|jjt«j|j««j||z||z««|j|j!««}|jj#|«yy)
Update the location and the size of the bbox.
This method should be used when the position and size of the bbox needs
to be updated before actually drawing the bbox.
N)ÚfloatÚconvert_xunitsrhÚconvert_yunitsrirr:Ú
set_boundsÚ
set_transformrrÚ translateÚpoints_to_pixelsr!Úset_mutation_scale) rlr!ÚposxÚposyr7r8r5r6Úfontsize_in_pixels r9Úupdate_bbox_position_sizezText.update_bbox_position_size-sð × Ó ô˜×,¨T¯W©WÓ6ˆDܘ×,¨T¯W©WÓ6ˆDØ×¸t¸ ÓE‰JˆD$ä)5°d¸HÓ)EÑ &ˆE5˜% Ø × Ñ × ¨B°°uÔ × Ñ × 
ߘDט4 %™<¨°©Ó
!)× 9Ñ 9¸$¿-¹-»/Ó JÐ Ø × Ñ × /Ð0AÕ  r;có¬|jrHt|j|j|j¬«}|jj |«yy)N)Úclip_boxÚ clip_pathÚclip_on)ÚclipboxÚ _clippathÚ_cliponr})rlÚ clippropss r9r#zText._update_clip_propertiesDsDØ × Ò Ü d§l¡lØ'+§~¡~Ø%)§\¡\ô3ˆ
× Ñ × #  r;cóDt||«|j«yrF)rzÚ set_clip_boxr#)rlr9rs €r9r>zText.set_clip_boxKsø€ä
јWÔ ×&r;cóFt|||«|j«yrF)rzÚ
set_clip_pathr#)rlÚpathrrs €r9r@zText.set_clip_pathPsø€ä
јd  ×&r;cóDt||«|j«yrF)rzÚ set_clip_onr#)rlÚbrs €r9rCzText.set_clip_onUsø€ä
јAÔØ ×&r;có|jS)z'Return whether the text can be wrapped.©Ú_wraprks r9Úget_wrapz
Text.get_wrapZó àz‰zÐr;có||_y)a2
Set whether the text can be wrapped.
Wrapping makes sure the text is confined to the (sub)figure box. It
does not take into account any other artists.
Parameters
----------
wrap : bool
Notes
-----
Wrapping does not work together with
``savefig(..., bbox_inches='tight')`` (which is also used internally
by ``%matplotlib inline`` in IPython/Jupyter). The 'tight' setting
rescales the canvas to accommodate all content and happens before
wrapping.
NrF)rlrts r9rˆz
Text.set_wrap^s ð&ˆ
r;có¢|j«j|j««\}}|j«j «}|j «}|j
d«|j«}|j||||«}|jd|zdz|||«}|dk(r|}|S|dk(r|}|Sdt||«z}|S)zk
Return the maximum line width for wrapping text based on the current
orientation.
é´éhro)
rÚ get_positionrðÚget_horizontalalignmentrrÚ_get_dist_to_boxr) rlÚ
figure_boxÚ alignmentrproÚ
line_widths r9Ú_get_wrap_line_widthzText._get_wrap_line_widthsð
×%××0AÑ0AÓ0CÓD‰ˆˆ—_&×:ˆ
ð×2ˆ Ø ×јxÔ×&ˆà×$ X¨r°2°zÓØ×
8‰^˜ " ¨Jóð ˜Ò ؈Jð Ðð ˜'Ò
ˆJðÐðœS  uÓ-ˆJàÐr;cóö|dkDrz|dz
}||jz
tjtj|««z }|j|z
tjtjd|z
««z }no|dkDry|dz
}||j
z
tjtj|««z }||jz
tjtjd|z
««z }nñ|dkDry|dz
}|j |z
tjtj|««z }||j
z
tjtjd|z
««z }ns|j|z
tjtj|««z }|j |z
tjtjd|z
««z }t||«S)zr
Return the distance from the given points to the boundaries of a
rotated box, in pixels.
iéZrL)ÚmathÚcosÚradiansr¥r)rlrprQÚquadÚh1Úh2s r9rPzText._get_dist_to_boxsxð
cŠ>ؘc>ˆz—}‘}ѯ©´·±¸dÓ1CÓ(DÑDˆ—-‘- "ѯ©´·±¸bÀ4¹iÓ1HÓ(IÑIŠBØ
˜Š^ؘc‘>ˆDØz—}‘}ѯ©´·±¸dÓ1CÓ(DÑDˆBØz—}‘}ѯ©´·±¸bÀ4¹iÓ1HÓ(IÑI‰BØ
˜Š]ؘb=ˆ—-‘- "ѯ©´·±¸dÓ1CÓ(DÑDˆBØz—}‘}ѯ©´·±¸bÀ4¹iÓ1HÓ(IÑI‰Bà—-- "ѯ©´·±¸hÓ1GÓ(HÑHˆ—-‘- "ѯ©´·±¸bÀ8¹mÓ1LÓ(MÑMˆ2rr;c óÜt|j||j«tj|«|j d¬«j «\}}}tj|«S)zE
Return the width of a given text string, in pixels.
Trå) rDrÚget_fontpropertiesrÚ is_math_textrðrCrWÚceil)rlr r-r.r(s r9Ú_get_rendered_text_widthzText._get_rendered_text_width¤sZô
 N‰N˜D $×"9Ñ"9Ó";Ü × Ñ ˜ O‰O ˆ &× ,‰ˆˆ1ˆy‰y˜‹|Ðr;c
ó,|j«s|j«S|j«r|j«S|j«}g}|j«j d«}|D]
}|j d«}t |«dkDsŒ$t |«dk(r!|j
|jd««Œ>tdt |«dz«D]}dj|d|«}|j|«}||kDr0|j
dj|d|dz
««||dz
d}n7|t |«k(sŒl|j
dj|d|««g}nt |«dkDrŒêŒdj|«S)
Return a copy of the text string with new lines added so that the text
is wrapped relative to the parent figure (if `get_wrap` is True).
ú rrN) rHÚget_textrïrTÚlenr™r˜ÚrangeÚjoinra) rlrSÚ
wrapped_linesÚunwrapped_linesÚunwrapped_lineÚ sub_wordsrrÚ
current_widths r9zText._get_wrapped_text¯s…ð
}‰}ŒØ—==“?Ð  ?‰?Ô Ø—==“?Ð ×0ˆ
؈
ðŸ-™-›/×Ó5ˆð ˆ&×,¨SÓ1ˆi“. y“> !ׯ©°qÓ)9Ôä˜q¤# i£.°1Ñ"4ÓŸ8™8 I¨b¨q 2DØ$(×$AÑ$AÀ$Ó$G% %×,¨S¯X©X°iÀÀÀQÁÐ6GÓ-HÔIØ$-¨a°!©e¨fÐ$5˜ Ùðœc ),¨S¯X©X°iÀÀ°mÓ-DÔEØ$&˜ Ùð!ô
i“.  ð8y‰y˜Ó'r;c ó®|||_|j«sy|j«dk(ry|jd|j ««|j |j
«¬«5|j|«\}}}|j«}|j|j}}tjj|«rtj}tjj|«rtj}t|j!|««}t|j#|««} |j%|| f«\}} tj&|«stj&| «r
ddd«ytj(|«rtj(| «st*j-d« ddd«y|j/«\}
} |j0r,|j3|«|j0j5|«|j7«} | j9|j;««| j=|j?««| jA|jB«| jE|jF«|jI| «|jK«}
|D\}}}}tM|«dk(r|nd}||z}|| z}|jO«r| |z
}|jQ|«\}}|jS«rddl*m+}||jS«|«}n|}|jY«r#|j[| ||||j\|
|¬«Œ°|j_| ||||j\|
||¬ «ŒÔ ddd« ja«|jcd«d
|_2y#1swYŒ2xYw) Nryr )r z%posx and posy should be finite valuesrr)ÚPathEffectRenderer)Úmtext)rBroF)3rrdÚ
open_groupÚget_gidÚ_cm_setrírrhrirrUÚ is_maskedÚnanr)r*r+rÚisnanÚisfiniteÚ_logÚwarningÚget_canvas_width_heightrŽr4ÚdrawÚnew_gcÚset_foregroundÚ get_colorÚ set_alphaÚ get_alphaÚset_urlÚ_urlrÚ _set_gc_cliprreÚflipyròÚget_path_effectsÚmatplotlib.patheffectsrnÚdraw_texr¸Ú draw_textÚrestoreÚ close_grouprÐ)rlr!r•ÚinforÚtransr+r,r1r2ÚcanvaswÚcanvashÚgcÚanglerr*rorrBrnÚ textrenderers r9rzz Text.drawâsFð Ð Ø%ˆDŒNØ×ÑÔ Ø =‰=‹?˜bÒ Ø à×јF D§L¡L£NÔ
\‰\˜t×7ˆ
; GØ"&×"2Ñ"2°8Ó"<Ñ ˆD$˜Ø×(ˆ—77˜DŸG™GˆqˆAÜu‰u˜qÔ—F‘FÜu‰u˜qÔ—F‘Fܘ×,¨QÓ0ˆDܘ×,¨QÓ0ˆDØŸ¨$°¨Ó6‰JˆDx‰x˜Œ~¤§¡¨$¤Ø÷; Gð; Gô —;;˜$¬B¯K©K¸Ô,=Ü Ð÷%; Gð; Gð& (× ˆG×ÒØ×.¨xÔ× Ñ ×% hÔÓ"ˆBØ × Ñ ˜dŸn™nÓ L‰L˜ŸÓ J‰Jt—y‘yÔ × Ñ ˜t× × Ñ ˜bÔ ×'ˆEà"&ò
Gb˜!˜Qä # D£ ¨Q¢°Dؘ‘Hؘ‘HØ—> !™ AØ%)×%:Ñ%:¸4Ó%@Ñ"
˜Fà×IÙ#5Ø×ó$;‘Lð$,—? ×)¨"¨a°°JØ*.×*>Ñ*>ÀØ05ð!×*¨2¨q°!°ZØ+/×+?Ñ+?ÀØ28ÀðGñ+
G÷I; Gðz
Œ Ø×јVÔˆ
÷; Gð; GúsÁ/DO Æ AO ÇGO Ï Ocó|jS)zReturn the color of the text.)rks r9r}zText.get_color0s à{‰{Ðr;có|jS)z*Return the `.font_manager.FontProperties`.)r¸rks r9r^zText.get_fontproperties4sà×#r;có6|jj«S)z
Return the list of font families used for font lookup.
See Also
--------
.font_manager.FontProperties.get_family
)r¸Ú
get_familyrks r9Úget_fontfamilyzText.get_fontfamily8óð×0r;có6|jj«S)z„
Return the font name as a string.
See Also
--------
.font_manager.FontProperties.get_name
)r¸Úget_namerks r9Ú get_fontnamezText.get_fontnameBsð×#×.r;có6|jj«S)z†
Return the font style as a string.
See Also
--------
.font_manager.FontProperties.get_style
)r¸Ú get_stylerks r9Ú
get_fontstylezText.get_fontstyleLsð×#×/r;có6|jj«S)z
Return the font size as an integer.
See Also
--------
.font_manager.FontProperties.get_size_in_points
)r¸Úget_size_in_pointsrks r9Ú get_fontsizezText.get_fontsizeVsð×#×8r;có6|jj«S)
Return the font variant as a string.
See Also
--------
.font_manager.FontProperties.get_variant
)r¸Ú get_variantrks r9Úget_fontvariantzText.get_fontvariant`óð×1r;có6|jj«S)z”
Return the font weight as a string or a number.
See Also
--------
.font_manager.FontProperties.get_weight
)r¸Ú
get_weightrks r9Úget_fontweightzText.get_fontweightjrr;có6|jj«S)z
Return the font stretch as a string or a number.
See Also
--------
.font_manager.FontProperties.get_stretch
)r¸Ú get_stretchrks r9zText.get_stretchtr;có|jS)zs
Return the horizontal alignment as a string. Will be one of
'left', 'center' or 'right'.
)r´rks r9rOzText.get_horizontalalignment~sð
×(r;cóšt|j|j««}t|j|j««}||fS)z0Return the (x, y) unitless position of the text.)r)r*rhr+ris r9zText.get_unitless_position…s?ô
$×% d§g¡gÓ /ˆÜ $×% d§g¡gÓ /ˆØ!ˆtˆ r;có2|j|jfS)z'Return the (x, y) position of the text.)rhrirks r9rNzText.get_positionsðw‰w˜ŸÐÐr;có|jS)zReturn the text string.)rjrks r9rdz
Text.get_text“rIr;có|jS)z
Return the vertical alignment as a string. Will be one of
'top', 'center', 'bottom', 'baseline' or 'center_baseline'.
)rks r9Úget_verticalalignmentzText.get_verticalalignment—sð
×&r;có|j«stj«S|jd¬«}| |j}|j «dk(rLt
j||¬«5|j«\}}tj||dd«cddd«S|||_
|j|j«|_
|j td«t
j||¬«5|j|j«\}}}|j«\} }
|j«j!| |
f«\} }
|j#| |
«}|cddd«S#1swYŒÕxYw#1swYyxYw)
Return the `.Bbox` bounding the text, in display units.
In addition to being used internally, this is useful for specifying
clickable regions in a png file on a web page.
Parameters
----------
renderer : Renderer, optional
A renderer is needed to compute the bounding box. If the artist
has already been drawn, the renderer is cached; thus, it is only
necessary to pass this argument when calling `get_window_extent`
before the first draw. In practice, it is usually easier to
trigger a draw first, e.g. by calling
`~.Figure.draw_without_rendering` or ``plt.show()``.
dpi : float, optional
The dpi value for computing the bbox, defaults to
``self.get_figure(root=True).dpi`` (*not* the renderer dpi); should be set
e.g. if to match regions with a figure saved with a custom dpi value.
TråNry)rCrzoCannot get window extent of text w/o renderer. You likely want to call 'figure.draw_without_rendering()' first.)rÚunitrðrCrdrÚ _setattr_cmr²rÚ
_get_rendererÚ RuntimeErrorrrÚ
translated) rlr!rCÚfigÚtxÚtyr•rr+r,s r9zText.get_window_extentžsmð,×ÑÔ—9‘9“;Ð ào‰o 4ˆoÓ(ˆØ ˆ—''ˆ =‰=?˜ Ü×" 3¨CÔ
×/רB°°1Ó

 Ð Ø%ˆDŒNØ >‰>Ð  ×0ˆDŒNØ >‰>Ð ðHóIð
Iô×
Ñ
˜Ô
 Ø"&×"2Ñ"2°4·>±>Ó"BÑ ˆD$˜Ø×/‰DˆAˆ×'×1°1°a°&Ó9‰DˆAˆ—?? 1 (ˆDØ÷  ñ ÷

6ú÷ ð úsÁ/+E0Ã<A*E<Å0E9Å<FcóÎ|j|jt||¬««n%|jjt|¬««|j «d|_y)
Set the background color of the text by updating the bbox.
Parameters
----------
color : :mpltype:`color`
See Also
--------
.set_bbox : To change the position of the bounding box
N)Ú facecolorÚ edgecolor)T)r}r#©rlrVs r9Úset_backgroundcolorzText.set_backgroundcolorÏsOð × Ñ Ð M‰Mœ$¨¸%Ô × Ñ × #¤D°5Ô$9Ô  ׈
r;cóŒtj|d«s tjj |¬«||_d|_y)z~
Set the foreground color of the text
Parameters
----------
color : :mpltype:`color`
Úauto)rVTN)rÚ
_str_equalrƒÚcolorsÚ_check_color_likerÚs r9rzText.set_colorãs7ô×Ñ  vÔ J‰J× (¨uÐ ˆŒ ؈
r;cóRtjgd¢|¬«||_d|_y)
Set the horizontal alignment relative to the anchor point.
See also :doc:`/gallery/text_labels_and_annotations/text_alignment`.
Parameters
----------
align : {'left', 'center', 'right'}
©ro©ÚalignTN)rr´©rls r9zText.set_horizontalalignmentòs$ô
×ÑÒ6¸eÕDØ$)ˆÔˆ
r;cóRtjgd¢|¬«||_d|_y)al
Set the text alignment for multiline texts.
The layout of the bounding box of all the lines is determined by the
horizontalalignment and verticalalignment properties. This property
controls the alignment of the text lines within that box.
Parameters
----------
align : {'left', 'right', 'center'}
TN)rrs r9Úset_multialignmentzText.set_multialignments$ô
×ÑÒ6¸eÕÔØˆ
r;cóVtjt|¬«||_d|_y)
Set the line spacing as a multiple of the font size.
The default line spacing is 1.2.
Parameters
----------
spacing : float (multiple of font size)
)ÚspacingTN)rÚcheck_isinstancer)rls r9rzText.set_linespacings#ô
×Ñœd¨GÕÔØˆ
r;cóH|jj|«d|_y)
Set the font family. Can be either a single string, or a list of
strings in decreasing priority. Each string may be either a real font
name or a generic font class name. If the latter, the specific font
names will be looked up in the corresponding rcParams.
If a `Text` instance is constructed with ``fontfamily=None``, then the
font is set to :rc:`font.family`, and the
same is done when `set_fontfamily()` is called on an existing
`Text` instance.
Parameters
----------
fontname : {FONTNAME, 'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'}
See Also
--------
.font_manager.FontProperties.set_family
TN)r¸Ú
set_familyrЩrlrYs r9Úset_fontfamilyzText.set_fontfamilysð*
×Ñ×Ôˆ
r;cóH|jj|«d|_y)
Set the font variant.
Parameters
----------
variant : {'normal', 'small-caps'}
See Also
--------
.font_manager.FontProperties.set_variant
TN)r¸Ú set_variantrÐ)rlrQs r9Úset_fontvariantzText.set_fontvariant6sð
×Ñ×Ôˆ
r;cóH|jj|«d|_y)
Set the font style.
Parameters
----------
fontstyle : {'normal', 'italic', 'oblique'}
See Also
--------
.font_manager.FontProperties.set_style
TN)r¸Ú set_stylerÐ)rlr\s r9Ú
set_fontstylezText.set_fontstyleEsð
×Ñ×& ˆ
r;cóH|jj|«d|_y)a
Set the font size.
Parameters
----------
fontsize : float or {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'}
If a float, the fontsize in points. The string values denote sizes
relative to the default font size.
See Also
--------
.font_manager.FontProperties.set_size
TN)r¸Úset_sizerÐ)rlrZs r9Ú set_fontsizezText.set_fontsizeTsð
×Ñ×% hÔˆ
r;có6|jj«S)
Return the font family name for math text rendered by Matplotlib.
The default value is :rc:`mathtext.fontset`.
See Also
--------
set_math_fontfamily
)r¸Úget_math_fontfamilyrks r9zText.get_math_fontfamilyfsð×#×9r;có:|jj|«y)a
Set the font family for math text rendered by Matplotlib.
This does only affect Matplotlib's own math renderer. It has no effect
when rendering with TeX (``usetex=True``).
Parameters
----------
fontfamily : str
The name of the font family.
Available font families are defined in the
:ref:`default matplotlibrc file
<customizing-with-matplotlibrc-files>`.
See Also
--------
get_math_fontfamily
N)r¸Úset_math_fontfamily)rlrXs r9zText.set_math_fontfamilyrsð(
×Ñ×Õ<r;cóH|jj|«d|_y)ab
Set the font weight.
Parameters
----------
weight : {a numeric value in range 0-1000, 'ultralight', 'light', 'normal', 'regular', 'book', 'medium', 'roman', 'semibold', 'demibold', 'demi', 'bold', 'heavy', 'extra bold', 'black'}
See Also
--------
.font_manager.FontProperties.set_weight
TN)r¸Ú
set_weightrÐ)rlrRs r9Úset_fontweightzText.set_fontweightˆsð
×Ñ×Ôˆ
r;cóH|jj|«d|_y)a
Set the font stretch (horizontal condensation or expansion).
Parameters
----------
stretch : {a numeric value in range 0-1000, 'ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded'}
See Also
--------
.font_manager.FontProperties.set_stretch
TN)r¸Ú set_stretchrÐ)rlrOs r9Úset_fontstretchzText.set_fontstretch™sð
×Ñ×Ôˆ
r;cóT|j|d«|j|d«y)z}
Set the (*x*, *y*) position of the text.
Parameters
----------
xy : (float, float)
rrN)Úset_xÚset_y)rlÚxys r9Ú set_positionzText.set_positionªs$ð
2aØ
2ar;có ||_d|_y)zl
Set the *x* position of the text.
Parameters
----------
x : float
TN)rh)rlr+s r9z
Text.set_xµóðˆŒØˆ
r;có ||_d|_y)zl
Set the *y* position of the text.
Parameters
----------
y : float
TN)ri)rlr,s r9z
Text.set_yÀr;có t|t«rt|«dz|_d|_yt j
|d«s|d|_d|_yt j
|d«rd|_d|_yt
d|«) a"
Set the rotation of the text.
Parameters
----------
s : float or {'vertical', 'horizontal'}
The rotation angle in degrees in mathematically positive direction
(counterclockwise). 'horizontal' equals 0, 'vertical' equals 90.
rMÚ
horizontalNráÚverticalg€V@z;rotation must be 'vertical', 'horizontal' or a number, not T)r"rr)rr¿Ú
ValueErrorrЩrlÚss r9zText.set_rotationËô Ô Ü" 1™^ˆDŒNðˆ
ô×
Ñ
˜a Ô
.°!°)؈DŒNð ˆ
ô ×
Ñ
˜a Ô
 ˆDŒNðˆ
ôð.Ø./¨Sð
3r;có ||_d|_y)z‡
Whether rotations of the transform affect the text direction.
Parameters
----------
t : bool
TN)r)rlr)s r9Úset_transform_rotates_textzText.set_transform_rotates_textàsð()ˆÔˆ
r;cóRtjgd¢|¬«||_d|_y)a

Set the vertical alignment relative to the anchor point.
See also :doc:`/gallery/text_labels_and_annotations/text_alignment`.
Parameters
----------
align : {'baseline', 'bottom', 'center', 'center_baseline', 'top'}
)ÚbottomrèrnTN)rs r9r‰zText.set_verticalalignmentës)ô
×ÑÚ õ ð#(ˆÔ؈
r;có^|dn
t|«}||jk7r||_d|_yy)a1
Set the text string *s*.
It may contain newlines (``\n``) or math in LaTeX syntax.
Parameters
----------
s : object
Any object gets converted to its `str` representation, except for
``None`` which is converted to an empty string.
NryT)rjs r9rz
Text.set_textûs1ð)‰B¤ Q£ˆØ 
Š?؈DŒJ؈D r;cóº|j«r |dk(rd}|dfS|j«s|dfStj|«r|dfS|j dd«dfS)a

Return the string *s* after mathtext preprocessing, and the kind of
mathtext support needed.
- If *self* is configured to use TeX, return *s* unchanged except that
a single space gets escaped, and the flag "TeX".
- Otherwise, if *s* is mathtext (has an even number of unescaped dollar
signs) and ``parse_math`` is not set to False, return *s* and the
flag True.
- Otherwise, return *s* with dollar signs unescaped, and the flag
False.
rcz\ räFTz\$ú$)Úget_parse_mathrr_Úreplacerïs r9zText._preprocess_math seð ?‰?Ô ØCŠxØØe8ˆ×e8ˆ
×
Ñ
 Ô
d7ˆ—99˜U (¨%Ð /r;cóbtj|«j«|_d|_y)ar
Set the font properties that control the text.
Parameters
----------
fp : `.font_manager.FontProperties` or `str` or `pathlib.Path`
If a `str`, it is interpreted as a fontconfig pattern parsed by
`.FontProperties`. If a `pathlib.Path`, it is interpreted as the
absolute path to a font file.
TN)r
Ú _from_anyr@r¸)rlÚfps r9r…zText.set_fontproperties$s'ô .×ÓÔØˆ
r;z bool, default: :rc:`text.usetex`cóv|€ tjd|_d|_yt|«|_d|_y)
Parameters
----------
usetex : bool or None
Whether to render using TeX, ``None`` means to use
:rc:`text.usetex`.
Nz text.usetexT)r“ÚboolrÐ)rlrss r9r†zText.set_usetex2s6𠈟<™<¨
Ñ6ˆDŒLðˆ
ô  <ˆDŒL؈
r;có|jS)z9Return whether this `Text` object uses TeX for rendering.)rks r9zText.get_usetexAs à|‰|Ðr;có$t|«|_y)a0
Override switch to disable any mathtext parsing for this `Text`.
Parameters
----------
parse_math : bool
If False, this `Text` will never use mathtext. If True, mathtext
will be used if there is an even number of unescaped dollar signs.
N)Ú _parse_math)rlrvs r9r‡zText.set_parse_mathEsô  
Ó+ˆÕr;có|jS)z>Return whether mathtext parsing is considered for this `Text`.)rrks r9zText.get_parse_mathQsà×ÑÐr;có&|j|«y)a1
Alias for `set_fontfamily`.
One-way alias only: the getter differs.
Parameters
----------
fontname : {FONTNAME, 'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'}
See Also
--------
.font_manager.FontProperties.set_family
N)s r9Ú set_fontnamezText.set_fontnameUsð
×ј%r;)rrry)ryNNNNFrnroNNFNNNrF©NN)UÚ__name__Ú
__module__Ú __qualname__Ú__doc__Úzorderrºrmr{r|r}rrrr×rr'r4r#r>r@rCrHrˆrTrPrarÚallow_rasterizationrzr}r^r•r™rOrNrdrrr‰rr…rÚ kwarg_docr†r‡rÚ
__classcell__©rs@r9rcrcPsø„ñ Là
€FÙ“f€Oò!#ð3àØ#-Ø%+Ø $Ø $ØØØØ(-Ø Ø3ðnØØØØØ
ØØØØØó#?ôJô ò ò. 5ò@ ò&ò"ò VDòp&'òP òCò.


òò*ò4ò. ò1(ðf ×ÑñKó ðKòZòò ò ò/òbò(
ò òò òò0
ò
òò$
=ò,ò"ò" ò ò òò* òò ò"0ò0 ð€Z×ÑÐ ó òò
 ö&r;rccó*eZdZdZddZdZdZdZy)Ú
OffsetFromz4Callable helper class for working with `Annotation`.cóP||_|\}}||f|_|j|«y)at
Parameters
----------
artist : `~matplotlib.artist.Artist` or `.BboxBase` or `.Transform`
The object to compute the offset from.
ref_coord : (float, float)
If *artist* is an `.Artist` or `.BboxBase`, this values is
the location to of the offset origin in fractions of the
*artist* bounding box.
If *artist* is a transform, the offset origin is the
transform applied to this value.
unit : {'points, 'pixels'}, default: 'points'
The screen units to use (pixels or points) for the offset input.
N)Ú_artistÚ
_ref_coordÚset_unit)rlrÚ ref_coordr°r+r,s r9r{zOffsetFrom.__init__ks+ð$ˆŒ ؈ˆ1ؘQ˜$ˆŒØ
r;cóDtjddg|¬«||_y)
Set the unit for input to the transform used by ``__call__``.
Parameters
----------
unit : {'points', 'pixels'}
ÚpointsÚpixels)N)rÚ_unit)rls r9rzOffsetFrom.set_units ô
×јH hÐ/°dÕˆ
r;có|jS)z@Return the unit for input to the transform used by ``__call__``.)rrks r9Úget_unitzOffsetFrom.get_unitrIr;cóTt|jt«rc|jj|«}|j\}}|j
|j |zz}|j|j|zz}nát|jt«rT|j}|j\}}|j
|j |zz}|j|j|zz}nst|jt«r)|jj|j«\}}n0tjtttf|j¬«|jdk(rdn|jd«}t!«j#|«j%«S)aL
Return the offset transform.
Parameters
----------
renderer : `RendererBase`
The renderer to use to compute the offset
Returns
-------
`Transform`
Maps (x, y) in pixel or point units to screen units
relative to the given artist.
)rrr)r"rr rrrrrrrrr/rÚscaler.)rlr!r•ÚxfÚyfr+r,rs r9Ú__call__zOffsetFrom.__call__s3ô d—ll¤FÔ —<<×1°(Ó;ˆ—_‘_‰FˆBؘ$Ÿ*™* r™/Ñ)ˆAؘ$Ÿ+™+¨Ñ*‰AÜ
˜Ÿ ¤hÔ
—<<ˆ—_‘_‰FˆBؘ$Ÿ*™* r™/Ñ)ˆAؘ$Ÿ+™+¨Ñ*‰AÜ
˜Ÿ ¤iÔ
—<<×)¨$¯/©/Ó:‰DˆA‰qä × !¤6¬8´YÐ"?ÈÏ É Õ —ZZ +‘°×1JÑ1JÈ1Ó1MˆÜz×Ñ Ó&×°AÓ6r;N)r)rrrr r{rrr ©r;r9rrhsÙò. òó7r;rcóFeZdZ d
dZdZdZdZdZdZd dZ d d „Z
y)
Ú_AnnotationBaseNcó^|\}}||f|_||_|j|«d|_yrF)ÚxycoordsÚset_annotation_clipÚ
_draggable)rlr%Úannotation_clipr+r,s r9r{z_AnnotationBase.__init__³s4ð
ˆˆ1ØQŒØ ˆŒ
Ø × Ñ  Ôˆr;có|\}}t|t«r|n||f\}}|dk(rt|j|««}|dk(rt|j |««}|j ||«j
||f«S)data)r"Útupler)r*r+Ú_get_xy_transformr)rlr!Úcoordsr+r,ÚxcoordÚycoords r9Ú_get_xyz_AnnotationBase._get_xy¿s€Øˆˆ1Ü#-¨f´eÔ#<™À6È6ÐBR‰ˆØ  Ü)¨!Ó-ˆAØ  Ü)¨!Ó-ˆAØ×% Ó7×AÀ1ÀaÀ&ÓIr;cóXt|t«r8|\}}ddlm}|j ||«}|j ||«}|||«St |«rV||«}t|t «r t|«St|t«r|Stdt|«j«t|t«r|j|«} t| «St|t «r t|«St|t«r|St|t«s!tdt|«j«|dk(r|jj S|dk(r3ddlm}
|
j'd¬ «}||jj z} | S |j)«\} }
d \}}| d k(r|j-d¬
«j.}n=| dk(r|j-d¬
«j0}n| dk(r|jj0}|
|j2}n%| dk(r|j5|«}nt+|d
«|
dk(r7t7«j9|j-d¬
«j:dz «}n|
dk(r t7«}n|
dk(rHt7«j9|j=«|j-d¬
«j:zdz «}n5|
dk(r"t7«j8|j>Ž}nt+|
d«|j@|ŽS#t*$rt+|d
«dwxYw)Nr)Úblended_transform_factoryz=xycoords callable must return a BboxBase or Transform, not a z^'xycoords' must be an instance of str, tuple[str, str], Artist, Transform, or Callable, not a r*Úpolar)Ú PolarAxesF)Úapply_theta_transformsz is not a valid coordinaterÚfigureråÚ subfigureÚaxesÚoffsetrTéHrrZÚfractionz is not a recognized unit)!r"r+Úmatplotlib.transformsr2r,ÚcallablerrrÚ TypeErrorÚtyperr r8Ú transDataÚmatplotlib.projectionsr4ÚPolarTransformrîÚfigbboxr•Úp0Ú_get_position_xyrrrCr!rNr.)rlr!r-r.r/r2Útr1Útr2r%r•r4rÚ bbox_namer°Úbbox0Úxy0s r9r,z!_AnnotationBase._get_xy_transformÈsä fœeÔ #‰NˆF ×°6Ó:ˆCØ×°6Ó:ˆCÙ,¨S°#Ó

Ù˜Ó!ˆ˜"œhÔ& ˜B¤ Ô äØ˜B“xט¤Ô
×+¨HÓ5ˆ" 
˜¤Ô
" 
˜¤ Ô
ˆMܘF¤CÔð1Ü15°f³×1FÑ1FÐ0GðIóJð
Jð  Ø—99×

Ý ×ÐGˆBؘŸ×,ˆE؈Lð PØ$Ÿl™l›n‰OˆI
ˆˆsð ˜Ò Ø—O‘O¨7‰EØ
˜
—O‘O¨4‰EØ
˜
Ø—I‘I—N‘NˆEð Ð Ø—(‘(‰CØ
˜
×Ó1‰Cä ˜zÐ)CÐ  Ü× TÓÑ5‰Bà

܉BØ

Ü×
 $§/¡/°t /Ó"<×"@Ñ"@Ñ@À2ÑG‰Bà

Ø!”×! 5§:¡:Ð.‰Bä ˜xÐ'@Ð ˆr|‰|˜!øôEò PÜ ˜zÐ)CÐEÈ4Ð  Pús ÆLÌL)có||_y)
Set the annotation's clipping behavior.
Parameters
----------
b : bool or None
- True: The annotation will be clipped when ``self.xy`` is
outside the Axes.
- False: The annotation will always be drawn.
- None: The annotation will be clipped when ``self.xy`` is
outside the Axes and ``self.xycoords == "data"``.
Ú_annotation_clip)rlrDs r9r&z#_AnnotationBase.set_annotation_clips ð!"ˆÕr;có|jS)z
Return the annotation's clipping behavior.
See `set_annotation_clip` for the meaning of return values.
rLrks r9Úget_annotation_clipz#_AnnotationBase.get_annotation_clip#sð ×$r;cóP|j||j|j«S)z1Return the pixel position of the annotated point.)r0r%)rlr!s r9rEz _AnnotationBase._get_position_xy+sà|‰|˜H d§g¡g¨t¯}©}Ó=r;cóæ|€ |jd¬«j«}|j«}|s|€;|jdk(r,|j |«}|j
j
|«Sy)z;Check whether the annotation at *xy_pixel* should be drawn.Trår*)rOr%rEr8Úcontains_point)rlr!rDÚxy_pixels r9Ú _check_xyz_AnnotationBase._check_xy/sià РبDÓAˆHØ × &ˆÙ ˜tŸ}™}°Ò×,¨XÓ6ˆHØ—9‘9×+¨HÓ r;cóöddlm}|jdu}|| }|r&|j|||«|_|jS|j|jj«d|_|jS)a9
Set whether the annotation is draggable with the mouse.
Parameters
----------
state : bool or None
- True or False: set the draggability.
- None: toggle the draggability.
use_blit : bool, default: False
Use blitting for faster image composition. For details see
:ref:`func-animation`.
Returns
-------
DraggableAnnotation or None
If the annotation is draggable, the corresponding
`.DraggableAnnotation` helper is returned.
r)ÚDraggableAnnotationN)Úmatplotlib.offsetboxrVr'Ú
disconnect)rlÚstateÚuse_blitrVÚ is_draggables r9Ú draggablez_AnnotationBase.draggable:sxõ&¨dÐ2ˆ ð ˆ=Ø$ˆEá ØÐ&Ù"5°d¸HÓ"Eð Ðð Ð×"ˆDŒOàÐr;)r*NrF©NF) rrrr{r0r,r&rOrErTr\r!r;r9r#r#²s5ð!Ø!%ó
òJòJ"òX
 ô"r;r#cóeZdZdZdZ ddZdZed«Zejd«Zed«Z
e
jd«Z
d „Z d
Z ee e d ¬ «Z
d
ZdZej"d«ZddZdˆfd„ ZˆxZS)Ú
Annotationa`
An `.Annotation` is a `.Text` that can refer to a specific position *xy*.
Optionally an arrow pointing from the text to *xy* can be drawn.
Attributes
----------
xy
The annotated position.
xycoords
The coordinate system for *xy*.
arrow_patch
A `.FancyArrowPatch` to point from *xytext* to *xy*.
cófd|jddd|jddd|jdS)Nz Annotation(rÚgrfrrg)rjrks r9Ú__str__zAnnotation.__str__ns5ؘTŸW™W Q™Z¨˜N¨"¨T¯W©W°Q©Z¸¨N¸"¸T¿Z¹Z¸NÈ!ÐLr;c óÀtj||||¬«||||k7rtjd«| |j}||_| |j }|\} }
||_|V|j«}d|vr|jdd«|_
ndD]} |j| d«Œtdi|¤Ž|_ nd|_ tj|| |
|fi|¤Žy) aæ
Annotate the point *xy* with text *text*.
In the simplest form, the text is placed at *xy*.
Optionally, the text can be displayed in another position *xytext*.