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

897 lines
82 KiB
Text
Raw Normal View History

<EFBFBD>
<00>Rj<><00><00>J<00>dZddlZddlZddlZddlmZddlZddlZddl Z
ddl m Z m Z mZmZddl mZddlmZddlmZmZmZdd lmZmZdd
lmZmZmZmZmZm Z ejBe"<22>Z#d <0B>Z$d <0C>Z%ejLd <0A>d<0E><00>Z'ejPe jRdgddgdgdgdgdgdgdgdgdgdgdgd<1C> <0C>Gd<1D>de<10><00><00>Z*Gd<1F>d <20>Z+Gd!<21>d"<22>Z,Gd#<23>d$e*e,<2C>Z-ejPj]e-j^j<00>%<25>y)&z)
Classes for including text in a figure.
<EFBFBD>N)<01>Real<61>)<04>_api<70>artist<73>cbook<6F>
_docstring)<01>Artist)<01>FontProperties)<03>FancyArrowPatch<63>FancyBboxPatch<63> Rectangle)<02>TextPath<74>
TextToPath)<06>Affine2D<32>Bbox<6F>BboxBase<73>BboxTransformTo<54>IdentityTransform<72> Transformc<00>0<00>g}g}tj|j<00><00>}t<00>j | <00>}|j |<01>\}}}|D]W\} }
} } |
\} }|j | | f<02>\}}||z}|| z||z}}|j||g<02>|j||g<02><00>Yt|<02>t|<03>}}t|<02>|z
t|<03>|z
}}t<00>j |<04>j ||f<02>\}}||||fS)z<>
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`).
)
<EFBFBD>np<6E>deg2rad<61> get_rotationr<00>rotate<74> _get_layout<75> transform<72>extend<6E>min<69>max)<19>text<78>renderer<65> projected_xs<78> projected_ys<79>theta<74>tr<74>_<>parts<74>d<>t<>wh<77>x<>y<>w<>h<>xt1<74>yt1<74>xt2<74>yt2<74>xt_box<6F>yt_box<6F>w_box<6F>h_box<6F>x_box<6F>y_boxs <20>R/home/antigravity/intellecton/venv/lib/python3.12/site-packages/matplotlib/text.py<70> _get_textboxr:s*<00><00><16>L<EFBFBD><15>L<EFBFBD> <0E>J<EFBFBD>J<EFBFBD>t<EFBFBD>(<28>(<28>*<2A> +<2B>E<EFBFBD> <11><1A> <1A> <1A>E<EFBFBD>6<EFBFBD> "<22>B<EFBFBD><16>"<22>"<22>8<EFBFBD>,<2C>K<EFBFBD>A<EFBFBD>u<EFBFBD>a<EFBFBD><1C>(<28> <0B><01>2<EFBFBD>q<EFBFBD>!<21><11><04><01>1<EFBFBD><15><<3C><<3C><11>A<EFBFBD><06>'<27><08><03>S<EFBFBD> <0B>q<EFBFBD><08><03><16><11>7<EFBFBD>C<EFBFBD>!<21>G<EFBFBD>S<EFBFBD><03><14><1B><1B>S<EFBFBD>#<23>J<EFBFBD>'<27><14><1B><1B>S<EFBFBD>#<23>J<EFBFBD>'<27>(<28><19><1C>&<26><03>L<EFBFBD>(9<>F<EFBFBD>F<EFBFBD><16>|<7C>$<24>v<EFBFBD>-<2D>s<EFBFBD><<3C>/@<40>6<EFBFBD>/I<>5<EFBFBD>E<EFBFBD><1B>:<3A>$<24>$<24>U<EFBFBD>+<2B>5<>5<>v<EFBFBD>v<EFBFBD>6F<36>G<>L<EFBFBD>E<EFBFBD>5<EFBFBD> <10>%<25><15><05> %<25>%<25>c<00>b<00>ttj|<00>||j<00>||<04>S)zECall ``renderer.get_text_width_height_descent``, caching the results.)<04>!_get_text_metrics_with_cache_impl<70>weakref<65>ref<65>copy)r!r <00>fontprop<6F>ismath<74>dpis r9<00>_get_text_metrics_with_cacherDAs-<00><00> -<2D><0F> <0B> <0B>H<EFBFBD><1D>t<EFBFBD>X<EFBFBD>]<5D>]<5D>_<EFBFBD>f<EFBFBD>c<EFBFBD> C<01>Cr;ic<00>2<00>|<00>j|||<03>S<00>N)<01>get_text_width_height_descent)<05> renderer_refr rArBrCs r9r=r=Is<00><00> <18>><3E> 7<> 7<><04>h<EFBFBD><06> O<>Or;<00>c<>font<6E>font_properties<65>family<6C>name<6D>size<7A>stretch<63>style<6C>variant<6E>weight<68>ha<68>va<76>ma) <0C>color<6F>fontproperties<65>
fontfamily<EFBFBD>fontname<6D>fontsize<7A> fontstretch<63> fontstyle<6C> fontvariant<6E>
fontweight<EFBFBD>horizontalalignment<6E>verticalalignment<6E>multialignmentc<00><><00><00>eZdZdZdZe<05>Zd<03>Z dRdddddddddddddd<08> <0A>fd <09> Z dSd
<EFBFBD>Z <09>fd <0B>Z
<EFBFBD>fd <0C>Z d <0A>Z d<0E>Z d<0F>Zd<10>Zd<11>Zd<12>Zd<13>Zd<14>Zd<15>Zd<16>Z<15>fd<17>Zd<18>Zd<19>Zd<1A>Zd<1B>Zd<1C>Z<1B>fd<1D>ZdT<64>fd<1E> Z<1D>fd<1F>Zd <20>Zd!<21>Z d"<22>Z!d#<23>Z"d$<24>Z#d%<25>Z$e%jLd&<26><00>Z'd'<27>Z(d(<28>Z)d)<29>Z*d*<2A>Z+d+<2B>Z,d,<2C>Z-d-<2D>Z.d.<2E>Z/d/<2F>Z0d0<64>Z1d1<64>Z2d2<64>Z3d3<64>Z4d4<64>Z5dUd5<64>Z6d6<64>Z7d7<64>Z8d8<64>Z9d9<64>Z:d:<3A>Z;d;<3B>Z<d<<3C>Z=d=<3D>Z>d><3E>Z?d?<3F>Z@d@<40>ZAdA<64>ZBdB<64>ZCdC<64>ZDdD<64>ZEdE<64>ZFdF<64>ZGdG<64>ZHdH<64>ZIdI<64>ZJdJ<64>ZKdK<64>ZLeMj<4D>dL<64>dM<64><00>ZOdN<64>ZPdO<64>ZQdP<64>ZRdQ<64>ZS<5A>xZTS)V<>TextzAHandle storing and drawing of text in window or data coordinates.<2E>c<00>V<00>d|j<00>d|j<00>d|j<00>d<03>S)NzText(<28>, <20>))<03>_x<5F>_y<5F>_text<78><01>selfs r9<00>__repr__z Text.__repr__es)<00><00><16>t<EFBFBD>w<EFBFBD>w<EFBFBD>i<EFBFBD>r<EFBFBD>$<24>'<27>'<27><19>"<22>T<EFBFBD>Z<EFBFBD>Z<EFBFBD>N<EFBFBD>!<21><<3C><r;N<>baseline<6E>leftF) rVr`r_rarW<00>rotation<6F> linespacing<6E> rotation_mode<64>usetex<65>wrap<61>transform_rotates_text<78>
parse_math<EFBFBD> antialiasedc  <00><><00><01>t<00>|<00><00>||c|_|_d|_|j |||| || |||| ||
| |<10><02>|j |<11>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
<20>)r rVrWrsrvrtr`r_rarprurqrrrwN)<07>super<65>__init__rhrirj<00>_reset_visual_defaults<74>update)rlr+r,r rVr`r_rarWrprqrrrsrtrurvrw<00>kwargs<67> __class__s <20>r9r{z Text.__init__hss<00><><00>@ <0E><07><18><1A><1C>a<EFBFBD><18><04><07><14><17><17><04>
<EFBFBD> <0C>#<23>#<23><15><17>)<29><19>!<21><15>/<2F> 3<>)<29><1D>#9<>#<23>'<27>#<23> $<24>
<EFBFBD> <0A> <0B> <0B>F<EFBFBD>r;c<00>`<00>|j|<01>|jtj|d<01><00>|j |<03>|j |<04>|j tj|d<02><00>|j|<06>|j|<07>|j|<08>| |_
|j|
<EFBFBD>| |_ d|_ d|_| <0C>d} |j| <0C>|j!| <0A>|j#|<0E>|<0E>ytj$d<00>y)Nz
text.colorztext.parse_mathg333333<33>?ztext.antialiased)<13>set_text<78> set_color<6F>mpl<70>
_val_or_rc<EFBFBD>set_fontproperties<65>
set_usetex<EFBFBD>set_parse_math<74>set_wrap<61>set_verticalalignment<6E>set_horizontalalignment<6E>_multialignment<6E> set_rotation<6F>_transform_rotates_text<78> _bbox_patch<63> _renderer<65>set_linespacing<6E>set_rotation_mode<64>set_antialiased<65>rcParams)rlr rVrWrsrvrtr`r_rarprurqrrrws r9r|zText._reset_visual_defaults<74>s<00><00>" <0A> <0A> <0A>d<EFBFBD><1B> <0C><0E><0E>s<EFBFBD>~<7E>~<7E>e<EFBFBD>\<5C>:<3A>;<3B> <0C><1F><1F><0E>/<2F> <0C><0F><0F><06><1F> <0C><1B><1B>C<EFBFBD>N<EFBFBD>N<EFBFBD>:<3A>7H<37>I<>J<> <0C> <0A> <0A>d<EFBFBD><1B> <0C>"<22>"<22>#4<>5<> <0C>$<24>$<24>%8<>9<>-<2D><04><1C> <0C><19><19>(<28>#<23>'=<3D><04>$<24><1F><04><18><1D><04><0E> <16> <1E><1D>K<EFBFBD> <0C><1C><1C>[<5B>)<29> <0C><1E><1E>}<7D>-<2D> <0C><1C><1C>K<EFBFBD>,C<>[<5B> ?<3F> <20>\<5C>\<5C>*<<3C>=<3D> ?r;c<00>h<00><01>g}tj|t<00>}t<00>}|j d|<03>}||ur |j |j |<04><00>|j d|<03>}|jt<00>|<00>%|<01><00>||ur |j |j|<05><00>|S)NrW<00>bbox) r<00>normalize_kwargsrc<00>object<63>pop<6F>appendr<64>rrzr}<00>set_bbox)rlr~<00>ret<65>sentinelrWr<>rs <20>r9r}z Text.update<74>s<><00><><00><10><03><16>'<27>'<27><06><04>5<><06><19>8<EFBFBD><08><1F><1A><1A>$4<>h<EFBFBD>?<3F><0E> <19><18> )<29> <0F>J<EFBFBD>J<EFBFBD>t<EFBFBD>.<2E>.<2E>~<7E>><3E> ?<3F><15>z<EFBFBD>z<EFBFBD>&<26>(<28>+<2B><04> <0B>
<EFBFBD>
<EFBFBD>5<EFBFBD>7<EFBFBD>><3E>&<26>)<29>*<2A> <0F>x<EFBFBD> <1F> <0F>J<EFBFBD>J<EFBFBD>t<EFBFBD>}<7D>}<7D>T<EFBFBD>*<2A> +<2B><12>
r;c<00>.<00><01>t<00>|<00><00>}d|d<|S)Nr<4E>)rz<00> __getstate__)rlr(rs <20>r9r<>zText.__getstate__<5F>s<00><><00> <11>G<EFBFBD> <20> "<22><01><1D><01>+<2B><0E><10>r;c<00><><00>|j|<01>s|j<00>r |j<00>difStj |<00>}|j
|j cxkxr|jkncxr.|j|jcxkxr|jknc}i}|jr)|jj|<01>\}}|xs|}||d<||fS)zs
Return whether the mouse event occurred inside the axis-aligned
bounding-box of the text.
F<>
bbox_patch) <0A>_different_canvas<61> get_visibler<65>rc<00>get_window_extent<6E>x0r+<00>x1<78>y0r,<00>y1r<31><00>contains)rl<00>
mouseeventr<EFBFBD><00>inside<64>cattr<74> patch_inside<64> patch_cattrs r9r<>z Text.contains<6E>s<><00><00>
<11> "<22> "<22>:<3A> .<2E>d<EFBFBD>6F<36>6F<36>6H<36><17>><3E>><3E>)<29><18>"<22>9<EFBFBD> <1C><14>%<25>%<25>d<EFBFBD>+<2B><04><16>'<27>'<27>Z<EFBFBD>\<5C>\<5C>4<>T<EFBFBD>W<EFBFBD>W<EFBFBD>4<>9<><1A>g<EFBFBD>g<EFBFBD><1A><1C><1C>8<><14><17><17>8<> <0F><12><05> <10> <1B> <1B>(,<2C>(8<>(8<>(A<>(A<>*<2A>(M<> %<25>L<EFBFBD>+<2B><1B>+<2B>|<7C>F<EFBFBD>"-<2D>E<EFBFBD>,<2C> <1F><15>u<EFBFBD>}<7D>r;c<00>j<00>|j<00>\}}|j<00>j||f<02>S)zW
Get the (possibly unit converted) transformed x, y in display coords.
)<03>get_unitless_position<6F> get_transformr<00>rlr+r,s r9<00>_get_xy_displayzText._get_xy_display<61>s4<00><00><14>)<29>)<29>+<2B><04><01>1<EFBFBD><13>!<21>!<21>#<23>-<2D>-<2D>q<EFBFBD>!<21>f<EFBFBD>5<>5r;c<00>J<00>|j<00> |jS|jSrF)r<><00>_horizontalalignmentrks r9<00>_get_multialignmentzText._get_multialignment<6E>s&<00><00> <0F> <1F> <1F> +<2B><17>'<27>'<27> '<27><17>,<2C>,<2C> ,r;c<00><><00>|jsy|j}t|j<00>}|tjvrt <00>tj|<tj|}t |<02>D]D}||vs<01>|j|<05>|j<00>}|j|jz
||<<00>F|j|<02>|j<00>}tjdg|D<00>cgc]}||<00><02> c}z<00>}|jz
}tj||z
<00>j<00>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<00>str<74>_fontpropertiesrc<00>_charsize_cache<68>dict<63>setr<74>r<>r<>r<>r<00>cumsum<75>abs<62>argmin) rlr+r rW<00>charsize_cache<68>char<61>bb<62>
size_accum<EFBFBD>std_xs r9<00>_char_index_atzText._char_index_at<61>s<00><00><14>z<EFBFBD>z<EFBFBD><14><13>z<EFBFBD>z<EFBFBD><04><1C>T<EFBFBD>1<>1<>2<><0E> <19><14>!5<>!5<> 5<>37<33>6<EFBFBD>D<EFBFBD> <20> <20><1E> 0<><1D>-<2D>-<2D>n<EFBFBD>=<3D><0E><17><04>I<EFBFBD> 5<>D<EFBFBD><13>><3E>)<29><14> <0A> <0A>d<EFBFBD>#<23><19>+<2B>+<2B>-<2D><02>')<29>u<EFBFBD>u<EFBFBD>r<EFBFBD>u<EFBFBD>u<EFBFBD>}<7D><0E>t<EFBFBD>$<24>  5<> <0A> <0A> <0A>d<EFBFBD><1B> <11> #<23> #<23> %<25><02><17>Y<EFBFBD>Y<EFBFBD><01>s<EFBFBD><14>%F<>A<EFBFBD>n<EFBFBD>Q<EFBFBD>&7<>%F<>F<>G<>
<EFBFBD><11>B<EFBFBD>E<EFBFBD>E<EFBFBD> <09><05><12><06><06>z<EFBFBD>E<EFBFBD>)<29>*<2A>2<>2<>4<>4<><34>&Gs<00>7 E
c<00><><00>|j<00>rI|j<00>j|jg|j <00>g<01>j d<01>S|jS)z3Return the text angle in degrees between 0 and 360.r)<06>get_transform_rotates_textr<74><00>transform_angles<65> _rotationr<6E><00>itemrks r9rzText.get_rotationsY<00><00> <0F> *<2A> *<2A> ,<2C><17>%<25>%<25>'<27>8<>8<><15><1E><1E> <20>4<EFBFBD>#=<3D>#=<3D>#?<3F>"@<40>B<01>BF<42>$<24>q<EFBFBD>'<27> J<01><18>><3E>><3E> !r;c<00><00>|jS)zV
Return whether rotations of the transform affect the text direction.
)r<>rks r9r<>zText.get_transform_rotates_text$s<00><00><14>+<2B>+<2B>+r;c<00>X<00>|<01>d}ntjd|<01><04>||_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"``.
N<>default)<02>anchorr<72>)rrT)r<00> check_in_list<73>_rotation_mode<64>stale)rl<00>ms r9r<>zText.set_rotation_mode*s.<00><00> <0A>9<EFBFBD><19>A<EFBFBD> <10> <1E> <1E>4<>A<EFBFBD> F<><1F><04><1B><19><04>
r;c<00><00>|jS)zReturn the text rotation mode.)r<>rks r9<00>get_rotation_modezText.get_rotation_mode=s<00><00><13>"<22>"<22>"r;c<00> <00>||_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)<02> _antialiasedr<64>)rlrws r9r<>zText.set_antialiasedAs<00><00>(<28><04><19><19><04>
r;c<00><00>|jS)z-Return whether antialiased rendering is used.)r<>rks r9<00>get_antialiasedzText.get_antialiasedRs<00><00><13> <20> <20> r;c<00><><00><01>t<00>|<00>|<01>|j|_|j|_|j|_|j
|_|j j<00>|_|j|_|j|_ |j|_
|j|_ |j|_ |j|_ d|_y)NT)rz<00> update_from<6F>_colorr<72><00>_verticalalignmentr<74>r<>r@<00>_usetexr<78>r<><00>_picker<65> _linespacingr<67>r<>)rl<00>otherrs <20>r9r<>zText.update_fromVs<><00><><00> <0A><07><1B>E<EFBFBD>"<22><1B>l<EFBFBD>l<EFBFBD><04> <0B>$<24>4<>4<><04><1C>"'<27>":<3A>":<3A><04><1F>$)<29>$><3E>$><3E><04>!<21>$<24>4<>4<>9<>9<>;<3B><04><1C><1C>}<7D>}<7D><04> <0C><1E><1F><1F><04><0E>',<2C>'D<>'D<><04>$<24><1C>}<7D>}<7D><04> <0C>!<21>.<2E>.<2E><04><19>!<21>.<2E>.<2E><04><19><19><04>
r;c
<00><><00>d\}}|j<00>jd<02>}g}g}g}g}t|d|j|j <00>rdnd|j d<06><07>j <00><08>\} }
} |
| z
|jz} t|<04>D]<5D>\} }|j|<0E>\}}|r9t|||j||j d<06><07>j <00><08>\}}}nd x}x}}t||
<EFBFBD>}t|| <0B>}|j|<11>|j|<12>||z
|z
}| d k(r||z
}n|t| ||z
|jz<00>z}|j|<02>|j|<03>||z}<03><>}t|<05>}d }|}d }|d
|z
}t<00>j|j<00><00>}|j<00>}|d k(r!t!||<08>D<00><1D>cgc] \}}||f<02><02> }}}ne|d k(r1t!|||<05>D<00><1D><1E>cgc]\}}}||d z z|d z z
|f<02><02>}}}}n/|dk(r*t!|||<05>D<00><1D><1E>cgc]\}}}||z|z
|f<02><02>}}}}t#j$||f||f||f||fg<04>} |j'| <20>}!|!dd<0F>d fj)<00>}|!dd<0F>d fj<00>}|!dd<0F>dfj)<00>}|!dd<0F>dfj<00>}||z
}||z
}"|j*}#|j,}$|j/<00>}%|%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<02>\}&}'||&z}||'z}t1j2||||"<22>},|j'<1F>|&|'fz
}-|,t5t!|t!||<06>g|-j6<00><01><06><00>|fScc}}wcc}}}wcc}}}w)z<>
Return the extent (bbox) of the text together with
multiple-alignment information. Note that it returns an extent
of a rotated text when necessary.
)<02>r<><00>
<EFBFBD>lp<6C>TeXFT<46><01>root)rBrCr<00><><EFBFBD><EFBFBD><EFBFBD>ro<00>center<65><00>rightNrr<><00>toprn<00>center_baselineg@)<1C>_get_wrapped_text<78>splitrDr<><00>
get_usetex<EFBFBD>
get_figurerCr<><00> enumerate<74>_preprocess_mathrr<>r<00>
rotate_degrr<><00>zipr<00>arrayrrr<>r<>r<>r<00> from_bounds<64>list<73>T).rlr!<00>thisx<73>thisy<73>lines<65>ws<77>hs<68>xs<78>ysr&<00>lp_h<5F>lp_d<5F>min_dy<64>i<>line<6E>
clean_linerBr-r.r(rn<00>descent<6E>width<74>xmin<69>xmax<61>ymax<61>ymin<69>M<>malignr+r,<00> offset_layout<75> corners_horiz<69>corners_rotated<65>height<68>halign<67>valignrr<00>offsetx<74>offsety<74>xmin1<6E>ymin1<6E>xmax1<78>ymax1r<31><00>xyss. r9rzText._get_layoutfs+<00><00>  <20> <0C><05>u<EFBFBD><14>&<26>&<26>(<28>.<2E>.<2E>t<EFBFBD>4<><05> <0F><02> <0F><02> <0F><02> <0F><02>5<> <14>d<EFBFBD>D<EFBFBD>0<>0<> <20>O<EFBFBD>O<EFBFBD>-<2D>5<EFBFBD>5<EFBFBD><14><0F><0F>T<EFBFBD><0F>*<2A>.<2E>.<2E>0<> <0A><01>4<EFBFBD><14><17><14>+<2B><14>!2<>!2<>2<><06> <20><15>'<27> <17>G<EFBFBD>A<EFBFBD>t<EFBFBD>!%<25>!6<>!6<>t<EFBFBD>!<<3C> <1E>J<EFBFBD><06><19>6<><1C>j<EFBFBD>$<24>*><3E>*><3E>!<21>t<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><EFBFBD>'A<>'E<>'E<>G<01><07><01>1<EFBFBD>a<EFBFBD><1E> <0A><01> <0A>A<EFBFBD><01>
<14>A<EFBFBD>t<EFBFBD> <0C>A<EFBFBD><13>A<EFBFBD>t<EFBFBD> <0C>A<EFBFBD> <0E>I<EFBFBD>I<EFBFBD>a<EFBFBD>L<EFBFBD> <0E>I<EFBFBD>I<EFBFBD>a<EFBFBD>L<EFBFBD><1A>A<EFBFBD><05><15><EFBFBD>H<EFBFBD><10>A<EFBFBD>v<EFBFBD><1B>a<EFBFBD>%<25><08><05><16><13>V<EFBFBD>a<EFBFBD>!<21>e<EFBFBD>t<EFBFBD>/@<40>/@<40>%@<40>A<>A<><05> <0E>I<EFBFBD>I<EFBFBD>e<EFBFBD> <1C> <0E>I<EFBFBD>I<EFBFBD>e<EFBFBD> <1C> <11>Q<EFBFBD>J<EFBFBD>E<EFBFBD>? <17>D<14><07><14>B<EFBFBD><07><05><10><04><14><04><10><04><11>"<22>v<EFBFBD><07><1F><04> <15>J<EFBFBD> !<21> !<21>$<24>"3<>"3<>"5<> 6<><01><16>)<29>)<29>+<2B><06> <11>V<EFBFBD> <1B>03<30>B<EFBFBD><02> <0B><<3C><04><01>1<EFBFBD>a<EFBFBD><11>V<EFBFBD><<3C>M<EFBFBD><<3C> <13>x<EFBFBD> <1F>,/<2F><02>B<EFBFBD><02>O<EFBFBD>=<3D>=<3D>!(<28><11>A<EFBFBD>q<EFBFBD> <20>%<25>!<21>)<29>m<EFBFBD>a<EFBFBD>!<21>e<EFBFBD>3<>Q<EFBFBD>7<>=<3D>M<EFBFBD>=<3D> <13>w<EFBFBD> <1E>,/<2F><02>B<EFBFBD><02>O<EFBFBD>=<3D>=<3D>!(<28><11>A<EFBFBD>q<EFBFBD> <20>%<25>i<EFBFBD>!<21>m<EFBFBD>Q<EFBFBD>/<2F>=<3D>M<EFBFBD>=<3D><1B><08><08><12>D<EFBFBD>\<5C>D<EFBFBD>$<24><<3C>$<24><04><1C><04>d<EFBFBD>|<7C> D<>F<01> <0A><1C>+<2B>+<2B>m<EFBFBD>4<><0F><1E>q<EFBFBD>!<21>t<EFBFBD>$<24>(<28>(<28>*<2A><04><1E>q<EFBFBD>!<21>t<EFBFBD>$<24>(<28>(<28>*<2A><04><1E>q<EFBFBD>!<21>t<EFBFBD>$<24>(<28>(<28>*<2A><04><1E>q<EFBFBD>!<21>t<EFBFBD>$<24>(<28>(<28>*<2A><04><14>t<EFBFBD> <0B><05><15><04><1B><06><16>*<2A>*<2A><06><15>(<28>(<28><06><1C>.<2E>.<2E>0<> <0A> <18>H<EFBFBD> $<24><16><18>!<21><1F>$<24>;<3B>!<21>+<2B><07><17>7<EFBFBD>"<22><1E><07><1E><07><15><18>!<21><1F>$<24>;<3B>!<21>+<2B><07><17>5<EFBFBD><1F><1E><07><17>:<3A>%<25><1E><17>.<2E><07><17>,<2C>,<2C><1E><16>-<2D>(<28>S<EFBFBD>.<2E>8<><07><1E><07>(<28><11>+<2B>L<EFBFBD>E<EFBFBD>5<EFBFBD>(<28><11>+<2B>L<EFBFBD>E<EFBFBD>5<EFBFBD><15><18>!<21> <20>5<EFBFBD>=<3D>C<EFBFBD>/<2F><07><17>7<EFBFBD>"<22><1F><07><1F><07><15><18>!<21> <20>5<EFBFBD>=<3D>C<EFBFBD>/<2F><07><17>5<EFBFBD><1F><1F><07><17>:<3A>%<25><1F>(<28>*<2A><07><17>,<2C>,<2C><1F>(<28>S<EFBFBD>.<2E>0<><07><1F><07> <20>{<7B>{<7B>G<EFBFBD>W<EFBFBD>+=<3D>><3E> <1C>G<EFBFBD>W<EFBFBD> <0C><07><0F><04> <0C><07><0F><04><13><1F><1F><04>d<EFBFBD>E<EFBFBD>6<EFBFBD>:<3A><04><10>k<EFBFBD>k<EFBFBD>-<2D>(<28>G<EFBFBD>W<EFBFBD>+=<3D>=<3D><03><13>T<EFBFBD>#<23>e<EFBFBD>S<EFBFBD><12>R<EFBFBD>[<5B>9<>3<EFBFBD>5<EFBFBD>5<EFBFBD>9<>:<3A>G<EFBFBD>C<>C<><43>a=<3D><>=<3D><>=s<00>+Q<06>Q<08> Qc<00>N<00>|<01><>|j<00>}|jdd<01>}|jdd<01>}|<03>d}|<04>d}||j<00>z}n|<04>d}t|t<00>r d|vr|d|zz }t d|t <00>d <09>|<02><01>|_nd|_|j<00>y)
a<EFBFBD>
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))
N<>boxstyle<6C>pad<61>square<72>g333333<33>?z
,pad=%0.2f)<03>rrrr)rr) r@r<><00>get_size<7A>
isinstancer<EFBFBD>r rr<><00>_update_clip_properties)rl<00> rectprops<70>propsrrs r9r<>z Text.set_bbox<6F>s<><00><00>" <15> <20><1D>N<EFBFBD>N<EFBFBD>$<24>E<EFBFBD><1C>y<EFBFBD>y<EFBFBD><1A>T<EFBFBD>2<>H<EFBFBD><17>)<29>)<29>E<EFBFBD>4<EFBFBD>(<28>C<EFBFBD><17><1F>#<23><08><16>;<3B><1B>C<EFBFBD><13>t<EFBFBD>}<7D>}<7D><EFBFBD>&<26><03><16>;<3B><1D>C<EFBFBD><19>(<28>C<EFBFBD>(<28>U<EFBFBD>(<28>-B<><18>L<EFBFBD>3<EFBFBD>.<2E>.<2E><08>-<2D> K<01>!<21>-><3E>-@<40> K<01>DI<44> K<01>D<EFBFBD> <1C> $<24>D<EFBFBD> <1C> <0C>$<24>$<24>&r;c<00><00>|jS)zf
Return the bbox Patch, or None if the `.patches.FancyBboxPatch`
is not made.
)r<>rks r9<00>get_bbox_patchzText.get_bbox_patch&s<00><00>
<14><1F><1F>r;c<00>v<00>|j<00>r,t|j|j<00><00>}t|j |j
<00><00>}|j <00>j||f<02>\}}t||<01>\}}}}|jjdd||<07>|jjt<00>j|j<00><00>j||z||z<00><00>|j|j!<00><00>}|jj#|<08>yy)z<>
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.
r<>N)r<><00>float<61>convert_xunitsrh<00>convert_yunitsrir<>rr:<00>
set_bounds<EFBFBD> set_transformrr<>r<00> translate<74>points_to_pixelsr!<00>set_mutation_scale) rlr!<00>posx<73>posyr7r8r5r6<00>fontsize_in_pixels r9<00>update_bbox_position_sizezText.update_bbox_position_size-s<00><00> <10> <1B> <1B><19><14>,<2C>,<2C>T<EFBFBD>W<EFBFBD>W<EFBFBD>5<>6<>D<EFBFBD><18><14>,<2C>,<2C>T<EFBFBD>W<EFBFBD>W<EFBFBD>5<>6<>D<EFBFBD><1D>+<2B>+<2B>-<2D>7<>7<><14>t<EFBFBD> <0C>E<>J<EFBFBD>D<EFBFBD>$<24>)5<>d<EFBFBD>H<EFBFBD>)E<> &<26>E<EFBFBD>5<EFBFBD>%<25><15> <10> <1C> <1C> '<27> '<27><02>B<EFBFBD><05>u<EFBFBD> =<3D> <10> <1C> <1C> *<2A> *<2A><18>
<EFBFBD><1B><1A>D<EFBFBD>-<2D>-<2D>/<2F>0<><1A><19>4<EFBFBD>%<25><<3C><14><05><1C>6<> 8<>!)<29> 9<> 9<>$<24>-<2D>-<2D>/<2F> J<> <1D> <10> <1C> <1C> /<2F> /<2F>0A<30> B<> r;c<00><><00>|jrHt|j|j|j<00><01>}|jj |<01>yy)N)<03>clip_box<6F> clip_path<74>clip_on)r<>r<><00>clipbox<6F> _clippath<74>_cliponr})rl<00> clippropss r9r#zText._update_clip_propertiesDsD<00><00> <0F> <1B> <1B><1C>d<EFBFBD>l<EFBFBD>l<EFBFBD>'+<2B>~<7E>~<7E>%)<29>\<5C>\<5C>3<>I<EFBFBD> <11> <1C> <1C> #<23> #<23>I<EFBFBD> .<2E> r;c<00>D<00><01>t<00>|<00>|<01>|j<00>yrF)rz<00> set_clip_boxr#)rlr9rs <20>r9r>zText.set_clip_boxKs<00><><00> <0A><07><1C>W<EFBFBD>%<25> <0C>$<24>$<24>&r;c<00>F<00><01>t<00>|<00>||<02>|j<00>yrF)rz<00> set_clip_pathr#)rl<00>pathrrs <20>r9r@zText.set_clip_pathPs<00><><00> <0A><07><1D>d<EFBFBD>I<EFBFBD>.<2E> <0C>$<24>$<24>&r;c<00>D<00><01>t<00>|<00>|<01>|j<00>yrF)rz<00> set_clip_onr#)rl<00>brs <20>r9rCzText.set_clip_onUs<00><><00> <0A><07><1B>A<EFBFBD><1E> <0C>$<24>$<24>&r;c<00><00>|jS)z'Return whether the text can be wrapped.<2E><01>_wraprks r9<00>get_wrapz Text.get_wrapZ<00> <00><00><13>z<EFBFBD>z<EFBFBD>r;c<00><00>||_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 <00><00>&<1A><04>
r;c<00><><00>|j<00>j|j<00><00>\}}|j<00>j <00>}|j <00>}|j d<01>|j<00>}|j||||<03>}|jd|zdz|||<03>}|dk(r|}|S|dk(r|}|Sdt||<07>z}|S)zk
Return the maximum line width for wrapping text based on the current
orientation.
r<><00><><00>hror<>r<>)
r<EFBFBD>r<00> get_positionr<6E>r<><00>get_horizontalalignmentr<74>r<00>_get_dist_to_boxr) rlr<>r<><00>
figure_box<EFBFBD> alignmentrpror<><00>
line_widths r9<00>_get_wrap_line_widthzText._get_wrap_line_widthss<><00><00>
<16>#<23>#<23>%<25>/<2F>/<2F><04>0A<30>0A<30>0C<30>D<><06><02>B<EFBFBD><19>_<EFBFBD>_<EFBFBD>&<26>8<>8<>:<3A>
<EFBFBD><19>0<>0<>2<> <09> <0C><1E><1E>x<EFBFBD>(<28><17>$<24>$<24>&<26><08><13>$<24>$<24>X<EFBFBD>r<EFBFBD>2<EFBFBD>z<EFBFBD>B<><04><14>%<25>%<25> <10>8<EFBFBD>^<5E>s<EFBFBD> "<22>B<EFBFBD><02>J<EFBFBD>8<><05> <15><06> <1E><1D>J<EFBFBD> <1A><19> <17>'<27> !<21><1E>J<EFBFBD><1A><19><1B>S<EFBFBD><14>u<EFBFBD>-<2D>-<2D>J<EFBFBD><19>r;c<00><><00>|dkDrz|dz
}||jz
tjtj|<05><00>z }|j|z
tjtjd|z
<00><00>z }<07>no|dkDry|dz
}||j
z
tjtj|<05><00>z }||jz
tjtjd|z
<00><00>z }n<>|dkDry|dz
}|j |z
tjtj|<05><00>z }||j
z
tjtjd|z
<00><00>z }ns|j|z
tjtj|<01><00>z }|j |z
tjtjd|z
<00><00>z }t||<07>S)zr
Return the distance from the given points to the boundaries of a
rotated box, in pixels.
i<00>ZrL)r<><00>math<74>cos<6F>radiansr<73>r<>r<>r)rlrpr<>r<>rQ<00>quad<61>h1<68>h2s r9rPzText._get_dist_to_box<6F>sx<00><00>
<14>c<EFBFBD>><3E><1B>c<EFBFBD>><3E>D<EFBFBD><14>z<EFBFBD>}<7D>}<7D>$<24><04><08><08><14><1C><1C>d<EFBFBD>1C<31>(D<>D<>B<EFBFBD><1C>-<2D>-<2D>"<22>$<24><04><08><08><14><1C><1C>b<EFBFBD>4<EFBFBD>i<EFBFBD>1H<31>(I<>I<>B<EFBFBD> <15><03>^<5E><1B>c<EFBFBD>><3E>D<EFBFBD><14>z<EFBFBD>}<7D>}<7D>$<24><04><08><08><14><1C><1C>d<EFBFBD>1C<31>(D<>D<>B<EFBFBD><14>z<EFBFBD>}<7D>}<7D>$<24><04><08><08><14><1C><1C>b<EFBFBD>4<EFBFBD>i<EFBFBD>1H<31>(I<>I<>B<EFBFBD> <15><02>]<5D><1B>b<EFBFBD>=<3D>D<EFBFBD><1C>-<2D>-<2D>"<22>$<24><04><08><08><14><1C><1C>d<EFBFBD>1C<31>(D<>D<>B<EFBFBD><14>z<EFBFBD>}<7D>}<7D>$<24><04><08><08><14><1C><1C>b<EFBFBD>4<EFBFBD>i<EFBFBD>1H<31>(I<>I<>B<EFBFBD><1C>-<2D>-<2D>"<22>$<24><04><08><08><14><1C><1C>h<EFBFBD>1G<31>(H<>H<>B<EFBFBD><1C>-<2D>-<2D>"<22>$<24><04><08><08><14><1C><1C>b<EFBFBD>8<EFBFBD>m<EFBFBD>1L<31>(M<>M<>B<EFBFBD><12>2<EFBFBD>r<EFBFBD>{<7B>r;c <00><><00>t|j||j<00>tj|<01>|j d<01><02>j <00>\}}}tj|<02>S)zE
Return the width of a given text string, in pixels.
Tr<54>) rDr<><00>get_fontpropertiesr<00> is_math_textr<74>rCrW<00>ceil)rlr r-r.r(s r9<00>_get_rendered_text_widthzText._get_rendered_text_width<74>sZ<00><00>
/<2F> <10>N<EFBFBD>N<EFBFBD>D<EFBFBD>$<24>"9<>"9<>";<3B> <11> <1E> <1E>t<EFBFBD> $<24> <10>O<EFBFBD>O<EFBFBD><14>O<EFBFBD> &<26> *<2A> *<2A>,<2C><07><01>1<EFBFBD>a<EFBFBD><14>y<EFBFBD>y<EFBFBD><11>|<7C>r;c
<00>,<00>|j<00>s|j<00>S|j<00>r|j<00>S|j<00>}g}|j<00>j d<01>}|D<00>] }|j d<02>}t |<05>dkDs<01>$t |<05>dk(r!|j |jd<03><00><00>>tdt |<05>dz<00>D]<5D>}dj|d|<00>}|j|<07>}||kDr0|j dj|d|dz
<00><00>||dz
d}n7|t |<05>k(s<01>l|j dj|d|<00><00>g}nt |<05>dkDr<01><><EFBFBD><01>dj|<02>S)z<>
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).
r<><00> rrr<>N) rH<00>get_textr<74>rTr<><00>lenr<6E>r<><00>range<67>joinra) rlrS<00> wrapped_lines<65>unwrapped_lines<65>unwrapped_line<6E> sub_wordsrr<00> current_widths r9r<>zText._get_wrapped_text<78>s<><00><00>
<14>}<7D>}<7D><EFBFBD><17>=<3D>=<3D>?<3F> "<22> <10>?<3F>?<3F> <1C><17>=<3D>=<3D>?<3F> "<22><1A>.<2E>.<2E>0<>
<EFBFBD><1A> <0A><1F>-<2D>-<2D>/<2F>/<2F>/<2F><04>5<><0F>.<2E> <1E>N<EFBFBD>&<26>,<2C>,<2C>S<EFBFBD>1<>I<EFBFBD><15>i<EFBFBD>.<2E>1<EFBFBD>$<24><16>y<EFBFBD>><3E>Q<EFBFBD>&<26>!<21>(<28>(<28><19><1D><1D>q<EFBFBD>)9<>:<3A><1C><1E>q<EFBFBD>#<23>i<EFBFBD>.<2E>1<EFBFBD>"4<>5<><1E>A<EFBFBD><1E>8<EFBFBD>8<EFBFBD>I<EFBFBD>b<EFBFBD>q<EFBFBD>M<EFBFBD>2<>D<EFBFBD>$(<28>$A<>$A<>$<24>$G<>M<EFBFBD>%<25>z<EFBFBD>1<>%<25>,<2C>,<2C>S<EFBFBD>X<EFBFBD>X<EFBFBD>i<EFBFBD><06><11>Q<EFBFBD><15>6G<36>-H<>I<>$-<2D>a<EFBFBD>!<21>e<EFBFBD>f<EFBFBD>$5<> <09><1D><1B>c<EFBFBD>)<29>n<EFBFBD>,<2C>%<25>,<2C>,<2C>S<EFBFBD>X<EFBFBD>X<EFBFBD>i<EFBFBD><02><11>m<EFBFBD>-D<>E<>$&<26> <09><1D>!<1E> <16>i<EFBFBD>.<2E>1<EFBFBD>$<24>  <1E>8<14>y<EFBFBD>y<EFBFBD><1D>'<27>'r;c <00><><00>|<01>||_|j<00>sy|j<00>dk(ry|jd|j <00><00>|j |j <00><00><03>5|j|<01>\}}}|j<00>}|j|j}}tjj|<06>rtj}tjj|<07>rtj}t|j!|<06><00>}t|j#|<07><00>} |j%|| f<02>\}} tj&|<08>stj&| <09>r
ddd<00>ytj(|<08>rtj(| <09>st*j-d<04> ddd<00>y|j/<00>\}
} |j0r,|j3|<01>|j0j5|<01>|j7<00>} | j9|j;<00><00>| j=|j?<00><00>| jA|jB<00>| jE|jF<00>|jI| <0C>|jK<00>} |D]<5D>\}}}}tM|<03>dk(r|nd}||z}|| z}|jO<00>r| |z
}|jQ|<0E>\}}|jS<00>rddl*m+}||jS<00>|<01>}n|}|jY<00>r#|j[| ||||j\| |<10><08><00><>|j_| ||||j\| ||<10> <09><00><> ddd<00> ja<00>|jcd<02>d
|_2y#1swY<00>2xYw) Nryr )r z%posx and posy should be finite valuesrr)<01>PathEffectRenderer)<01>mtext)rBroF)3r<33>r<>rd<00>
open_group<EFBFBD>get_gid<69>_cm_setr<74>rr<>rhrirrU<00> is_masked<65>nanr)r*r+r<00>isnan<61>isfinite<74>_log<6F>warning<6E>get_canvas_width_heightr<74>r4<00>draw<61>new_gc<67>set_foreground<6E> get_color<6F> set_alpha<68> get_alpha<68>set_url<72>_urlr<6C>r<><00> _set_gc_cliprre<00>flipyr<79><00>get_path_effects<74>matplotlib.patheffectsrnr<><00>draw_texr<78><00> draw_text<78>restore<72> close_groupr<70>)rlr!r<><00>infor<00>transr+r,r1r2<00>canvasw<73>canvash<73>gc<67>anglerr*rorrBrn<00> textrenderers r9rzz Text.draw<61>sF<00><00> <14> <1F>%<25>D<EFBFBD>N<EFBFBD><13><1F><1F>!<21> <12> <0F>=<3D>=<3D>?<3F>b<EFBFBD> <20> <12><10><1B><1B>F<EFBFBD>D<EFBFBD>L<EFBFBD>L<EFBFBD>N<EFBFBD>3<> <11>\<5C>\<5C>t<EFBFBD>5<>5<>7<>\<5C> 8<>; G<01>"&<26>"2<>"2<>8<EFBFBD>"<<3C> <1F>D<EFBFBD>$<24><07><18>&<26>&<26>(<28>E<EFBFBD><18>7<EFBFBD>7<EFBFBD>D<EFBFBD>G<EFBFBD>G<EFBFBD>q<EFBFBD>A<EFBFBD><11>u<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>!<21><16>F<EFBFBD>F<EFBFBD><01><11>u<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>!<21><16>F<EFBFBD>F<EFBFBD><01><18><14>,<2C>,<2C>Q<EFBFBD>/<2F>0<>D<EFBFBD><18><14>,<2C>,<2C>Q<EFBFBD>/<2F>0<>D<EFBFBD><1E><1F><1F>$<24><04><1C>6<>J<EFBFBD>D<EFBFBD>$<24><11>x<EFBFBD>x<EFBFBD><04>~<7E><12><18><18>$<24><1E><16>; G<01>; G<01> <16>;<3B>;<3B>t<EFBFBD>$<24>B<EFBFBD>K<EFBFBD>K<EFBFBD><04>,=<3D><14> <0C> <0C>D<>E<><16>%; G<01>; G<01>& (<28>?<3F>?<3F>A<> <1C>G<EFBFBD>W<EFBFBD><14><1F><1F><14>.<2E>.<2E>x<EFBFBD>8<><14> <20> <20>%<25>%<25>h<EFBFBD>/<2F><19><1F><1F>"<22>B<EFBFBD> <0E> <1D> <1D>d<EFBFBD>n<EFBFBD>n<EFBFBD>.<2E> /<2F> <0E>L<EFBFBD>L<EFBFBD><14><1E><1E>)<29> *<2A> <0E>J<EFBFBD>J<EFBFBD>t<EFBFBD>y<EFBFBD>y<EFBFBD> !<21> <0E> <1E> <1E>t<EFBFBD>0<>0<> 1<> <10> <1D> <1D>b<EFBFBD> !<21><18>%<25>%<25>'<27>E<EFBFBD>"&<26> G<01><0E><04>b<EFBFBD>!<21>Q<EFBFBD> #<23>D<EFBFBD> <09>Q<EFBFBD><0E><04>D<EFBFBD><05><15><04>H<EFBFBD><01><15><04>H<EFBFBD><01><1B>><3E>><3E>#<23><1F>!<21> <0B>A<EFBFBD>%)<29>%:<3A>%:<3A>4<EFBFBD>%@<40>"<22>
<EFBFBD>F<EFBFBD><17>(<28>(<28>*<2A>I<>#5<><1C>-<2D>-<2D>/<2F><18>$;<3B>L<EFBFBD>$,<2C>L<EFBFBD><17>?<3F>?<3F>$<24> <20>)<29>)<29>"<22>a<EFBFBD><11>J<EFBFBD>*.<2E>*><3E>*><3E><05>05<30>*<2A>7<>!<21>*<2A>*<2A>2<EFBFBD>q<EFBFBD>!<21>Z<EFBFBD>+/<2F>+?<3F>+?<3F><15>28<32><05>+<2B>G<01>+ G<01>I; G<01>z <0B>
<EFBFBD>
<EFBFBD> <0C><10><1C><1C>V<EFBFBD>$<24><1A><04>
<EFBFBD>; G<01>; G<01>s<00>/DO <03> AO <03>GO <03> Oc<00><00>|jS)zReturn the color of the text.)r<>rks r9r}zText.get_color0s <00><00><13>{<7B>{<7B>r;c<00><00>|jS)z*Return the `.font_manager.FontProperties`.)r<>rks r9r^zText.get_fontproperties4s<00><00><13>#<23>#<23>#r;c<00>6<00>|jj<00>S)z<>
Return the list of font families used for font lookup.
See Also
--------
.font_manager.FontProperties.get_family
)r<><00>
get_familyrks r9<00>get_fontfamilyzText.get_fontfamily8<00><00><00><14>#<23>#<23>.<2E>.<2E>0<>0r;c<00>6<00>|jj<00>S)z<>
Return the font name as a string.
See Also
--------
.font_manager.FontProperties.get_name
)r<><00>get_namerks r9<00> get_fontnamezText.get_fontnameBs<00><00><14>#<23>#<23>,<2C>,<2C>.<2E>.r;c<00>6<00>|jj<00>S)z<>
Return the font style as a string.
See Also
--------
.font_manager.FontProperties.get_style
)r<><00> get_stylerks r9<00> get_fontstylezText.get_fontstyleLs<00><00><14>#<23>#<23>-<2D>-<2D>/<2F>/r;c<00>6<00>|jj<00>S)z<>
Return the font size as an integer.
See Also
--------
.font_manager.FontProperties.get_size_in_points
)r<><00>get_size_in_pointsrks r9<00> get_fontsizezText.get_fontsizeVs<00><00><14>#<23>#<23>6<>6<>8<>8r;c<00>6<00>|jj<00>S)z<>
Return the font variant as a string.
See Also
--------
.font_manager.FontProperties.get_variant
)r<><00> get_variantrks r9<00>get_fontvariantzText.get_fontvariant`<00><00><00><14>#<23>#<23>/<2F>/<2F>1<>1r;c<00>6<00>|jj<00>S)z<>
Return the font weight as a string or a number.
See Also
--------
.font_manager.FontProperties.get_weight
)r<><00>
get_weightrks r9<00>get_fontweightzText.get_fontweightjr<>r;c<00>6<00>|jj<00>S)z<>
Return the font stretch as a string or a number.
See Also
--------
.font_manager.FontProperties.get_stretch
)r<><00> get_stretchrks r9r<>zText.get_stretchtr<>r;c<00><00>|jS)zs
Return the horizontal alignment as a string. Will be one of
'left', 'center' or 'right'.
)r<>rks r9rOzText.get_horizontalalignment~s<00><00>
<14>(<28>(<28>(r;c<00><><00>t|j|j<00><00>}t|j|j<00><00>}||fS)z0Return the (x, y) unitless position of the text.)r)r*rhr+rir<>s r9r<>zText.get_unitless_position<6F>s?<00><00> <12>$<24>%<25>%<25>d<EFBFBD>g<EFBFBD>g<EFBFBD>.<2E> /<2F><01> <11>$<24>%<25>%<25>d<EFBFBD>g<EFBFBD>g<EFBFBD>.<2E> /<2F><01><10>!<21>t<EFBFBD> r;c<00>2<00>|j|jfS)z'Return the (x, y) position of the text.)rhrirks r9rNzText.get_position<6F>s<00><00><14>w<EFBFBD>w<EFBFBD><04><07><07><1F>r;c<00><00>|jS)zReturn the text string.)rjrks r9rdz Text.get_text<78>rIr;c<00><00>|jS)z<>
Return the vertical alignment as a string. Will be one of
'top', 'center', 'bottom', 'baseline' or 'center_baseline'.
)r<>rks r9<00>get_verticalalignmentzText.get_verticalalignment<6E>s<00><00>
<14>&<26>&<26>&r;c<00><00>|j<00>stj<00>S|jd<01><02>}|<02> |j}|j <00>dk(rLt j||<02><05>5|j<00>\}}tj||dd<06>cddd<03>S|<01>||_
|j<00>|j<00>|_
|j<00> td<07><00>t j||<02><05>5|j|j<00>\}}}|j<00>\} }
|j<00>j!| |
f<02>\} }
|j#| |
<EFBFBD>}|cddd<03>S#1swY<00><>xYw#1swYyxYw)a<>
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<54>Nry)rCrzoCannot get window extent of text w/o renderer. You likely want to call 'figure.draw_without_rendering()' first.)r<>r<00>unitr<74>rCrdr<00> _setattr_cmr<6D>r<>r<><00> _get_renderer<65> RuntimeErrorrr<>r<>r<00>
translated) rlr!rC<00>fig<69>tx<74>tyr<79>r<>rr+r,s r9r<>zText.get_window_extent<6E>sm<00><00>,<14><1F><1F>!<21><17>9<EFBFBD>9<EFBFBD>;<3B> <1E><12>o<EFBFBD>o<EFBFBD>4<EFBFBD>o<EFBFBD>(<28><03> <0E>;<3B><15>'<27>'<27>C<EFBFBD> <0F>=<3D>=<3D>?<3F>b<EFBFBD> <20><16>"<22>"<22>3<EFBFBD>C<EFBFBD>0<> 6<><1D>-<2D>-<2D>/<2F><06><02>B<EFBFBD><1B>'<27>'<27><02>B<EFBFBD><01>1<EFBFBD>5<> 6<> 6<> <14> <1F>%<25>D<EFBFBD>N<EFBFBD> <0F>><3E>><3E> !<21> <20>.<2E>.<2E>0<>D<EFBFBD>N<EFBFBD> <0F>><3E>><3E> !<21><1E>H<01>I<01> I<01><13> <1E> <1E>s<EFBFBD><03> ,<2C> <18>"&<26>"2<>"2<>4<EFBFBD>><3E>><3E>"B<> <1F>D<EFBFBD>$<24><07><17>-<2D>-<2D>/<2F>D<EFBFBD>A<EFBFBD>q<EFBFBD><17>%<25>%<25>'<27>1<>1<>1<EFBFBD>a<EFBFBD>&<26>9<>D<EFBFBD>A<EFBFBD>q<EFBFBD><17>?<3F>?<3F>1<EFBFBD>a<EFBFBD>(<28>D<EFBFBD><17>  <18> <18> 6<> 6<><36> <18> <18>s<00>/+E0<03><A*E<<03>0E9<07><Fc<00><><00>|j<00>|jt||<01><02><00>n%|jjt|<01><03><00>|j <00>d|_y)z<>
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)<02> facecolor<6F> edgecolor)r<>T)r<>r<>r<>r}r#r<><00>rlrVs r9<00>set_backgroundcolorzText.set_backgroundcolor<6F>sO<00><00> <10> <1B> <1B> #<23> <10>M<EFBFBD>M<EFBFBD>$<24><15>%<25>@<40> A<> <10> <1C> <1C> #<23> #<23>D<EFBFBD>5<EFBFBD>$9<> :<3A> <0C>$<24>$<24>&<26><19><04>
r;c<00><><00>tj|d<01>s tjj |<01><02>||_d|_y)z~
Set the foreground color of the text
Parameters
----------
color : :mpltype:`color`
<20>auto)rVTN)r<00>
_str_equalr<EFBFBD><00>colors<72>_check_color_liker<65>r<>r<>s r9r<>zText.set_color<6F>s7<00><00><15><1F><1F><05>v<EFBFBD>.<2E> <0F>J<EFBFBD>J<EFBFBD> (<28> (<28>u<EFBFBD> (<28> 5<><1B><04> <0B><19><04>
r;c<00>R<00>tjgd<01>|<01><02>||_d|_y)z<>
Set the horizontal alignment relative to the anchor point.
See also :doc:`/gallery/text_labels_and_annotations/text_alignment`.
Parameters
----------
align : {'left', 'center', 'right'}
<20>r<>r<>ro<00><01>alignTN)rr<>r<>r<><00>rlr<>s r9r<>zText.set_horizontalalignment<6E>s$<00><00> <0A><1A><1A>6<>e<EFBFBD>D<>$)<29><04>!<21><19><04>
r;c<00>R<00>tjgd<01>|<01><02>||_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'}
r<>r<>TN)rr<>r<>r<>r<>s r9<00>set_multialignmentzText.set_multialignments$<00><00> <0A><1A><1A>6<>e<EFBFBD>D<>$<24><04><1C><19><04>
r;c<00>V<00>tjt|<01><01>||_d|_y)z<>
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)
)<01>spacingTN)r<00>check_isinstancerr<>r<>)rlr<>s r9r<>zText.set_linespacings#<00><00> <0A><1D><1D>d<EFBFBD>G<EFBFBD>4<>#<23><04><19><19><04>
r;c<00>H<00>|jj|<01>d|_y)a<>
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<><00>
set_familyr<EFBFBD><00>rlrYs r9<00>set_fontfamilyzText.set_fontfamilys<00><00>* <0A><1C><1C>'<27>'<27><08>1<><19><04>
r;c<00>H<00>|jj|<01>d|_y)z<>
Set the font variant.
Parameters
----------
variant : {'normal', 'small-caps'}
See Also
--------
.font_manager.FontProperties.set_variant
TN)r<><00> set_variantr<74>)rlrQs r9<00>set_fontvariantzText.set_fontvariant6s<00><00> <0A><1C><1C>(<28>(<28><17>1<><19><04>
r;c<00>H<00>|jj|<01>d|_y)z<>
Set the font style.
Parameters
----------
fontstyle : {'normal', 'italic', 'oblique'}
See Also
--------
.font_manager.FontProperties.set_style
TN)r<><00> set_styler<65>)rlr\s r9<00> set_fontstylezText.set_fontstyleEs<00><00> <0A><1C><1C>&<26>&<26>y<EFBFBD>1<><19><04>
r;c<00>H<00>|jj|<01>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<><00>set_sizer<65>)rlrZs r9<00> set_fontsizezText.set_fontsizeTs<00><00> <0A><1C><1C>%<25>%<25>h<EFBFBD>/<2F><19><04>
r;c<00>6<00>|jj<00>S)z<>
Return the font family name for math text rendered by Matplotlib.
The default value is :rc:`mathtext.fontset`.
See Also
--------
set_math_fontfamily
)r<><00>get_math_fontfamilyrks r9r<>zText.get_math_fontfamilyfs<00><00><14>#<23>#<23>7<>7<>9<>9r;c<00>:<00>|jj|<01>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<><00>set_math_fontfamily)rlrXs r9r<>zText.set_math_fontfamilyrs<00><00>( <0A><1C><1C>0<>0<><1A><r;c<00>H<00>|jj|<01>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<><00>
set_weightr<EFBFBD>)rlrRs r9<00>set_fontweightzText.set_fontweight<68>s<00><00> <0A><1C><1C>'<27>'<27><06>/<2F><19><04>
r;c<00>H<00>|jj|<01>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<><00> set_stretchr<68>)rlrOs r9<00>set_fontstretchzText.set_fontstretch<63>s<00><00> <0A><1C><1C>(<28>(<28><17>1<><19><04>
r;c<00>T<00>|j|d<00>|j|d<00>y)z}
Set the (*x*, *y*) position of the text.
Parameters
----------
xy : (float, float)
rrN)<02>set_x<5F>set_y)rl<00>xys r9<00> set_positionzText.set_position<6F>s$<00><00> <0A>
<EFBFBD>
<EFBFBD>2<EFBFBD>a<EFBFBD>5<EFBFBD><19> <0C>
<EFBFBD>
<EFBFBD>2<EFBFBD>a<EFBFBD>5<EFBFBD>r;c<00> <00>||_d|_y)zl
Set the *x* position of the text.
Parameters
----------
x : float
TN)rhr<>)rlr+s r9r<>z
Text.set_x<5F><00><00><00><14><04><07><19><04>
r;c<00> <00>||_d|_y)zl
Set the *y* position of the text.
Parameters
----------
y : float
TN)rir<>)rlr,s r9r<>z
Text.set_y<5F>r<>r;c<00> <00>t|t<00>rt|<01>dz|_d|_yt j
|d<02>s|<01>d|_d|_yt j
|d<05>rd|_d|_yt d|<01><00><02><00>) 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<00>
horizontalNr<EFBFBD><00>verticalg<00>V@z;rotation must be 'vertical', 'horizontal' or a number, not T)r"rr)r<>rr<><00>
ValueErrorr<EFBFBD><00>rl<00>ss r9r<>zText.set_rotation<6F>s<><00><00> <16>a<EFBFBD><14> <1E>"<22>1<EFBFBD>X<EFBFBD><03>^<5E>D<EFBFBD>N<EFBFBD><1A><04>
<EFBFBD><13> <1D> <1D>a<EFBFBD><1C> .<2E>!<21>)<29><1F>D<EFBFBD>N<EFBFBD> <1A><04>
<EFBFBD> <13> <1D> <1D>a<EFBFBD><1A> ,<2C> <20>D<EFBFBD>N<EFBFBD><1A><04>
<EFBFBD><1D>.<2E>./<2F>S<EFBFBD>2<>3<> 3r;c<00> <00>||_d|_y)z<>
Whether rotations of the transform affect the text direction.
Parameters
----------
t : bool
TN)r<>r<>)rlr)s r9<00>set_transform_rotates_textzText.set_transform_rotates_text<78>s<00><00>()<29><04>$<24><19><04>
r;c<00>R<00>tjgd<01>|<01><02>||_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'}
)r<><00>bottomr<6D>rnr<>r<>TN)rr<>r<>r<>r<>s r9r<>zText.set_verticalalignment<6E>s)<00><00> <0A><1A><1A> F<><17> <19>#(<28><04><1F><19><04>
r;c<00>^<00>|<01>dn
t|<01>}||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)r<>rjr<>r<>s r9r<>z Text.set_text<78>s1<00><00><14>)<29>B<EFBFBD><13>Q<EFBFBD><16><01> <0C><04>
<EFBFBD>
<EFBFBD>?<3F><1A>D<EFBFBD>J<EFBFBD><1D>D<EFBFBD>J<EFBFBD> r;c<00><><00>|j<00>r |dk(rd}|dfS|j<00>s|dfStj|<01>r|dfS|j dd<07>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\$<24>$)r<><00>get_parse_mathrr_<00>replacer<65>s r9r<>zText._preprocess_math se<00><00> <10>?<3F>?<3F> <1C><10>C<EFBFBD>x<EFBFBD><19><01><14>e<EFBFBD>8<EFBFBD>O<EFBFBD><15>$<24>$<24>&<26><14>e<EFBFBD>8<EFBFBD>O<EFBFBD> <12> <1F> <1F><01> "<22><14>d<EFBFBD>7<EFBFBD>N<EFBFBD><14>9<EFBFBD>9<EFBFBD>U<EFBFBD>C<EFBFBD>(<28>%<25>/<2F> /r;c<00>b<00>tj|<01>j<00>|_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
<00> _from_anyr@r<>r<>)rl<00>fps r9r<>zText.set_fontproperties$s'<00><00> .<2E>7<>7<><02>;<3B>@<40>@<40>B<><04><1C><19><04>
r;z bool, default: :rc:`text.usetex`c<00>v<00>|<01> tjd|_d|_yt|<01>|_d|_y)z<>
Parameters
----------
usetex : bool or None
Whether to render using TeX, ``None`` means to use
:rc:`text.usetex`.
Nz text.usetexT)r<>r<>r<><00>boolr<6C>)rlrss r9r<>zText.set_usetex2s6<00><00> <12>><3E><1E><<3C><<3C> <0A>6<>D<EFBFBD>L<EFBFBD><1A><04>
<EFBFBD> <20><06><<3C>D<EFBFBD>L<EFBFBD><19><04>
r;c<00><00>|jS)z9Return whether this `Text` object uses TeX for rendering.)r<>rks r9r<>zText.get_usetexAs <00><00><13>|<7C>|<7C>r;c<00>$<00>t|<01>|_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)r<><00> _parse_math)rlrvs r9r<>zText.set_parse_mathEs<00><00> <20>
<EFBFBD>+<2B><04>r;c<00><00>|jS)z>Return whether mathtext parsing is considered for this `Text`.)rrks r9r<>zText.get_parse_mathQs<00><00><13><1F><1F>r;c<00>&<00>|j|<01>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)r<>r<>s r9<00> set_fontnamezText.set_fontnameUs<00><00> <0A><1B><1B>H<EFBFBD>%r;)rrry)ryNNNNFrnroNNFNNNrF<00>NN)U<>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>zorderr<72>r<>rmr{r|r}r<>r<>r<>r<>r<>rr<>r<>r<>r<>r<>r<>rr<>r'r4r#r>r@rCrHr<>rTrPrar<>r<00>allow_rasterizationrzr}r^r<>r<>r<>r<>r<>r<>r<>rOr<>rNrdr<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<00> kwarg_docr<63>r<>r<>r<>r<00> __classcell__<5F>rs@r9rcrcPs<00><><00> L<01> <0E>F<EFBFBD><1A>f<EFBFBD>O<EFBFBD>=<3D>!#<23>3<1C><1B>#-<2D>%+<2B> $<24> $<24><1E>!<21>#<23><1C><1B>(-<2D> <20>!<21>3<1C>n<10><12><1B><13><17> <12>$<24>"<22><1B><15>$<24><18><1A><18>#?<3F>J<13> <11> <1D>.6<>-<2D> 5<>@"<22>,<2C> <1A>&#<23><1A>"!<21><1A> VD<01>p&'<27>P <20>C<01>./<2F>'<27>
'<27>
'<27>
<1A><1A>*<1A>4<1B>. <1C>1(<28>f <0C><1F><1F>K<1B> <20>K<1B>Z<1B>$<24>1<>/<2F>0<>9<>2<>1<>2<>)<29><14> <20> <1A>'<27>/<18>b<1A>( <1A> <1A><1A> <1A><1A>0 <1A> <1A><1A>$
:<3A>=<3D>,<1A>"<1A>" <1A> <1A> <1A><1A>* <1A><1A> <1E>"0<>0 <1A><1A>Z<EFBFBD><19><19><<3C>=<3D> <1A>><3E> <1A><1C>
,<2C> <20>&r;rcc<00>*<00>eZdZdZdd<02>Zd<03>Zd<04>Zd<05>Zy)<08>
OffsetFromz4Callable helper class for working with `Annotation`.c<00>P<00>||_|\}}||f|_|j|<03>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)<03>_artist<73>
_ref_coord<EFBFBD>set_unit)rlr<00> ref_coordr<64>r+r,s r9r{zOffsetFrom.__init__ks+<00><00>$<1E><04> <0C><18><04><01>1<EFBFBD><1B>Q<EFBFBD>$<24><04><0F> <0C> <0A> <0A>d<EFBFBD>r;c<00>D<00>tjddg|<01><03>||_y)z<>
Set the unit for input to the transform used by ``__call__``.
Parameters
----------
unit : {'points', 'pixels'}
<20>points<74>pixels)r<>N)rr<><00>_unit)rlr<>s r9rzOffsetFrom.set_unit<69>s <00><00> <0A><1A><1A>H<EFBFBD>h<EFBFBD>/<2F>d<EFBFBD>;<3B><19><04>
r;c<00><00>|jS)z@Return the unit for input to the transform used by ``__call__``.)rrks r9<00>get_unitzOffsetFrom.get_unit<69>rIr;c<00>T<00>t|jt<00>rc|jj|<01>}|j\}}|j
|j |zz}|j|j|zz}n<>t|jt<00>rT|j}|j\}}|j
|j |zz}|j|j|zz}nst|jt<00>r)|jj|j<00>\}}n0tjtttf|j<00><01>|jdk(rdn|jd<03>}t!<00>j#|<07>j%<06>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 r<>rr<>rr<>rrrrrr<>rr/r<00>scaler.)rlr!r<><00>xf<78>yfr+r,rs r9<00>__call__zOffsetFrom.__call__<5F>s3<00><00> <16>d<EFBFBD>l<EFBFBD>l<EFBFBD>F<EFBFBD> +<2B><17><<3C><<3C>1<>1<>(<28>;<3B>D<EFBFBD><19>_<EFBFBD>_<EFBFBD>F<EFBFBD>B<EFBFBD><02><14><07><07>$<24>*<2A>*<2A>r<EFBFBD>/<2F>)<29>A<EFBFBD><14><07><07>$<24>+<2B>+<2B><02>*<2A>*<2A>A<EFBFBD> <17><04> <0C> <0C>h<EFBFBD> /<2F><17><<3C><<3C>D<EFBFBD><19>_<EFBFBD>_<EFBFBD>F<EFBFBD>B<EFBFBD><02><14><07><07>$<24>*<2A>*<2A>r<EFBFBD>/<2F>)<29>A<EFBFBD><14><07><07>$<24>+<2B>+<2B><02>*<2A>*<2A>A<EFBFBD> <17><04> <0C> <0C>i<EFBFBD> 0<><17><<3C><<3C>)<29>)<29>$<24>/<2F>/<2F>:<3A>D<EFBFBD>A<EFBFBD>q<EFBFBD> <10> !<21> !<21>6<EFBFBD>8<EFBFBD>Y<EFBFBD>"?<3F><04> <0C> <0C> U<><19>Z<EFBFBD>Z<EFBFBD>8<EFBFBD>+<2B><01><18>1J<31>1J<31>1<EFBFBD>1M<31><05><17>z<EFBFBD><1F><1F><05>&<26>0<>0<><11>A<EFBFBD>6<>6r;N)r)rrrr r{rrr <00>r;r9rrhs<00><00>><3E><1C>. <1A><1A>7r;rc<00>F<00>eZdZ d
d<02>Zd<03>Zd<04>Zd<05>Zd<06>Zd<07>Zd d<08>Z d d <09>Z
y) <0A>_AnnotationBaseNc<00>^<00>|\}}||f|_||_|j|<03>d|_yrF)r<><00>xycoords<64>set_annotation_clip<69>
_draggable)rlr<>r%<00>annotation_clipr+r,s r9r{z_AnnotationBase.__init__<5F>s4<00><00>
<12><04><01>1<EFBFBD><13>Q<EFBFBD>$<24><04><07> <20><04> <0A> <0C> <20> <20><1F>1<><1E><04>r;c<00><00>|\}}t|t<00>r|n||f\}}|dk(rt|j|<04><00>}|dk(rt|j |<05><00>}|j ||<03>j ||f<02>S)N<>data)r"<00>tupler)r*r+<00>_get_xy_transformr)rlr!r<><00>coordsr+r,<00>xcoord<72>ycoords r9<00>_get_xyz_AnnotationBase._get_xy<78>s<><00><00><11><04><01>1<EFBFBD>#-<2D>f<EFBFBD>e<EFBFBD>#<<3C><16>6<EFBFBD>6<EFBFBD>BR<42><0E><06><06> <11>V<EFBFBD> <1B><15>d<EFBFBD>)<29>)<29>!<21>,<2C>-<2D>A<EFBFBD> <11>V<EFBFBD> <1B><15>d<EFBFBD>)<29>)<29>!<21>,<2C>-<2D>A<EFBFBD><13>%<25>%<25>h<EFBFBD><06>7<>A<>A<>1<EFBFBD>a<EFBFBD>&<26>I<>Ir;c<00>X<00>t|t<00>r8|\}}ddlm}|j ||<03>}|j ||<04>}|||<07>St |<02>rV||<01>}t|t <00>r t|<08>St|t<00>r|Stdt|<08>j<00><00><02><00>t|t<00>r|j|<01>} t| <09>St|t <00>r t|<02>St|t<00>r|St|t<00>s!tdt|<02>j<00><00><02><00>|dk(r|jj S|dk(r3ddlm}
|
j'd<08> <09>}||jj z} | S |j)<00>\} } d \}}| d k(r|j-d<08> <0A>j.}n=| dk(r|j-d<08> <0A>j0}n| dk(r|jj0}|<0E> |j2}n%| dk(r|j5|<01>}nt+|<02>d
<EFBFBD><02><00>| dk(r7t7<00>j9|j-d<12> <0A>j:dz <00>}n<>| dk(r t7<00>}n<>| dk(rHt7<00>j9|j=<00>|j-d<12> <0A>j:zdz <00>}n5| dk(r"t7<00>j8|j><00>}nt+| <0A>d<17><02><00>|j@|<0F>S#t*$rt+|<02>d
<EFBFBD><02>d<00>wxYw)Nr)<01>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*<00>polar)<01> PolarAxesF)<01>apply_theta_transformsz is not a valid coordinater<00>figurer<65><00> subfigure<72>axes<65>offsetrT<>HrrZ<00>fractionz is not a recognized unit)!r"r+<00>matplotlib.transformsr2r,<00>callablerrr<00> TypeError<6F>typerr r<>r<>r8<00> transData<74>matplotlib.projectionsr4<00>PolarTransformr<6D>r<>r<><00>figbboxr<78><00>p0<70>_get_position_xyrrrCr!rNr.)rlr!r-r.r/r2<00>tr1<72>tr2r%r<>r4r<><00> bbox_namer<65><00>bbox0<78>xy0s r9r,z!_AnnotationBase._get_xy_transform<72>s<00><00> <15>f<EFBFBD>e<EFBFBD> $<24>#<23>N<EFBFBD>F<EFBFBD>F<EFBFBD> G<><16>(<28>(<28><18>6<EFBFBD>:<3A>C<EFBFBD><16>(<28>(<28><18>6<EFBFBD>:<3A>C<EFBFBD>,<2C>S<EFBFBD>#<23>6<> 6<> <15>f<EFBFBD> <1D><17><08>!<21>B<EFBFBD><19>"<22>h<EFBFBD>'<27>&<26>r<EFBFBD>*<2A>*<2A><1B>B<EFBFBD> <09>*<2A><19> <09><1F>S<><1B>B<EFBFBD>x<EFBFBD>(<28>(<28>)<29>+<2B>,<2C>,<2C><18><06><06> '<27><19>+<2B>+<2B>H<EFBFBD>5<>D<EFBFBD>"<22>4<EFBFBD>(<28> (<28> <17><06><08> )<29>"<22>6<EFBFBD>*<2A> *<2A> <17><06> <09> *<2A><19>M<EFBFBD><1B>F<EFBFBD>C<EFBFBD>(<28><1B>1<>15<31>f<EFBFBD><1C>1F<31>1F<31>0G<30>I<01>J<01> J<01> <12>V<EFBFBD> <1B><17>9<EFBFBD>9<EFBFBD>&<26>&<26> &<26> <13>w<EFBFBD> <1E> 8<><1A>)<29>)<29><15>)<29>G<>B<EFBFBD><16><14><19><19>,<2C>,<2C>,<2C>E<EFBFBD><18>L<EFBFBD> P<01>$<24>l<EFBFBD>l<EFBFBD>n<EFBFBD>O<EFBFBD>I<EFBFBD>t<EFBFBD> <20>
<EFBFBD><05>s<EFBFBD> <15><08> <20><18>O<EFBFBD>O<EFBFBD><15>O<EFBFBD>/<2F>7<>7<>E<EFBFBD> <16>+<2B> %<25><18>O<EFBFBD>O<EFBFBD><15>O<EFBFBD>/<2F>4<>4<>E<EFBFBD> <16>&<26> <20><18>I<EFBFBD>I<EFBFBD>N<EFBFBD>N<EFBFBD>E<EFBFBD> <11> <1C><17>(<28>(<28>C<EFBFBD> <16>(<28> "<22><16>'<27>'<27><08>1<>C<EFBFBD><1C><06>z<EFBFBD>)C<>D<>E<> E<> <0F>8<EFBFBD> <1B><19><1A>!<21>!<21><14><0F><0F>T<EFBFBD><0F>*<2A>.<2E>.<2E><12>3<>5<>B<EFBFBD> <11>X<EFBFBD> <1D><19><1A>B<EFBFBD> <11>Z<EFBFBD> <1F><19><1A>!<21>!<21><14> <0A> <0A><0F>$<24>/<2F>/<2F>t<EFBFBD>/<2F>"<<3C>"@<40>"@<40>@<40>2<EFBFBD>E<>G<01>B<EFBFBD> <11>Z<EFBFBD> <1F>!<21><18><1A>!<21>!<21>5<EFBFBD>:<3A>:<3A>.<2E>B<EFBFBD><1C><04>x<EFBFBD>'@<40>A<>B<> B<><1B>r<EFBFBD>|<7C>|<7C>S<EFBFBD>!<21>!<21><>E<1A> P<01><1C><06>z<EFBFBD>)C<>D<>E<>4<EFBFBD> O<> P<01>s <00>L<00>L)c<00><00>||_y)a<>
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"``.
N<><01>_annotation_clip)rlrDs r9r&z#_AnnotationBase.set_annotation_clips <00><00>!"<22><04>r;c<00><00>|jS)z<>
Return the annotation's clipping behavior.
See `set_annotation_clip` for the meaning of return values.
rLrks r9<00>get_annotation_clipz#_AnnotationBase.get_annotation_clip#s<00><00> <14>$<24>$<24>$r;c<00>P<00>|j||j|j<00>S)z1Return the pixel position of the annotated point.)r0r<>r%)rlr!s r9rEz _AnnotationBase._get_position_xy+s<00><00><13>|<7C>|<7C>H<EFBFBD>d<EFBFBD>g<EFBFBD>g<EFBFBD>t<EFBFBD>}<7D>}<7D>=<3D>=r;c<00><><00>|<01> |jd<01><02>j<00>}|j<00>}|s|<02>;|jdk(r,|j |<01>}|j
j |<03>Sy)z;Check whether the annotation at *xy_pixel* should be drawn.Tr<54>r*)r<>r<>rOr%rEr8<00>contains_point)rlr!rD<00>xy_pixels r9<00> _check_xyz_AnnotationBase._check_xy/si<00><00> <13> <1B><1B><EFBFBD><EFBFBD>D<EFBFBD><EFBFBD>1<>?<3F>?<3F>A<>H<EFBFBD> <10> $<24> $<24> &<26><01> <0C><11><19>t<EFBFBD>}<7D>}<7D><06>6<><1B>,<2C>,<2C>X<EFBFBD>6<>H<EFBFBD><17>9<EFBFBD>9<EFBFBD>+<2B>+<2B>H<EFBFBD>5<> 5<>r;c<00><><00>ddlm}|jdu}|<01>| }|r&|j<00>|||<02>|_|jS|j<00>|jj<00>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)<01>DraggableAnnotationN)<04>matplotlib.offsetboxrVr'<00>
disconnect)rl<00>state<74>use_blitrV<00> is_draggables r9<00> draggablez_AnnotationBase.draggable:sx<00><00>& =<3D><1B><EFBFBD><EFBFBD>d<EFBFBD>2<> <0C> <11>=<3D>$<24>$<24>E<EFBFBD> <10><13><EFBFBD><EFBFBD>&<26>"5<>d<EFBFBD>H<EFBFBD>"E<><04><0F> <14><EFBFBD><EFBFBD><1E> <14><EFBFBD><EFBFBD>*<2A><14><0F><0F>*<2A>*<2A>,<2C>"<22>D<EFBFBD>O<EFBFBD><13><EFBFBD><EFBFBD>r;)r*NrF<00>NF) rrrr{r0r,r&rOrErTr\r!r;r9r#r#<00>s5<00><00>!<21>!%<25>
<1F>J<01>J"<22>X "<22>%<25>><3E> <14>"r;r#c<00><00><00>eZdZdZd<02>Z dd<03>Zd<04>Zed<05><00>Zejd<06><00>Zed<07><00>Z
e
jd<08><00>Z
d <09>Z d
<EFBFBD>Z ee e d <0B> <0C>Z d <0A>Zd<0E>Zej"d<0F><00>Zdd<10>Zd<13>fd<11> Z<14>xZS)<14>
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<00>f<00>d|jdd<03>d|jdd<03>d|j<00>d<06>S)Nz Annotation(r<00>grfrrg)r<>rjrks r9<00>__str__zAnnotation.__str__ns5<00><00><1C>T<EFBFBD>W<EFBFBD>W<EFBFBD>Q<EFBFBD>Z<EFBFBD><01>N<EFBFBD>"<22>T<EFBFBD>W<EFBFBD>W<EFBFBD>Q<EFBFBD>Z<EFBFBD><01>N<EFBFBD>"<22>T<EFBFBD>Z<EFBFBD>Z<EFBFBD>N<EFBFBD>!<21>L<>Lr;c <00><><00>tj||||<07><01>|<03>|<05>||k7rtjd<03>|<05> |j}||_|<03> |j }|\} }
||_|<06>V|j<00>}d|vr|jdd<06>|_
ndD]} |j| d<02><00>tdi|<06><01>|_ nd|_ tj|| |
|fi|<08><01>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*.
An arrow pointing from the text to the annotated point *xy* can then
be added by defining *arrowprops*.
Parameters
----------
text : str
The text of the annotation.
xy : (float, float)
The point *(x, y)* to annotate. The coordinate system is determined
by *xycoords*.
xytext : (float, float), default: *xy*
The position *(x, y)* to place the text at. The coordinate system
is determined by *textcoords*.
xycoords : single or two-tuple of str or `.Artist` or `.Transform` or callable, default: 'data'
The coordinate system that *xy* is given in. The following types
of values are supported:
- One of the following strings:
==================== ============================================
Value Description
==================== ============================================
'figure points' Points from the lower left of the figure
'figure pixels' Pixels from the lower left of the figure
'figure fraction' Fraction of figure from lower left
'subfigure points' Points from the lower left of the subfigure
'subfigure pixels' Pixels from the lower left of the subfigure
'subfigure fraction' Fraction of subfigure from lower left
'axes points' Points from lower left corner of the Axes
'axes pixels' Pixels from lower left corner of the Axes
'axes fraction' Fraction of Axes from lower left
'data' Use the coordinate system of the object
being annotated (default)
'polar' *(theta, r)* if not native 'data'
coordinates
==================== ============================================
Note that 'subfigure pixels' and 'figure pixels' are the same
for the parent figure, so users who want code that is usable in
a subfigure can use 'subfigure pixels'.
- An `.Artist`: *xy* is interpreted as a fraction of the artist's
`~matplotlib.transforms.Bbox`. E.g. *(0, 0)* would be the lower
left corner of the bounding box and *(0.5, 1)* would be the
center top of the bounding box.
- A `.Transform` to transform *xy* to screen coordinates.
- A function with one of the following signatures::
def transform(renderer) -> Bbox
def transform(renderer) -> Transform
where *renderer* is a `.RendererBase` subclass.
The result of the function is interpreted like the `.Artist` and
`.Transform` cases above.
- A tuple *(xcoords, ycoords)* specifying separate coordinate
systems for *x* and *y*. *xcoords* and *ycoords* must each be
of one of the above described types.
See :ref:`plotting-guide-annotation` for more details.
textcoords : single or two-tuple of str or `.Artist` or `.Transform` or callable, default: value of *xycoords*
The coordinate system that *xytext* is given in.
All *xycoords* values are valid as well as the following strings:
================= =================================================
Value Description
================= =================================================
'offset points' Offset, in points, from the *xy* value
'offset pixels' Offset, in pixels, from the *xy* value
'offset fontsize' Offset, relative to fontsize, from the *xy* value
================= =================================================
arrowprops : dict, optional
The properties used to draw a `.FancyArrowPatch` arrow between the
positions *xy* and *xytext*. Defaults to None, i.e. no arrow is
drawn.
For historical reasons there are two different ways to specify
arrows, "simple" and "fancy":
**Simple arrow:**
If *arrowprops* does not contain the key 'arrowstyle' the
allowed keys are:
========== =================================================
Key Description
========== =================================================
width The width of the arrow in points
headwidth The width of the base of the arrow head in points
headlength The length of the arrow head in points
shrink Fraction of total length to shrink from both ends
? Any `.FancyArrowPatch` property
========== =================================================
The arrow is attached to the edge of the text box, the exact
position (corners or centers) depending on where it's pointing to.
**Fancy arrow:**
This is used if 'arrowstyle' is provided in the *arrowprops*.
Valid keys are the following `.FancyArrowPatch` parameters:
=============== ===================================
Key Description
=============== ===================================
arrowstyle The arrow style
connectionstyle The connection style
relpos See below; default is (0.5, 0.5)
patchA Default is bounding box of the text
patchB Default is None
shrinkA In points. Default is 2 points
shrinkB In points. Default is 2 points
mutation_scale Default is text size (in points)
mutation_aspect Default is 1
? Any `.FancyArrowPatch` property
=============== ===================================
The exact starting point position of the arrow is defined by
*relpos*. It's a tuple of relative coordinates of the text box,
where (0, 0) is the lower left corner and (1, 1) is the upper
right corner. Values <0 and >1 are supported and specify points
outside the text box. By default (0.5, 0.5), so the starting point
is centered in the text box.
annotation_clip : bool or None, default: None
Whether to clip (i.e. not draw) the annotation when the annotation
point *xy* is outside the Axes area.
- If *True*, the annotation will be clipped when *xy* is outside
the Axes.
- If *False*, the annotation will always be drawn.
- If *None*, the annotation will be clipped when *xy* is outside
the Axes and *xycoords* is 'data'.
**kwargs
Additional kwargs are passed to `.Text`.
Returns
-------
`.Annotation`
See Also
--------
:ref:`annotations`
)r%r(NzgYou have used the `textcoords` kwarg, but not the `xytext` kwarg. This can lead to surprising results.<2E>
arrowstyle<EFBFBD>relpos)<02><00>?rf)r<00> headwidth<74>
headlength<EFBFBD>shrink)r )rr)r#r{r<00> warn_externalr%<00> _textcoordsr<73><00>
arrowpropsr@r<><00> _arrow_relposr <00> arrow_patchrc) rlr r<><00>xytextr%<00>
textcoordsrlr(r~r+r,<00>keys r9r{zAnnotation.__init__qs<00><00>X <18> <20> <20><14>!#<23>*2<>1@<40> !<21> B<01>
<13>N<EFBFBD><1A>&<26><1A>h<EFBFBD>&<26> <10> <1E> <1E> 5<> 6<>
<16> <1D><1D><1D><1D>J<EFBFBD>%<25><04><18> <12>><3E><19>W<EFBFBD>W<EFBFBD>F<EFBFBD><15><04><01>1<EFBFBD>$<24><04><0F> <15> !<21>#<23><1F><1F>*<2A>J<EFBFBD><1B>z<EFBFBD>)<29>%/<2F>^<5E>^<5E>H<EFBFBD>j<EFBFBD>%I<><04>"<22>J<01>.<2E>C<EFBFBD><1E>N<EFBFBD>N<EFBFBD>3<EFBFBD><04>-<2D>.<2E>.<2E>L<><1A>L<>D<EFBFBD> <1C>#<23>D<EFBFBD> <1C> <0A> <0A> <0A>d<EFBFBD>A<EFBFBD>q<EFBFBD>$<24>1<>&<26>1r;c<00><><00>|j|<01>rdifStj||<01>\}}|j<00>$|jj|<01>\}}|xs|}||fSr])r<>rcr<>rn)rlr<>r<><00>tinfo<66>in_patchr&s r9r<>zAnnotation.containsCsh<00><00> <0F> !<21> !<21>*<2A> -<2D><18>"<22>9<EFBFBD> <1C><1E>-<2D>-<2D><04>j<EFBFBD>9<><0F><08>%<25> <0F> <1B> <1B> '<27><1E>*<2A>*<2A>3<>3<>J<EFBFBD>?<3F>K<EFBFBD>H<EFBFBD>a<EFBFBD><1F>+<2B>8<EFBFBD>H<EFBFBD><17><15><EFBFBD>r;c<00><00>|jSrF)<01> _xycoordsrks r9r%zAnnotation.xycoordsLs <00><00><13>~<7E>~<7E>r;c<00><><00>d<01>}t|t<00>rtt||<01><00>s||<01>r t d<02><00>||_y)Nc<00>H<00>t|t<00>xr|jd<01>S)Nr9)r"r<><00>
startswith)r<>s r9<00> is_offsetz&Annotation.xycoords.<locals>.is_offsetRs<00><00><1D>a<EFBFBD><13>%<25>@<40>!<21>,<2C>,<2C>x<EFBFBD>*@<40> @r;z'xycoords cannot be an offset coordinate)r"r+<00>any<6E>mapr<70>rv)rlr%rzs r9r%zAnnotation.xycoordsPs=<00><00> A<01> <17>x<EFBFBD><15> '<27>C<EFBFBD><03>I<EFBFBD>x<EFBFBD>0H<30>,I<><1C>X<EFBFBD>&<26><1C>F<>G<> G<>!<21><04>r;c<00>"<00>|j<00>S)zQ
The text position.
See also *xytext* in `.Annotation`.
)rNrks r9<00>xyannzAnnotation.xyannZs<00><00><14> <20> <20>"<22>"r;c<00>&<00>|j|<01>yrF)r<>)rlros r9r~zAnnotation.xyanncs<00><00> <0C><19><19>&<26>!r;c<00><00>|jS)z}
Return the coordinate system to use for `.Annotation.xyann`.
See also *xycoords* in `.Annotation`.
<20>rkrks r9<00> get_anncoordszAnnotation.get_anncoordsgs<00><00> <14><1F><1F>r;c<00><00>||_y)zz
Set the coordinate system to use for `.Annotation.xyann`.
See also *xycoords* in `.Annotation`.
Nr<4E>)rlr-s r9<00> set_anncoordszAnnotation.set_anncoordsos <00><00> "<22><04>r;z>
The coordinate system to use for `.Annotation.xyann`.)<01>docc<00>~<00>|j<00>|jj|<01>tj||<01>yrF)rn<00>
set_figurer )rlr<>s r9r<>zAnnotation.set_figurezs2<00><00> <0F> <1B> <1B> '<27> <10> <1C> <1C> '<27> '<27><03> ,<2C><0E><19><19>$<24><03>$r;c<00>,<00><16><17>|j|j||j<00><00>|j}|<02>ytj ||<01>}|j |<01>x}\<00><16>|jd|j<00><00>}|jj|<05>d|v<01>rq|jdd<05>}|jdd<07>}|jdd <09>}|jd
d <09>} t| |z ||z ||z <00> <0B>}
|jjdi|
<EFBFBD><01>|jd f|j|jzd z df|jdfg} |jd f|j|j zd z df|j dfg} t#| <0B>fd<10><08><11>\} }t#| <0C>fd<12><08><11>\}}||f|_t'j(|<0F>z
| <0A>z
<00>}||z|j+d<0F>z }|x|j_|j_|j0|j2|j$zz}|jj5||<04>d|vr|d}n<>|j6r |j6}n{|j9<00>dk(rd}ne|j+d<07>}t;|j|d z z
|j|d z z
f|j<|z|j>|ztA<00>d<15><16>}|jjC|<14>y)zX
Update the pixel positions of the annotation text and the arrow patch.
N<>mutation_scalerdrir<>rrrg<00> rh)<03> head_length<74>
head_width<EFBFBD>
tail_widthrr<>rfrc<00>&<00><01>t|d<00>z
<00>S<00>Nr<00>r<>)<02>vr<76>s <20>r9<00><lambda>z-Annotation.update_positions.<locals>.<lambda><3E><00><00><><00><13>Q<EFBFBD>q<EFBFBD>T<EFBFBD>B<EFBFBD>Y<EFBFBD><1E>r;)rqc<00>&<00><01>t|d<00>z
<00>Sr<>r<>)r<>r<>s <20>r9r<>z-Annotation.update_positions.<locals>.<lambda><3E>r<>r;<00>patchAryF)r<>rrrr8)<01>simple)"r-r,<00> anncoordsrlrcr<>rE<00>getr!rnr0r<><00>set_arrowstyler<65>r<>r<>r<>rrmr<00>hypotr/<00>shrinkA<6B>shrinkBrDrN<00> set_positionsr<73>rdr rrr<00>
set_patchA)rlr!rlr<><00> arrow_end<6E>msrirrgrh<00>stylekw<6B>xpos<6F>yposr+<00>relposxr,<00>relposy<73>r<>
shrink_pts<EFBFBD> arrow_beginr<6E>rr<>r<>s @@r9<00>update_positionszAnnotation.update_positions<6E>s<><00><><00>
<0A><1A><1A>4<EFBFBD>1<>1<>(<28>D<EFBFBD>N<EFBFBD>N<EFBFBD>K<>L<><19>_<EFBFBD>_<EFBFBD>
<EFBFBD> <15> <1D> <12><13>%<25>%<25>d<EFBFBD>H<EFBFBD>5<><04>!<21>2<>2<>8<EFBFBD><<3C><<3C> <09>F<EFBFBD>B<EFBFBD><02> <17>^<5E>^<5E>,<2C>d<EFBFBD>m<EFBFBD>m<EFBFBD>o<EFBFBD> ><3E><02> <0C><18><18>+<2B>+<2B>B<EFBFBD>/<2F> <17>z<EFBFBD> )<29><1F>^<5E>^<5E>H<EFBFBD>c<EFBFBD>2<>F<EFBFBD><1E>N<EFBFBD>N<EFBFBD>7<EFBFBD>A<EFBFBD>.<2E>E<EFBFBD>"<22><0E><0E>{<7B>B<EFBFBD>7<>I<EFBFBD>#<23><1E><1E> <0C>b<EFBFBD>9<>J<EFBFBD><1B>z<EFBFBD>B<EFBFBD><EFBFBD>&/<2F>"<22>n<EFBFBD>&+<2B>b<EFBFBD>j<EFBFBD>2<>G<EFBFBD> ,<2C>D<EFBFBD> <1C> <1C> +<2B> +<2B> @<40><07> @<40><1A>W<EFBFBD>W<EFBFBD>a<EFBFBD>L<EFBFBD>D<EFBFBD>G<EFBFBD>G<EFBFBD>d<EFBFBD>g<EFBFBD>g<EFBFBD>$5<><11>#:<3A>C<EFBFBD>"@<40>4<EFBFBD>7<EFBFBD>7<EFBFBD>A<EFBFBD>,<2C>O<>D<EFBFBD><19>W<EFBFBD>W<EFBFBD>a<EFBFBD>L<EFBFBD>D<EFBFBD>G<EFBFBD>G<EFBFBD>d<EFBFBD>g<EFBFBD>g<EFBFBD>$5<><11>#:<3A>C<EFBFBD>"@<40>4<EFBFBD>7<EFBFBD>7<EFBFBD>A<EFBFBD>,<2C>O<>D<EFBFBD><1C>T<EFBFBD>'?<3F>@<40>J<EFBFBD>A<EFBFBD>w<EFBFBD><1C>T<EFBFBD>'?<3F>@<40>J<EFBFBD>A<EFBFBD>w<EFBFBD>")<29>7<EFBFBD>!3<>D<EFBFBD> <1E><12><08><08><11>R<EFBFBD><16><11>R<EFBFBD><16>(<28>A<EFBFBD><1F>!<21><1A>h<EFBFBD>&?<3F>&?<3F><01>&B<>B<>J<EFBFBD>BL<42> L<>D<EFBFBD> <1C> <1C> $<24>t<EFBFBD>'7<>'7<>'?<3F><1B>g<EFBFBD>g<EFBFBD><04> <09> <09>D<EFBFBD>,><3E>,><3E> ><3E>><3E> <0B> <0A><18><18>&<26>&<26>{<7B>I<EFBFBD>><3E> <13>z<EFBFBD> !<21><1F><08>)<29>F<EFBFBD> <11> <1D> <1D><19>%<25>%<25>F<EFBFBD> <11>]<5D>]<5D>_<EFBFBD><02> "<22><19>F<EFBFBD><1A>+<2B>+<2B>A<EFBFBD>.<2E>C<EFBFBD><1E><18>G<EFBFBD>G<EFBFBD>c<EFBFBD>A<EFBFBD>g<EFBFBD>%<25>t<EFBFBD>w<EFBFBD>w<EFBFBD><13>q<EFBFBD><17>'8<>9<><1A>j<EFBFBD>j<EFBFBD>3<EFBFBD>&<26>t<EFBFBD>{<7B>{<7B>S<EFBFBD>/@<40>+<2B>-<2D>u<EFBFBD>><3E>F<EFBFBD> <0A><18><18>#<23>#<23>F<EFBFBD>+r;c<00><><00>|<01>||_|j<00>r|j|<01>sy|j|<01>|j |<01>|j
<00>f|j
j d<01><02><00>/|j d<01><02>x}<02>|j
j|<02>|j
j|<01>tj||<01>y)NFr<46>)
r<EFBFBD>r<>rTr<>r4rnr<>r<>rzrc)rlr!r<>s r9rzzAnnotation.draw<61>s<><00><00> <14> <1F>%<25>D<EFBFBD>N<EFBFBD><13><1F><1F>!<21><14><1E><1E><08>)A<> <12> <0A><1D><1D>h<EFBFBD>'<27> <0C>&<26>&<26>x<EFBFBD>0<> <0F> <1B> <1B> '<27><14> <20> <20>+<2B>+<2B><15>+<2B>7<>?<3F> <20>O<EFBFBD>O<EFBFBD><15>O<EFBFBD>7<>7<>S<EFBFBD>D<><14> <20> <20>+<2B>+<2B>C<EFBFBD>0<> <10> <1C> <1C> !<21> !<21>(<28> +<2B> <0A> <09> <09>$<24><08>!r;c<00><00>|j<00>r|j|<01>stj<00>S|<01>||_|j<00>%|j d<01><02>j <00>|_|j<00> td<03><00>|j|j<00>tj|<00>}|g}|j<00>)|j|jj<00><00>tj|<03>S)NTr<54>z)Cannot get window extent without renderer)r<>rTrr<>r<>r<>r<>r<>r<>rcr<>rnr<><00>union)rlr!<00> text_bbox<6F>bboxess r9r<>zAnnotation.get_window_extent<6E>s<><00><00><14><1F><1F>!<21><14><1E><1E><08>)A<><17>9<EFBFBD>9<EFBFBD>;<3B> <1E> <13> <1F>%<25>D<EFBFBD>N<EFBFBD> <0F>><3E>><3E> !<21>!<21>_<EFBFBD>_<EFBFBD>$<24>_<EFBFBD>7<>E<>E<>G<>D<EFBFBD>N<EFBFBD> <0F>><3E>><3E> !<21><1E>J<>K<> K<> <0C><1D><1D>d<EFBFBD>n<EFBFBD>n<EFBFBD>-<2D><18>*<2A>*<2A>4<EFBFBD>0<> <09><1B><1B><06> <0F> <1B> <1B> '<27> <12>M<EFBFBD>M<EFBFBD>$<24>*<2A>*<2A><<3C><<3C>><3E> ?<3F><13>z<EFBFBD>z<EFBFBD>&<26>!<21>!r;c<00>l<00><01>|j|<01>stj<00>St<00>|<00>|<01>SrF)rTr<00>nullrz<00> get_tightbbox)rlr!rs <20>r9r<>zAnnotation.get_tightbbox<6F>s+<00><><00><13>~<7E>~<7E>h<EFBFBD>'<27><17>9<EFBFBD>9<EFBFBD>;<3B> <1E><14>w<EFBFBD>$<24>X<EFBFBD>.<2E>.r;)Nr*NNNrF)rrrr rbr{r<><00>propertyr%<00>setterr~r<>r<>r<>r<>r<>rr rzr<>r<>r rs@r9r_r__s<><00><><00> <08>M<01><1D> <20> <20> <20>!%<25> P2<>d<1F><0E><1E><0E><1E><0E>_<EFBFBD>_<EFBFBD>"<22><15>"<22><0E>#<23><0E>#<23> <0B>\<5C>\<5C>"<22><12>"<22> <20>"<22><19><1D> <0A><A<01>B<01>I<EFBFBD>%<25> ?,<2C>B <0C><1F><1F>"<22> <20>"<22>&"<22>./<2F>/r;r_)r_)0r <00> functools<6C>loggingrW<00>numbersrr><00>numpyr<00>
matplotlibr<EFBFBD>ryrrrrr <00> font_managerr
<00>patchesr r r <00>textpathrr<00>
transformsrrrrrr<00> getLoggerrrwr:rD<00> lru_cacher=<00>interpd<70>define_aliasesrcrr#r_<00>registerr{r!r;r9<00><module>r<>sT<00><01><04><11><0E> <0B><18><0E><12><18>-<2D>-<2D><1A>(<28>?<3F>?<3F>*<2A>M<01>M<01><19>w<EFBFBD><18><18><18>"<22><04>$&<26>NC<01><15><19><14><14>T<EFBFBD><1A>P<01><1B>P<01>  <0C><13><13><14><14><14><14><11>U<EFBFBD><1D>0<>1<><1B>*<2A><17><08><17><08><1D>;<3B><19><19><1D>;<3B><1B>*<2A> <20>6<EFBFBD><1E><16><1B>f<EFBFBD> <02> <03>F&<26>6<EFBFBD>F&<26> <03><14>F&<26>R(G7<>G7<>Tj<1F>j<1F>ZQ/<2F><14><EFBFBD>Q/<2F>h  <0B><12><12><1B><1B>z<EFBFBD>':<3A>':<3A>'B<>'B<><1B>Cr;