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

770 lines
73 KiB
Plaintext
Raw Normal View History

Ë
†RjÚÔãóL—dZddlZddlZddlZddlmZmZddlm Z
ddl m Z
ddlmZddlmZddlmZddlmZddlmZmZmZddlmZmZmZdZ d „Z!d
„Z"d,d „Z#d-d „Z$Gd
„de
jJ«Z&Gd„de&«Z'Gd„de'«Z(Gd„de'«Z)Gd„de&«Z*Gd„de&«Z+Gd„de&«Z,Gd„de&«Z-Gd„de&«Z.d„Z/Gd „d!e.«Z0Gd"„d#e&«Z1Gd$„d%e
jJejd«Z3Gd&„d'«Z4Gd(„d)e4«Z5Gd*„d+e4«Z6y).ac
Container classes for `.Artist`\s.
`OffsetBox`
The base of all container artists defined in this module.
`AnchoredOffsetbox`, `AnchoredText`
Anchor and align an arbitrary `.Artist` or a text relative to the parent
axes or a specific anchor point.
`DrawingArea`
A container with fixed width and height. Children have a fixed position
inside the container and may be clipped.
`HPacker`, `VPacker`
Containers for layouting their children vertically or horizontally.
`PaddedBox`
A container to add a padding around an `.Artist`.
`TextArea`
Contains a single `.Text` instance.
éN)Ú_apiÚ
_docstring)ÚFontProperties)Ú BboxImage)ÚFancyBboxPatchÚFancyArrowPatchÚ bbox_artist)ÚBboxÚBboxBaseÚTransformedBboxFcóR‡‡—d„d„gŠtj‰«ˆˆfd„«}|S)zâ
Decorator for the get_offset method of OffsetBox and subclasses, that
allows supporting both the new signature (self, bbox, renderer) and the old
signature (self, width, height, xdescent, ydescent, renderer).
có—t«S©N©Úlocals)ÚselfÚwidthÚheightÚxdescentÚydescentÚrenderers úW/home/antigravity/intellecton/venv/lib/python3.12/site-packages/matplotlib/offsetbox.pyú<lambda>z$_compat_get_offset.<locals>.<lambda>3s€ÄfÃh€ócó—t«Srr©rÚbboxrs rrz$_compat_get_offset.<locals>.<lambda>4s€¬«€rcó¶•—tj‰|g|¢­i|¤Ž}d|vr|dn%tj|d |d |d|d«}‰|d||d«S)Nrrrrrrr)rÚselect_matching_signaturer
Ú from_bounds)rÚargsÚkwargsÚparamsrÚmethÚsigss €€rÚ
get_offsetz&_compat_get_offset.<locals>.get_offset6s}ø€ä×/Ñ/°°dÐL¸TÒLÀVÑLˆØ"(¨FÑ"2��v’Ü× Ñ  &¨Ñ"4Ð!4°v¸jÑ7IÐ6IØ!'¨¡°&¸Ñ2BóDð
ñ�F˜6‘N D¨&°Ñ*<Ó=Ð=r)Ú functoolsÚwraps)r$r&r%s` @rÚ_compat_get_offsetr)-s8ù€ñ
OÙ 1ð 3€Dô‡_�_�TÓô>óð>ð Ðrcó(—tr t|i|¤Žyyr)ÚDEBUGÚ mbbox_artist)r!r"s rÚ _bbox_artistr-As€Ý Ü�dÐ%˜fÓ%ð
rcóv—tjgd¢|¬«|dk(r=tjdg|D�cgc]}||z‘Œ c}z«}|dd}|€|d|z
}||fS|dk(re|€d}t |«dkDr|t |«z
t |«dz
z }nd}tjdg|D�cgc]}||z‘Œ c}z«}|dd}||fS|d k(ret
|«}|€|€ td
«‚||zt |«z}n|t |«z |z
}||ztjt |««z}||fSycc}wcc}w) a[
Pack boxes specified by their *widths*.
For simplicity of the description, the terminology used here assumes a
horizontal layout, but the function works equally for a vertical layout.
There are three packing *mode*\s:
- 'fixed': The elements are packed tight to the left with a spacing of
*sep* in between. If *total* is *None* the returned total will be the
right edge of the last box. A non-*None* total will be passed unchecked
to the output. In particular this means that right edge of the last
box may be further to the right than the returned total.
- 'expand': Distribute the boxes with equal spacing so that the left edge
of the first box is at 0, and the right edge of the last box is at
*total*. The parameter *sep* is ignored in this mode. A total of *None*
is accepted and considered equal to 1. The total is returned unchanged
(except for the conversion *None* to 1). If the total is smaller than
the sum of the widths, the laid out boxes will overlap.
- 'equal': If *total* is given, the total space is divided in N equal
ranges and each box is left-aligned within its subspace.
Otherwise (*total* is *None*), *sep* must be provided and each box is
left-aligned in its subspace of width ``(max(widths) + sep)``. The
total width is then calculated to be ``N * (max(widths) + sep)``.
Parameters
----------
widths : list of float
Widths of boxes to be packed.
total : float or None
Intended total length. *None* if not used.
sep : float or None
Spacing between boxes.
mode : {'fixed', 'expand', 'equal'}
The packing mode.
Returns
-------
total : float
The total width needed to accommodate the laid out boxes.
offsets : array of float
The left offsets of the boxes.
)ÚfixedÚexpandÚequal)Úmoder/rNéÿÿÿÿr0ér1z@total and sep cannot both be None when using layout mode 'equal') rÚ
check_in_listÚnpÚcumsumÚlenÚsumÚmaxÚ
ValueErrorÚarange)ÚwidthsÚtotalÚsepr2ÚwÚoffsets_ÚoffsetsÚmaxhs rÚ_get_packed_offsetsrDFsf€ô\ ×ÑÒ3¸$Õ?à ˆw‚Ü—9‘9˜a˜S°VÖ#<° A¨£GÒ#<Ñ<Ó=ˆØ˜3˜B�-ˆØ ˆ=ؘR‘L 3Ñ&ˆEØ�gˆ~Ðà
�Ò ð ˆ=؈EÜ ˆv‹;˜Š?Øœ3˜v›;Ñ&¬3¨v«;¸©?Ñ;‰CàˆCÜ—9‘9˜a˜S°VÖ#<° A¨£GÒ#<Ñ<Ó=ˆØ˜3˜B�-ˆØ�gˆ~Ðà
�ŠÜ�6‹{ˆØ ˆ=؈{Ü ð"=ó>ð>à˜C‘Z¤3 v£;Ñ.‰Eàœ#˜f›+Ñ%¨Ñ,ˆCؘ#‘:¤§¡¬3¨v«;Ó!7Ñ7ˆØ�gˆ~Ðð
ùò'$=ùò$=s ´ D1
Â( D6
cóÚ—tjgd¢|¬«|€td„|D««}|dk(r7td„|D««td„|D««f}dgt |«z}||fS|dvrd|f}|D��cgc]\}}| ‘Œ
}}}||fS|d vrd|f}|D��cgc]
\}}||z
‘Œ }}}||fS|d
k(r$d|f}|D��cgc]\}}|||z
z
d z|z
‘Œ}}}fScc}}wcc}}wcc}}w) aÄ
Align boxes each specified by their ``(y0, y1)`` spans.
For simplicity of the description, the terminology used here assumes a
horizontal layout (i.e., vertical alignment), but the function works
equally for a vertical layout.
Parameters
----------
yspans
List of (y0, y1) spans of boxes to be aligned.
height : float or None
Intended total height. If None, the maximum of the heights
(``y1 - y0``) in *yspans* is used.
align : {'baseline', 'left', 'top', 'right', 'bottom', 'center'}
The alignment anchor of the boxes.
Returns
-------
(y0, y1)
y range spanned by the packing. If a *height* was originally passed
in, then for all alignments other than "baseline", a span of ``(0,
height)`` is used without checking that it is actually large enough).
descent
The descent of the packing.
offsets
The bottom offsets of the boxes.
)ÚbaselineÚleftÚtopÚrightÚbottomÚcenter)Úalignc3ó,K—|] \}}||z
–—Œy­wr©©Ú.0Úy0Úy1s rú <genexpr>z'_get_aligned_offsets.<locals>.<genexpr>¸sèø€Ò2¡  R�R˜"•WÑ2ùs‚rFc3ó&K—|] \}}|–—Œ y­wrrNrOs rrSz'_get_aligned_offsets.<locals>.<genexpr>»sèø€Ò-™F˜B ”RÑ-ùó‚c3ó&K—|] \}}|–—Œ y­wrrNrOs rrSz'_get_aligned_offsets.<locals>.<genexpr>»sèø€Ò2K¹&¸"¸b´2Ñ2KùrUr)rGrJ)rIrHrKçà?)rr5r:Úminr8)ÚyspansrrLÚyspanrBrQrRs rÚ_get_aligned_offsetsr[—s<€ô< ×ÑÚ@ÈõOà
€~ÜÑ2¨6Ô2Ó2ˆà �
ÒÜÑ- fÔ-Ó-¬sÑ2KÀFÔ2KÓ/KÐLˆØ�#œ˜F› Ñ#ˆð �'ˆ>Ðð
Ð$Ñ $Ø�F� ˆØ%+×,™6˜2˜r�B’3Ð,ˆÑ,ð �'ˆ>Ðð
Ð"Ñ "Ø�F� ˆØ-3×4¡6 2 r�6˜B“;Ð4ˆÑ4ð
�'ˆ>Ðð
�(Ò Ø�F� ˆØ@F×G±f°b¸"�F˜b 2™gÑ&¨"Ñ,¨rÓ1ÐGˆÑGà �'ˆ>Ðùó-ùó5ùóHsÁ7
CÂC!Â<C'c󯇗eZdZdZˆfd„Zˆfd„Zejjjd„«Zd„Z
d„Z e d„«Z
d„Zd „Zd
„Zd „Zd „Zd
„Zdd„Zd„ZˆxZS)Ú OffsetBoxzÃ
A simple container artist.
The child artists are meant to be drawn at a relative position to its
parent.
Being an artist itself, all parameters are passed on to `.Artist`.
có~•—t‰|�|Ž|j|«|jd«g|_d|_y)NF©rr)ÚsuperÚ__init__Ú_internal_updateÚ set_clip_onÚ _childrenÚ_offset)rr!r"Ú __class__s €rrazOffsetBox.__init__Ós<ø€Ü
‰Ñ˜$ÑØ ×јfÔ%ð
×Ñ˜ÔØˆŒØˆ� rcóp•—t‰|�|«|j«D]}|j|«Œy)zŸ
Set the `.Figure` for the `.OffsetBox` and all its children.
Parameters
----------
fig : `~matplotlib.figure.Figure`
N)r`Ú
set_figureÚ get_children)rÚfigÚcrfs €rrhzOffsetBox.set_figureÝs6ø€ô ‰Ñ˜3ÔØ×"Ñ"Ó$ò ˆAØ
�L‰L˜Õ ñ rcó–—tjjj||«|j «D] }|€Œ||_Œyr)ÚmartistÚArtistÚaxesÚfsetri)rÚaxrks rrozOffsetBox.axesésB€ô �‰×Ñ× Ñ   rÔ*Ø×"Ñ"Ó$ò ˆA؉}Ø�•ñ rcó–—|j|«rdifS|j«D]}|j|«\}}|sŒ||fcSdifS)a•
Delegate the mouse event contains-check to the children.
As a container, the `.OffsetBox` does not respond itself to
mouseevents.
Parameters
----------
mouseevent : `~matplotlib.backend_bases.MouseEvent`
Returns
-------
contains : bool
Whether any values are within the radius.
details : dict
An artist-specific dictionary of details of the event context,
such as which points are contained in the pick radius. See the
individual Artist subclasses for details.
See Also
--------
.Artist.contains
F)Ú_different_canvasriÚcontains)rÚ
mouseeventrkÚaÚbs rrtzOffsetBox.containsñs^€ð0 × !Ñ ! *Ô -ؘ"�9Ð Ø×"Ñ"Ó$ò ˆAØ—:‘:˜jÓ)‰DˆAˆqÚØ˜!�t’ ð ð�bˆyÐrcó —||_d|_y)a×
Set the offset.
Parameters
----------
xy : (float, float) or callable
The (x, y) coordinates of the offset in display units. These can
either be given explicitly as a tuple (x, y), or by providing a
function that converts the extent into the offset. This function
must have the signature::
def offset(width, height, xdescent, ydescent, renderer) -> (float, float)
TN)reÚstale©rÚxys rÚ
set_offsetzOffsetBox.set_offsets€ðˆŒ ؈�
rcó—t|j«r?|j|j|j|j |j
|«S|jS)aO
Return the offset as a tuple (x, y).
The extent parameters have to be provided to handle the case where the
offset is dynamically determined by a callable (see
`~.OffsetBox.set_offset`).
Parameters
----------
bbox : `.Bbox`
renderer : `.RendererBase` subclass
)ÚcallablererrÚx0rQrs rr&zOffsetBox.get_offset#sM€ô ˜Ÿ ™ Ô%ð
�L‰L˜Ÿ™ T§[¡[°4·7±7°(¸T¿W¹W¸HÀhÓ Oð ð—‘ð rcó —||_d|_y)zh
Set the width of the box.
Parameters
----------
width : float
TN)rry)rrs rÚ set_widthzOffsetBox.set_width6s€ðˆŒ
؈�
rcó —||_d|_y)zj
Set the height of the box.
Parameters
----------
height : float
TN)rry)rrs rÚ
set_heightzOffsetBox.set_heightAs€ðˆŒ ؈�
rcób—|jD�cgc]}|j«sŒ|‘Œc}Scc}w)z/Return a list of the visible child `.Artist`\s.)rdÚ get_visible)rrks rÚget_visible_childrenzOffsetBox.get_visible_childrenLs"€àŸ>™>Ö=�a¨Q¯]©]­_’Ò=Ð=ùÒ=s�,¥,có—|jS)z'Return a list of the child `.Artist`\s.)rd©rs rrizOffsetBox.get_childrenPó €à�~‰~Ðrcó—td«‚)a/
Return the bbox of the offsetbox and the child offsets.
The bbox should satisfy ``x0 <= x1 and y0 <= y1``.
Parameters
----------
renderer : `.RendererBase` subclass
Returns
-------
bbox
list of (xoffset, yoffset) pairs
z:get_bbox_and_offsets must be overridden in derived classes)ÚNotImplementedError©rrs rÚ_get_bbox_and_child_offsetsz%OffsetBox._get_bbox_and_child_offsetsTs€ô"Ø HóJð Jrcó.—|j|«\}}|S)z:Return the bbox of the offsetbox, ignoring parent offsets.)r�)rrrrBs rÚget_bboxzOffsetBox.get_bboxfs€à×8Ñ8¸ÓB‰
ˆˆg؈ rcóü—|€ |jd¬«j«}|j|«} |j||«\}}|j ||«S#t$r|j«\}}YŒ0wxYw©NT©Úroot)Ú
get_figureÚ
_get_rendererr�r&Ú TypeErrorÚ
translated)rrrÚpxÚpys rÚget_window_extentzOffsetBox.get_window_extentks|€à Ð Ø—‘¨D�Ó1×?Ñ?ÓAˆHØ�}‰}˜XÓ&ˆð 'Ø—_‘_ T¨8Ó4‰FˆB�ð�‰˜r 2Ó&Ð&øôò 'Ø—_‘_Ó&‰FˆB’ð 'úsµAÁA;Á:A;có4—|j|«\}}|j||«\}}t|j«|«D]2\}\}}|j ||z||zf«|j |«Œ4t
||dtd¬«¬«d|_y)zm
Update the location of children if necessary and draw them
to the given *renderer*.
Fç©Úpad©ÚfillÚpropsN) r�r&Úzipr†r|Údrawr-Údictry© rrrrBr˜r™rkÚoxÚoys rr£zOffsetBox.drawvs“€ð
×8Ñ8¸ÓB‰
ˆˆgØ—‘  xÓ0‰ˆˆBܘt×8Ñ8Ó:¸GÓDò ‰KˆA‰x��BØ
�L‰L˜"˜r™' 2¨¡7Ð+Ô ,Ø
�F‰F�8Õ ð ô �T˜8¨%´tÀ´|ÕD؈�
rr)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rarhrmrnroÚsetterrtr|r)r&r�rƒr†rir�r�ršr£Ú
__classcell__©rfs@rr]r]Ês~ø„ñôô
ð
‡^�^×Ñ×Ññó ðòò@ð$ñóðò$ ò ò>òòJò$ó
'ö rr]có$‡—eZdZ dˆfd„ ZˆxZS)Ú
PackerBasecó„•—t‰|�«||_||_||_||_||_||_||_y)ao
Parameters
----------
pad : float, default: 0.0
The boundary padding in points.
sep : float, default: 0.0
The spacing between items in points.
width, height : float, optional
Width and height of the container box in pixels, calculated if
*None*.
align : {'top', 'bottom', 'left', 'right', 'center', 'baseline'}, default: 'baseline'
Alignment of boxes.
mode : {'fixed', 'expand', 'equal'}, default: 'fixed'
The packing mode.
- 'fixed' packs the given `.Artist`\s tight with *sep* spacing.
- 'expand' uses the maximal available space to distribute the
artists with equal spacing in between.
- 'equal': Each artist an equal fraction of the available space
and is left-aligned (or top-aligned) therein.
children : list of `.Artist`
The artists to pack.
Notes
-----
*pad* and *sep* are in points and will be scaled with the renderer
dpi, while *width* and *height* are in pixels.
N) r`rarrr?ržr2rLrd) rržr?rrrLr2Úchildrenrfs €rrazPackerBase.__init__…sBø€ôH ‰ÑÔØˆŒ ؈Œ
؈ŒØˆŒØˆŒ ؈Œ
Ø!ˆ�r)rœrœNNrFr/N)r¨r©rªrar­r®s@rr°r°„sø„Ø:>Ø:>÷+"ñ+"rr°có—eZdZdZd„Zy)ÚVPackerzí
VPacker packs its children vertically, automatically adjusting their
relative positions at draw time.
.. code-block:: none
+---------+
| Child 1 |
| Child 2 |
| Child 3 |
+---------+
cóX—|jd«}|j|z}|j|z}|j�Q|j «D]>}t |t «sŒ|jdk(sŒ$|j|j«Œ@|j «D�cgc]}|j|«‘Œ}}t|D�cgc]}|j‘Œc}|j|j«\\}} }
t|D�cgc]}|j‘Œc}|j||j«\} } | | |D�cgc]}|j‘Œc}zz
} | d}
| |
z
} t!j"||
| |z
| «j%|«gt'|
| «¢fScc}wcc}wcc}wcc}w)Nçð?r0r)Úpoints_to_pixelsržr?rr†Ú
isinstancer°r2r�r�r[Ú intervalxrLrDrrRr
r Úpaddedr¢)rrÚdpicorržr?rkÚbboxesrrÚx1ÚxoffsetsrÚyoffsetsrs rr�z#VPacker._get_bbox_and_child_offsetsÁs€€à×*Ñ*¨2Ó.ˆØ�h‰h˜ÑˆØ�h‰h˜Ñˆà �:‰:Ð !Ø×.Ñ.Ó0ò
,�ܘa¤Õ,°·±¸8Ó1CØ—K‘K §
¡
Õ+ð
,ð15×0IÑ0IÓ0KÖL¨1�!—*‘*˜XÕ&ÐLˆÐLÜ1Ø(.Ö / ˆT�^‹^Ò /°·±¸T¿Z¹ZóIщˆˆR�(ä.Ø%+Ö ,˜TˆT�[‹[Ò ,¨d¯k©k¸3ÀÇ Á óKш�ð˜X¸VÖ(D°T¨¯«Ò(DÑDÑEˆØ˜A‘;ˆØ˜hÑ&ˆô
× Ñ ˜R ( ¨B°©G°VÓ <× CÑ CÀCÓ HØ &Œc�(˜HÓ%Ð &ð(ð (ùòMùâ /ùâ ,ùâ(DsÂFÃFÄF"Ä;F'N©r¨r©rªr«r�rNrrr´r´³s „ñ ó(rr´có—eZdZdZd„Zy)ÚHPackera 
HPacker packs its children horizontally, automatically adjusting their
relative positions at draw time.
.. code-block:: none
+-------------------------------+
| Child 1 Child 2 Child 3 |
+-------------------------------+
cóü—|jd«}|j|z}|j|z}|j«D�cgc]}|j |«‘Œ}}|s)t j dddd«j|«gfSt|D�cgc]}|j‘Œc}|j|j«\\}} }
t|D�cgc]}|j‘Œc}|j||j«\} } |dj}
| |D�cgc]}|j‘Œc}|
z
z} t j |
|| | |z
«j|«gt!| |
«¢fScc}wcc}wcc}wcc}w)Nr¶r)r·ržr?r†r�r
r rºr[Ú intervalyrrLrDrr2rr¢)rrr»ržr?rkr¼rrQrRr¿rr¾rs rr�z#HPacker._get_bbox_and_child_offsetsçsZ€à×*Ñ*¨2Ó.ˆØ�h‰h˜ÑˆØ�h‰h˜Ñˆà04×0IÑ0IÓ0KÖL¨1�!—*‘*˜XÕ&ÐLˆÐLÙÜ×#Ñ# A q¨!¨QÓ/×6Ñ6°sÓ;¸RÐ?Ð ?ä1Ø(.Ö / ˆT�^‹^Ò /°·±¸d¿j¹jóJщˆˆR�(ä-Ø$*Ö +˜DˆT�Z‹ZÒ +¨T¯Z©Z¸¸d¿i¹ióI‰ˆˆxð�A‰Y�\‰\ˆØ¨&Ö1 $�d—g“gÒ1°BÑ6Ñ7ˆä× Ñ   R¨°°R±Ó8×?Ñ?ÀÓDØ*”#�h Ó)Ð*ð,ð ,ùòMùò
0ùâ +ùò2sÁE*ÂE/ÃE4ÄE9NrÀrNrrrÂrÂÛs „ñ ó,rrÂcóF‡—eZdZdZd
dddœˆfd„ Zd„Zd„Zd d„Zd „ZˆxZ S) Ú PaddedBoxaó
A container to add a padding around an `.Artist`.
The `.PaddedBox` contains a `.FancyBboxPatch` that is used to visualize
it when rendering.
.. code-block:: none
+----------------------------+
| |
| |
| |
| <--pad--> Artist |
| ^ |
| pad |
| v |
+----------------------------+
Attributes
----------
pad : float
The padding in points.
patch : `.FancyBboxPatch`
When *draw_frame* is True, this `.FancyBboxPatch` is made visible and
creates a border around the box.
FN)Ú
draw_frameÚ patch_attrsc ó®•—t‰|�«||_|g|_t ddddddd|d¬« |_|�|j
j
|«y y )
a
Parameters
----------
child : `~matplotlib.artist.Artist`
The contained `.Artist`.
pad : float, default: 0.0
The padding in points. This will be scaled with the renderer dpi.
In contrast, *width* and *height* are in *pixels* and thus not
scaled.
draw_frame : bool
Whether to draw the contained `.FancyBboxPatch`.
patch_attrs : dict or None
Additional parameters passed to the contained `.FancyBboxPatch`.
©rœrœr¶r@Úkr4Tú square,pad=0© r{rrÚ facecolorÚ edgecolorÚmutation_scaleÚsnapÚvisibleÚboxstyleN)r`raržrdrÚpatchÚupdate)rÚchildržrÇrÈrfs €rrazPaddedBox.__init__scø€ô ‰ÑÔØˆŒØ˜ˆŒÜ#Ø ¨BØ SØØØØ#ô

ˆŒ
ð Ð "Ø �J‰J× Ñ ˜kÕ *ð #rcóž—|j|jd«z}|jdj|«j |«dgfS)Nr¶rr_)ržr·rdr�rº)rrržs rr�z%PaddedBox._get_bbox_and_child_offsets6sG€à�h‰h˜×2Ñ2°2Ó6Ñ6ˆØ—‘˜qÑ!×*Ñ*¨8Ó4×;Ñ;¸CÓ@À6À(ÐKÐKrcóN—|j|«\}}|j||«\}}t|j«|«D]!\}\}}|j ||z||zf«Œ#|j |«|j«D]}|j
|«Œd|_y©NF)r�r&r¢r†r|rÇr£ryr¥s rr£zPaddedBox.draw;s¥€à×8Ñ8¸ÓB‰
ˆˆgØ—‘  xÓ0‰ˆˆBܘt×8Ñ8Ó:¸GÓDò -‰KˆA‰x��BØ
�L‰L˜"˜r™' 2¨¡7Ð+Õ ,ð -ð
�‰˜Ô!à×*Ñ*Ó,ò ˆAØ
�F‰F�8Õ ð ðˆ�
rcó–—|jj|j«|r|jj|«d|_y©NT)rÔÚ
set_boundsÚboundsÚset_mutation_scalery©rrÚfontsizes rÚ update_framezPaddedBox.update_frameIs4€Ø �
‰
×јdŸk™kÔ*Ù Ø �J‰J× )Ñ )¨(Ô 3؈�
rcóz—|j|j|««|jj|«yr)ráršrÔr£rŒs rrÇzPaddedBox.draw_frameOs+€à ×ј$×0Ñ0°Ó:Ô;Ø �
‰
�‰˜Õ!r)rœr)
r¨r©rªr«rar�r£rárÇr­r®s@rrÆrÆýs+ø„ñð6+°EÀtö+ò:Lò
óö "rrÆc󂇗eZdZdZd ˆfd„ Zed„«Zejd„«Zd„Zd„Z d„Z
d„Z d „Z d
„Z
d „ZˆxZS)
Ú DrawingAreazí
The DrawingArea can contain any Artist as a child. The DrawingArea
has a fixed width and height. The position of children relative to
the parent is fixed. The children can be clipped at the
boundaries of the parent.
cóÌ•—t‰|�«||_||_||_||_||_tj«|_ tj«|_
y)a"
Parameters
----------
width, height : float
Width and height of the container box.
xdescent, ydescent : float
Descent of the box in x- and y-direction.
clip : bool
Whether to clip the children to the box.
N) r`rarrrrÚ_clip_childrenÚ mtransformsÚAffine2DÚoffset_transformÚ
dpi_transform)rrrrrÚcliprfs €rrazDrawingArea.__init__]sVø€ô ‰ÑÔØˆŒ
؈Œ Ø ˆŒ
Ø ˆŒ
Ø"ˆÔÜ +× 4Ñ 4Ó 6ˆÔÜ(×1Ñ1Ó3ˆÕrcó—|jS)zl
If the children of this DrawingArea should be clipped
by DrawingArea bounding box.
)rærˆs rÚ
clip_childrenzDrawingArea.clip_childrenqs€ð ×"Ñ"Ð"rcó2—t|«|_d|_yrÛ)Úboolræry)rÚvals rrízDrawingArea.clip_childrenys€ä" 3›iˆÔ؈�
rcó4—|j|jzS)zX
Return the `~matplotlib.transforms.Transform` applied to the children.
)rêrérˆs rÚ
get_transformzDrawingArea.get_transform~s€ð×!Ñ! D×$9Ñ$9Ñ9Ð9rcó—y©z+
set_transform is ignored.
NrN©rÚts rÚ
set_transformzDrawingArea.set_transform„ó�rcó˜—||_|jj«|jj|d|d«d|_y©z¸
Set the offset of the container.
Parameters
----------
xy : (float, float)
The (x, y) coordinates of the offset in display units.
rr4TN©reréÚclearÚ translateryrzs rr|zDrawingArea.set_offset‰óB€ðˆŒ Ø ×Ñ×#Ñ#Ô%Ø ×Ñ×'Ñ'¨¨1©¨r°!©uÔ5؈�
rcó—|jS©zReturn offset of the container.©rerˆs rr&zDrawingArea.get_offset—ó €à�|‰|ÐrcóÀ—|jd«}tj|j |z|j |z|j
|z|j |z«S)Nr¶)r·r
r rrrr)rrÚdpi_cors rr�zDrawingArea.get_bbox›sW€à×+Ñ+¨BÓ/ˆÜ×ÑØ
�]‰]ˆN˜WÑ $ t§}¡} n°wÑ&>Ø �J‰J˜Ñ  $§+¡+°Ñ"7ó9ð 9rcó—|jj|«|j«s|j|j ««|j
�|j
|_|j
d¬«}|�|j|«yy)ú&Add an `.Artist` to the container box.NFr’)rdÚappendÚis_transform_setr÷ròror”rh)rrvrjs rÚ
add_artistzDrawingArea.add_artist¢sp€à �‰×јaÔ Ø×!Ñ!Ô#Ø
�O‰O˜D×.Ñ.Ó0Ô 1Ø �9‰9Ð Ø—Y‘YˆAŒFØ�o‰o 5ˆoÓ)ˆØ ˆ?Ø
�L‰L˜Õ ð rc óT—|jd«}|jj«|jj|«t j
t
jddgd|jg|j|jg|jdgg«|j««}|jD]H}|jr)|js|js|j|«|j!|«ŒJt#||dt%d¬«¬«d|_y)Nr¶rFrœr�rŸ)r·rêrüÚscalerçÚTransformedPathÚmpathÚPathrrròrdræÚclipboxÚ _clippathÚ
set_clip_pathr£r-r¤ry)rrrÚtpathrks rr£zDrawingArea.draw­sô€ð×+Ñ+¨BÓ/ˆØ ×Ñ× Ñ Ô"Ø ×Ñ× Ñ  Ô)ô
×+Ñ+Ü �J‰J˜˜A˜  D§K¡KÐ 0ØŸ™ T§[¡[Ð1ØŸ™ Q˜ð)ó
*ð
× Ñ Ó ó "ˆð
—‘ò ˆAØ×"Ò"¨A¯IªI¸¿ºØ—‘ Ô&Ø
�F‰F�8Õ ð ô
�T˜8¨%´tÀ´|ÕD؈�
r)rœrœF)r¨r©rªr«raÚpropertyrír¬ròr÷r|r&r�r r£r­r®s@rräräUs^ø„ñõ4ð(ñ#óð#ð×Ññóðò:ò  ò
òò9ò örräcó`‡—eZdZdZdddœˆfd„
Zd„Zd„Zd„Zd „Zd
„Z d „Z
d „Z d
„Z d„Z
ˆxZS)ÚTextAreazõ
The TextArea is a container artist for a single Text instance.
The text is placed at (0, 0) with baseline+left alignment, by default. The
width and height of the TextArea instance is the width and height of its
child text.
NF)Ú textpropsÚmultilinebaselinecó^•—|€i}tjdd|fi|¤Ž|_t‰|�«|jg|_t
j«|_t
j«|_ |jj|j|jz«||_ y)a»
Parameters
----------
s : str
The text to be displayed.
textprops : dict, default: {}
Dictionary of keyword parameters to be passed to the `.Text`
instance in the TextArea.
multilinebaseline : bool, default: False
Whether the baseline for multiline text is adjusted so that it
is (approximately) center-aligned with single-line text.
Nr) ÚmtextÚTextÚ_textr`rardrçrèréÚ_baseline_transformr÷Ú_multilinebaseline)rÚsrrrfs €rrazTextArea.__init__Îs“ø€ð" Р؈IÜ—Z‘Z  1 aÑ5¨9Ñ5ˆŒ
Ü
‰ÑÔØŸ*™*˜ˆŒÜ +× 4Ñ 4Ó 6ˆÔÜ#.×#7Ñ#7Ó#9ˆÔ Ø �
‰
× Ñ  ×!6Ñ!6Ø!%×!9Ñ!9ñ":ô ;à"3ˆÕrcóH—|jj|«d|_y)z&Set the text of this area as a string.TN)rÚset_textry©rrs rr zTextArea.set_textês€à �
‰
×јAÔØˆ�
rcó6—|jj«S)z5Return the string representation of this area's text.)rÚget_textrˆs rr#zTextArea.get_textïs€à�z‰z×"Ñ"Ó$Ð$rcó —||_d|_y)aX
Set multilinebaseline.
If True, the baseline for multiline text is adjusted so that it is
(approximately) center-aligned with single-line text. This is used
e.g. by the legend implementation so that single-line labels are
baseline-aligned, but multiline labels are "center"-aligned with them.
TN)rryrõs rÚset_multilinebaselinezTextArea.set_multilinebaselineós€ð#$ˆÔ؈�
rcó—|jS)z(
Get multilinebaseline.
)rrˆs rÚget_multilinebaselinezTextArea.get_multilinebaselineÿs€ð×&Ñ&Ð&rcó—yrôrNrõs rr÷zTextArea.set_transformrørcó˜—||_|jj«|jj|d|d«d|_yrúrûrzs rr|zTextArea.set_offset
rþrcó—|jSrrrˆs rr&zTextArea.get_offsetrrc ó¦—tj|d|jj|jj «rdnd|j d¬«j ¬«\}}}|jj|«\}}}|j\}} |jj«t|«dkDr<|jr0d| zd||z
zz
}
|jjd ||
z
«|
}nt||z
| |z
«} | |z} |jj«} d | d
z | d œ| }
t!j"|
| || «S) NÚlpÚTeXFTr’)ÚismathÚdpir4rWré)rGrKrI)rÚ_get_text_metrics_with_cacherÚ_fontpropertiesÚ
get_usetexr”r/Ú _get_layoutÚsizerrür8rrýr:Úget_horizontalalignmentr
r )rrÚ_Úh_Úd_rÚinfoÚydr@ÚhÚyd_newÚh_dÚhars rr�zTextArea.get_bboxs5€Ü×6Ñ6Ø �d˜DŸJ™J×6Ñ6Ø ŸJ™J×1Ñ1Ô3‘5¸Ø—‘ T�Ó*×.Ñ.ô0‰ ˆˆ2ˆrð
Ÿ™×/Ñ/°Ó9‰ˆˆd�BØ�y‰y‰ˆˆ1à × Ñ ×&Ñ&Ô(ä ˆt‹9�qŠ=˜T×4Ò4ؘ1‘W˜s b¨2¡g™Ñ.ˆFØ × $Ñ $× .Ñ .¨q°"°v±+Ô >؉Bä�b˜2‘g˜q 2™vÓ&ˆCØ�b‘ˆAà
�Z‰Z×
/Ñ
/Ó
1ˆØ A 2¨¡6°Q°BÑ
7¸Ñ
;ˆä×Ñ  R C¨¨AÓ.Ð.rcóz—|jj|«t||dtd¬«¬«d|_y©NFrœr�rŸ)rr£r-r¤ryrŒs rr£z
TextArea.draw4s+€à �
‰
�‰˜Ô!Ü�T˜8¨%´tÀ´|ÕD؈�
r)r¨r©rªr«rar r#r%r'r÷r|r&r�r£r­r®s@rrrÅsBø„ñð Ø#(ö4ò8ò
%ò
ò'ò  ò
òò/ö0rrcóL‡—eZdZdZˆfd„Zd„Zd„Zd„Zd„Zd„Z d„Z
d „Z ˆxZ S)
ÚAuxTransformBoxa…
An OffsetBox with an auxiliary transform.
All child artists are first transformed with *aux_transform*, then
translated with an offset (the same for all children) so the bounding
box of the children matches the drawn box. (In other words, adding an
arbitrary translation to *aux_transform* has no effect as it will be
cancelled out by the later offsetting.)
`AuxTransformBox` is similar to `.DrawingArea`, except that the extent of
the box is not predetermined but calculated from the window extent of its
children, and the extent of the children will be calculated in the
transformed coordinate.
có”•—||_t‰|� «tj«|_tj«|_yr)Ú
aux_transformr`rarçrèréÚref_offset_transform)rrErfs €rrazAuxTransformBox.__init__Js:ø€Ø*ˆÔÜ
‰ÑÔÜ +× 4Ñ 4Ó 6ˆÔô%0×$8Ñ$8Ó$:ˆÕ!rcó†—|jj|«|j|j««d|_y)rTN)rdrr÷ròry)rrvs rr zAuxTransformBox.add_artistRs0€à �‰×јaÔ Ø �‰˜×*Ñ*Ó,Ô-؈�
rcóN—|j|jz|jzS)z0Return the `.Transform` applied to the children.)rErFrérˆs rròzAuxTransformBox.get_transformXs,€à×"Ñ"Ø×+Ñ+ñ,à×'Ñ'ñ(ð )rcó—yrôrNrõs rr÷zAuxTransformBox.set_transform^rørcó˜—||_|jj«|jj|d|d«d|_yrúrûrzs rr|zAuxTransformBox.set_offsetcrþrcó—|jSrrrˆs rr&zAuxTransformBox.get_offsetqrrcó—|jj«}|jj«|jj«|jD�cgc]}|j |«‘Œ}}t
j|«}|jj|j |j «|jj|«t
jdd|j|j«Scc}w©Nr)réÚ
get_matrixrFrürdršr
ÚunionrýrrQÚ
set_matrixr rr)rrÚ_offrkr¼Úubs rr�zAuxTransformBox.get_bboxusÅ€à×$Ñ$×/Ñ/Ó1ˆØ ×!Ñ!×'Ñ'Ô)Ø ×Ñ×#Ñ#Ô%à9=¿¹ÖH°A�!×%Ñ% hÕ/ÐHˆÐHÜ
�Z‰Z˜Ó
ˆà ×!Ñ!×+Ñ+¨R¯U©U¨F°R·U±U°FÔ;à ×Ñ×(Ñ(¨Ô.Ü×Ñ  1 b§h¡h°· ± Ó:Ð:ùò
IsÁDcóˆ—|jD]}|j|«Œt||dtd¬«¬«d|_yrA)rdr£r-r¤ry)rrrks rr£zAuxTransformBox.drawƒs:€à—‘ò ˆAØ
�F‰F�8Õ ð ä�T˜8¨%´tÀ´|ÕD؈�
r)
r¨r©rªr«rar ròr÷r|r&r�r£r­r®s@rrCrC;s0ø„ñ
ô;òò )ò  ò
òò ;örrCc ó–‡—eZdZdZdZdddddddd d
d d œ
Zd
dddddddœˆfd„
Zd„Zd„Zd„Z d„Z
d„Z dd„Z e
d„«Zdd„Zd„ZˆxZS)ÚAnchoredOffsetboxa/
An OffsetBox placed according to location *loc*.
AnchoredOffsetbox has a single child. When multiple children are needed,
use an extra OffsetBox to enclose them. By default, the offset box is
anchored against its parent Axes. You may explicitly specify the
*bbox_to_anchor*.
ér4r0éééééé é
)
z upper rightz
upper leftz
lower leftz lower rightrIz center leftz center rightz lower centerz upper centerrKçš™™™™™Ù?rWNT)ržÚ borderpadrÖÚpropÚframeonÚbbox_to_anchorÚbbox_transformc óV•—t‰
|�d
i| ¤Ž|j||«|j|«t |t
«r!t
j|j|¬«}||_ ||_
||_ |€#ttjd¬«|_nZtj |«|_t |t"«r0d|vr,|jj%tjd«t'ddddd |jj)«d
|d ¬ « |_y)a
Parameters
----------
loc : str
The box location. Valid locations are
'upper left', 'upper center', 'upper right',
'center left', 'center', 'center right',
'lower left', 'lower center', 'lower right'.
For backward compatibility, numeric values are accepted as well.
See the parameter *loc* of `.Legend` for details.
pad : float, default: 0.4
Padding around the child as fraction of the fontsize.
borderpad : float, default: 0.5
Padding between the offsetbox frame and the *bbox_to_anchor*.
child : `.OffsetBox`
The box that will be anchored.
prop : `.FontProperties`
This is only used as a reference for paddings. If not given,
:rc:`legend.fontsize` is used.
frameon : bool
Whether to draw a frame around the box.
bbox_to_anchor : `.BboxBase`, 2-tuple, or 4-tuple of floats
Box that is used to position the legend in conjunction with *loc*.
bbox_transform : None or :class:`matplotlib.transforms.Transform`
The transform for the bounding box (*bbox_to_anchor*).
**kwargs
All other parameters are passed on to `.OffsetBox`.
Notes
-----
See `.Legend` for a detailed description of the anchoring mechanism.
)ÚlocNúlegend.fontsize©r5r5rÊr¶r@rËTrÌrÍrN)r`raÚset_bbox_to_anchorÚ set_childr¸ÚstrrÚ
check_getitemÚcodesrer_ržrÚmplÚrcParamsr`Ú _from_anyr¤Úset_sizerÚget_size_in_pointsrÔ) rreržr_rÖr`rarbrcr"rfs €rrazAnchoredOffsetbox.__init__£sòø€ôL ‰ÑÑ"˜6Ò"à ×Ñ °Ô?Ø �‰�uÔä �cœ3Ô Ü×$Ñ$ T§Z¡Z°SÔ9ˆCàˆŒØ"ˆŒØˆŒà ˆ<Ü&¬C¯L©LÐ9JÑ,KÔLˆD�Iä&×0Ñ0°Ó6ˆDŒIܘ$¤Ô%¨&¸Ñ*<Ø— ‘ ×"Ñ"¤3§<¡<Ð0AÑ#BÔCä#Ø ¨BØ SØŸ9™9×7Ñ7Ó9ØØØ#ô

ˆ�
rcóF—||_|�|j|_d|_y)zSet the child to be anchored.NT)Ú_childrory)rrÖs rrizAnchoredOffsetbox.set_childås!€àˆŒ Ø Ð ØŸ™ˆEŒJ؈�
rcó—|jS)zReturn the child.©rsrˆs rÚ get_childzAnchoredOffsetbox.get_childìs €à�{‰{Ðrcó—|jgS)zReturn the list of children.rurˆs rrizAnchoredOffsetbox.get_childrenðs€à— ‘ ˆ}ÐrcóΗ|j|jj««}|j|z}|j «j |«j
|«Sr)r·r`rqržrvr�rº)rrràržs rr�zAnchoredOffsetbox.get_bboxôsP€à×,Ñ,¨T¯Y©Y×-IÑ-IÓ-KÓLˆØ�h‰h˜Ñ!ˆØ�~‰~Ó×(Ñ(¨Ó2×9Ñ9¸#Ó>Ð>rcó¦—|j€|jjS|j}|€ |jSt |j|«S)z,Return the bbox that the box is anchored to.)Ú_bbox_to_anchorrorÚ_bbox_to_anchor_transformr )rÚ transforms rÚget_bbox_to_anchorz$AnchoredOffsetbox.get_bbox_to_anchorúsL€à × Ñ Ð 'Ø—9‘9—>‘>Ð !à×6Ñ6ˆIØÐ Ø×+Ñ+Ð+ä& t×';Ñ';¸YÓGÐGrcóü—|�t|t«r||_n4 t|«}|dk(r |d|dddg}t
j|Ž|_||_d|_ y#t$r}t d|›�«|‚d}~wwxYw)aB
Set the bbox that the box is anchored to.
*bbox* can be a Bbox instance, a list of [left, bottom, width,
height], or a list of [left, bottom] where the width and
height will be assumed to be zero. The bbox will be
transformed to display coordinate by the given transform.
NzInvalid bbox: r0rr4T)
r¸r rzr8r–r;r
r r{ry)rrr|ÚlÚerrs rrhz$AnchoredOffsetbox.set_bbox_to_anchors’€ð ˆ<œ: d¬HÔ5Ø#'ˆDÕ ð
Cܘ“I�ð�AŠvؘQ™  a¡¨!¨QÐ/�ä#'×#3Ñ#3°TÐ#:ˆDÔ à)2ˆÔ&؈�
øôò
CÜ  >°$°Ð!8Ó9¸sÐBûð
Cúsœ AÁ A;Á'A6Á6A;c óT—|j|j|jj««z}|j «}t |j tjdd|j|j«||«\}}||jz
||jz
fSrM)
r_r·r`rqr}Ú_get_anchored_bboxrer
r rrrrQ)rrrržrbrrQs rr&zAnchoredOffsetbox.get_offsetsŽ€ð�~‰~Ø×*Ñ*¨4¯9©9×+GÑ+GÓ+IÓJñKˆà×0Ñ0Ó2ˆÜ#Ø �H‰H”d×&Ñ& q¨!¨T¯Z©Z¸¿¹ÓEØ ˜Có!‰ˆˆBð�D—G‘G‰|˜R $§'¡'™\Ð)Ð)rcóŠ—|jj|j«|r|jj|«yyr)rÔrÜrÝrÞrßs rrázAnchoredOffsetbox.update_frame)s2€Ø �
‰
×јdŸk™kÔ*Ù Ø �J‰J× )Ñ )¨(Õ 3ð rcóÊ—|j«sy|j|«}|j|jj ««}|j ||«|j j|«|j|j|«|«\}}|j«j||f«|j«j|«d|_ yrÙ)
r…ršr·r`rqrárÔr£r&r�rvr|ry)rrrràr˜r™s rr£zAnchoredOffsetbox.draw.s²€à×ÑÔ!Ø ð×%Ñ% hÓ/ˆØ×,Ñ,¨T¯Y©Y×-IÑ-IÓ-KÓLˆØ ×ј$ Ô)Ø �
‰
�‰˜Ô!à—‘ §¡¨xÓ!8¸(ÓC‰ˆˆBØ �‰Ó×#Ñ# R¨ HÔ-Ø �‰Ó×јhÔ'؈�
rr)r¨r©rªr«Úzorderrlrarirvrir�r}rhr)r&rár£r­r®s@rrUrU‹sŽø„ñð€FðØØØØØØØØØñ
€Eð CØ $°Ø $Ø $ö @
òDòòò?ò Hóð2ñ*óð*ó4ö
rrUcón—gd¢|}|j| «}|j||¬«jS)z}
Return the (x, y) position of the *bbox* anchored at the *parentbbox* with
the *loc* code with the *borderpad*.
) NÚNEÚNWÚSWÚSEÚEÚWr‹ÚSÚNÚC)Ú container)rºÚanchoredÚp0)rerÚ
parentbboxr_rkr�s rr‚r‚?s:€ò EÀSÑI€AØ×!Ñ! 9 *Ó-€IØ �=‰=˜ iˆ=Ó 0× 3Ñ 3Ð3rcó,‡—eZdZdZddddœˆfd„
ZˆxZS)Ú AnchoredTextz&
AnchoredOffsetbox with Text.
r^rWN)ržr_r`c óò•—|€i}ddh}|t|«zr td«‚t||¬«|_|jjj «}t
‰ |�|f|||j|dœ|¤Žy)aq
Parameters
----------
s : str
Text.
loc : str
Location code. See `AnchoredOffsetbox`.
pad : float, default: 0.4
Padding around the text as fraction of the fontsize.
borderpad : float, default: 0.5
Spacing between the offsetbox frame and the *bbox_to_anchor*.
prop : dict, optional
Dictionary of keyword parameters to be passed to the
`~matplotlib.text.Text` instance contained inside AnchoredText.
**kwargs
All other parameters are passed to `AnchoredOffsetbox`.
NÚvaÚverticalalignmentz<Mixing verticalalignment with AnchoredText is not supported.)r)ržr_rÖr`)Úsetr;rÚtxtrÚget_fontpropertiesr`ra)
rrreržr_r`r"Ú badkwargsÚfprfs
€rrazAnchoredText.__init__Psˆø€ð0 ˆ<؈DØÐ.Ð/ˆ Ø ”s˜4“yÒ ÜØNóPð
Pô˜A¨Ô.ˆŒØ
�X‰X�^‰^×
.Ñ
.Ó
0ˆÜ
‰ÑØ ð Ø I°T·X±XÀBñ àó r)r¨r©rªr«rar­r®s@rr•r•Ksø„ñð'*°S¸t÷#ò#rr•c
ód‡—eZdZddddddddddœ ˆfd„
Zd„Zd „Zd
„Zd „Zd „Zd
„Z d„Z
d„Z ˆxZ S)Ú OffsetImager4NTg@F) ÚzoomÚcmapÚnormÚ
interpolationÚoriginÚ
filternormÚ filterradÚresamplerc óÞ•—t‰ |�«|
|_td|j||||||| dœ| ¤Ž|_|j
g|_|j|«|j|«y)N)rr¡r¢r£r¤r¥r¦r§rN) r`raÚ_dpi_corrršÚimagerdÚset_zoomÚset_data)
rÚarrr r¡r¢r£r¤r¥r¦r§rr"rfs
€rrazOffsetImage.__init__xsvø€ô ‰ÑÔØˆŒ
äð ! D×$:Ñ$:Ø$(Ø$(Ø-:Ø&,Ø*4Ø)2Ø(0ñ !ð"(ñ !ˆŒ
ðŸ*™*˜ˆŒà �
‰
�dÔØ �
‰
�cÕrcó�—tj|«|_|jj |j«d|_yrÛ)r6ÚasarrayÚ_datarªr¬ry)rr­s rr¬zOffsetImage.set_data˜s.€Ü—Z‘Z “_ˆŒ
Ø �
‰
×јDŸJ™JÔ'؈�
rcó—|jSr)r°rˆs rÚget_datazOffsetImage.get_data�ó €Ø�z‰zÐrcó —||_d|_yrÛ)Ú_zoomry)rr s rr«zOffsetImage.set_zoom s€ØˆŒ
؈�
rcó—|jSr)rµrˆs rÚget_zoomzOffsetImage.get_zoom¤r³rcó—|jSrrrˆs rr&zOffsetImage.get_offset§rrcó—|jgSr)rªrˆs rrizOffsetImage.get_children«s€Ø—
‘
ˆ|Ðrcóô—|jr|jd«nd}|j«}|j«}|jdd\}}||z|z||z|z}}t j dd||«S)Nr¶r0r)r©r·r·r²Úshaper
r ) rrrr ÚdataÚnyÚnxr@r<s rr�zOffsetImage.get_bbox®su€Ø37·=²=�(×+Ñ+¨BÔ/ÀbˆØ�}‰}‹ˆØ�}‰}‹ˆØ—‘˜B˜Q�‰ˆˆBؘ‰|˜dÑ" G¨b¡L°4Ñ$7ˆ1ˆÜ×Ñ  1 a¨Ó+Ð+rcóH—|jj|«d|_yrÙ)rªr£ryrŒs rr£zOffsetImage.draw¶s€à �
‰
�‰˜Ô!àˆ�
r)
r¨r©rªrar¬r²r«r·r&rir�r£r­r®s@rrŸrŸvsNø„ðØØØ#ØØ ØØØöò@ò
òòòòò,örrŸc
óö—eZdZdZdZd„Zejdddddddddœd „«Ze d
„«Z
e
jd „«Z
e d „«Z e jd
„«Z d„Z
d„Zd„Zdd„Zd„Zdd„Zdd„Zd„Zd„Zy)ÚAnnotationBboxzâ
Container for an `OffsetBox` referring to a specific position *xy*.
Optionally an arrow pointing from the offsetbox to *xy* can be drawn.
This is like `.Annotation`, but with `OffsetBox` instead of `.Text`.
rWcóL—d|jdd›d|jdd›d�S)NzAnnotationBbox(rÚgú,r4ú))r{rˆs rÚ__str__zAnnotationBbox.__str__Ès+€Ø  §¡¨¡¨A ¨a°·±¸±
¸1¨~¸QÐ?Ð?rNTr^©rWrW)raržÚannotation_clipÚ
box_alignmentÚ bboxpropsÚ
arrowpropsràc
ó´—tjj|«tjj||||¬«||_| �| j
«nd|_|j| «|�|n||_ |�|n||_
| |_ | �<|jjdd«|_
td
i|j¤Ž|_nd|_
d|_t!ddddd|j"j%«d |¬
«|_|j&j)d |¬ «|
r|j&j*di|
¤Ž|j-|
«y)a
Parameters
----------
offsetbox : `OffsetBox`
xy : (float, float)
The point *(x, y)* to annotate. The coordinate system is determined
by *xycoords*.
xybox : (float, float), default: *xy*
The position *(x, y)* to place the text at. The coordinate system
is determined by *boxcoords*.
xycoords : single or two-tuple of str or `.Artist` or `.Transform` or callable, default: 'data'
The coordinate system that *xy* is given in. See the parameter
*xycoords* in `.Annotation` for a detailed description.
boxcoords : single or two-tuple of str or `.Artist` or `.Transform` or callable, default: value of *xycoords*
The coordinate system that *xybox* is given in. See the parameter
*textcoords* in `.Annotation` for a detailed description.
frameon : bool, default: True
By default, the text is surrounded by a white `.FancyBboxPatch`
(accessible as the ``patch`` attribute of the `.AnnotationBbox`).
If *frameon* is set to False, this patch is made invisible.
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.