Ë
    ¸Ó^jgX  ã                   óÔ   — d dl mZ d dlZd dlmZ d dlZd dlmZm	Z	 d dl
mZ ddlmZmZmZ ddlmZmZ  G d	„ d
«      Z e	j(                  ed«      Z G d„ d«      Z G d„ de«      ZeZy)é    )ÚNumberN)Ú
MethodType)Ú_apiÚcbook)ÚSubplotSpecé   )ÚSizeÚSubplotDividerÚDivider)ÚAxesÚSimpleAxisArtistc                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚCbarAxesBasec                ó2   •— || _         t        ‰| �  |i |¤Ž y ©N)ÚorientationÚsuperÚ__init__)Úselfr   ÚargsÚkwargsÚ	__class__s       €úl/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/mpl_toolkits/axes_grid1/axes_grid.pyr   zCbarAxesBase.__init__   s   ø€ Ø&ˆÔÜ‰Ñ˜$Ð) &Ó)ó    c                 ób   —  | j                  d¬«      j                  |f| | j                  dœ|¤ŽS )NF©Úroot)ÚcaxÚlocation)Ú
get_figureÚcolorbarr   )r   Úmappabler   s      r   r!   zCbarAxesBase.colorbar   sA   € Ø3ˆt�‰ EˆÓ*×3Ñ3ØðEØ¨×)9Ñ)9ñEØ=CñEð 	Er   )Ú__name__Ú
__module__Ú__qualname__r   r!   Ú__classcell__©r   s   @r   r   r      s   ø„ ô*öEr   r   zCbar{}c            	       óþ   — e Zd ZdZeZ ej                  ddd«      	 	 	 dddddddd	œd
„«       Zd„ Z	d„ Z
 ed„ «      Z  ej                  d«       ed„ «      «      Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGridaL  
    A grid of Axes.

    In Matplotlib, the Axes location (and size) is specified in normalized
    figure coordinates. This may not be ideal for images that needs to be
    displayed with a given aspect ratio; for example, it is difficult to
    display multiple images of a same size with some fixed padding between
    them.  AxesGrid can be used in such case.

    Attributes
    ----------
    axes_all : list of Axes
        A flat list of Axes. Note that you can also access this directly
        from the grid. The following is equivalent ::

            grid[i] == grid.axes_all[i]
            len(grid) == len(grid.axes_all)

    axes_column : list of list of Axes
        A 2D list of Axes where the first index is the column. This results
        in the usage pattern ``grid.axes_column[col][row]``.
    axes_row : list of list of Axes
        A 2D list of Axes where the first index is the row. This results
        in the usage pattern ``grid.axes_row[row][col]``.
    axes_llc : Axes
        The Axes in the lower left corner.
    n_axes : int
        Number of Axes in the grid.
    z3.11ÚngridsÚn_axesNFTÚL)Ú	share_allÚshare_xÚshare_yÚ
label_modeÚ
axes_classÚaspectc                óV  — |\  | _         | _        |€| j                   | j                  z  }n9d|cxk  r&| j                   | j                  z  k  st        d«      ‚ t        d«      ‚t        t        j
                  t        j                  |d«      «      \  | _        | _	        t        j                  ddg|¬«       || _        |€| j                  }n1t        |t        t         f«      r|\  }}t#        j$                  |fi |¤Ž}t'        g g |¬«      }t        |t(        t*        f«      rt-        ||fi |¤Ž| _        nOt1        |«      d	k(  rt-        |g|¢­i |¤Ž| _        n,t1        |«      d
k(  rt3        ||fi |¤Ž| _        nt5        d«      ‚| j.                  j7                  «       }t        j8                  | j                   | j                  fdt:        ¬«      }t=        |«      D ]G  }| j?                  |«      \  }}|r|d   x}}n|r|d|f   nd}|	r||df   nd} |||||¬«      |||f<   ŒI |jA                  | j                  dk(  rdnd¬«      jC                  «       d| | _"        |D ��cg c]  }|D �cg c]  }|sŒ|‘Œ	 c}‘Œ c}}| _#        |jH                  D ��cg c]  }|D �cg c]  }|sŒ|‘Œ	 c}‘Œ c}}| _%        | jJ                  d   d   | _&        | jO                  «        | jD                  D ]  }|jQ                  |«       Œ | jS                  |
«       yc c}w c c}}w c c}w c c}}w )aæ  
        Parameters
        ----------
        fig : `.Figure`
            The parent figure.
        rect : (float, float, float, float), (int, int, int), int, or     `~.SubplotSpec`
            The axes position, as a ``(left, bottom, width, height)`` tuple,
            as a three-digit subplot position code (e.g., ``(1, 2, 1)`` or
            ``121``), or as a `~.SubplotSpec`.
        nrows_ncols : (int, int)
            Number of rows and columns in the grid.
        n_axes : int, optional
            If given, only the first *n_axes* axes in the grid are created.
        direction : {"row", "column"}, default: "row"
            Whether axes are created in row-major ("row by row") or
            column-major order ("column by column").  This also affects the
            order in which axes are accessed using indexing (``grid[index]``).
        axes_pad : float or (float, float), default: 0.02
            Padding or (horizontal padding, vertical padding) between axes, in
            inches.
        share_all : bool, default: False
            Whether all axes share their x- and y-axis.  Overrides *share_x*
            and *share_y*.
        share_x : bool, default: True
            Whether all axes of a column share their x-axis.
        share_y : bool, default: True
            Whether all axes of a row share their y-axis.
        label_mode : {"L", "1", "all", "keep"}, default: "L"
            Determines which axes will get tick labels:

            - "L": All axes on the left column get vertical tick labels;
              all axes on the bottom row get horizontal tick labels.
            - "1": Only the bottom left axes is labelled.
            - "all": All axes are labelled.
            - "keep": Do not do anything.

        axes_class : subclass of `matplotlib.axes.Axes`, default: `.mpl_axes.Axes`
            The type of Axes to create.
        aspect : bool, default: False
            Whether the axes aspect ratio follows the aspect ratio of the data
            limits.
        Nr   z7n_axes must be positive and not larger than nrows*ncolsé   ÚcolumnÚrow)Ú	direction)Ú
horizontalÚverticalr2   é   é   zIncorrect rect format)Údtype)r   r   )ÚsharexÚshareyÚCÚF)Úorderéÿÿÿÿ)*Ú_nrowsÚ_ncolsÚ
ValueErrorÚmapr	   ÚFixedÚnpÚbroadcast_toÚ_horiz_pad_sizeÚ_vert_pad_sizer   Úcheck_in_listÚ
_directionÚ_defaultAxesClassÚ
isinstanceÚlistÚtupleÚ	functoolsÚpartialÚdictr   r   r
   Ú_dividerÚlenr   Ú	TypeErrorÚget_positionÚfullÚobjectÚrangeÚ_get_col_rowÚravelÚtolistÚaxes_allÚaxes_rowÚTÚaxes_columnÚaxes_llcÚ_init_locatorsÚadd_axesÚset_label_mode)r   ÚfigÚrectÚnrows_ncolsr+   r7   Úaxes_padr-   r.   r/   r0   r1   r2   Úclsr   ÚkwÚ
axes_arrayÚiÚcolr6   r=   r>   Úaxs                          r   r   zGrid.__init__<   sõ  € ðt $/Ñ ˆŒ�T”[àˆ>Ø—[‘[ 4§;¡;Ñ.‰Fà�vÔ: §¡¨t¯{©{Ñ!:Ò:Ü ØMóOð Oð ;Ü ØMóOð Oô 58Ü�J‰JœŸ™¨°!Ó4ó56Ñ1ˆÔ˜dÔ1ô 	×Ñ˜H eÐ,¸	ÕBØ#ˆŒàÐØ×/Ñ/‰JÜ˜
¤T¬5 MÔ2Ø$‰KˆC�Ü"×*Ñ*¨3Ñ9°&Ñ9ˆJä˜R¨"°VÔ<ˆÜ�dœV¤[Ð1Ô2Ü*¨3°Ñ;¸Ñ;ˆD�MÜ�‹Y˜!Š^Ü*¨3Ð<°Ò<¸Ñ<ˆD�MÜ�‹Y˜!Š^Ü# C¨Ñ4°Ñ4ˆD�MäÐ3Ó4Ð4à�}‰}×)Ñ)Ó+ˆä—W‘W˜dŸk™k¨4¯;©;Ð7¸ÄVÔLˆ
Ü�v“ò 	9ˆAØ×(Ñ(¨Ó+‰HˆC�ÙØ",¨TÑ"2Ð2�™á/6˜ A s FÒ+¸D�Ù/6˜ C¨ FÒ+¸D�Ù#-Ø�T &°ô$9ˆJ�s˜C�xÒ ð	9ð #×(Ñ(ØŸ™¨EÒ1‘#°sð )ó <ß<B¹F»HÀWÀfðNˆŒà=G×H°c sÖ1 ªbš"Ô1ÓHˆŒØ@JÇÁ×M¸¨#Ö4 B²šRÔ4ÓMˆÔØ×(Ñ(¨Ñ+¨BÑ/ˆŒà×ÑÔà—-‘-ò 	ˆBØ�L‰L˜Õð	ð 	×Ñ˜JÕ'ùò 2ùÓHùÚ4ùÓMs<   É%	LÉ.LÉ6LÉ:LÊ	L%Ê L Ê(L Ê,L%ÌLÌ L%c           	      ó‚  — | j                   j                  t        j                  d«      | j                  g| j
                  dz
  z  t        j                  d«      gz   «       | j                   j                  t        j                  d«      | j                  g| j                  dz
  z  t        j                  d«      gz   «       t        | j                  «      D ]e  }| j                  |«      \  }}| j                  |   j                  | j                   j                  d|z  d| j                  dz
  |z
  z  ¬«      «       Œg y )Nr   r4   ©ÚnxÚny)rU   Úset_horizontalr	   ÚScaledrJ   rD   Úset_verticalrK   rC   r[   r+   r\   r_   Úset_axes_locatorÚnew_locator)r   rn   ro   r6   s       r   rd   zGrid._init_locators®   s  € Ø�‰×$Ñ$Ü�[‰[˜‹^˜T×1Ñ1Ð2°d·k±kÀ!±mÑDÌÏÉÐTUËÐGWÑWô	Yà�‰×"Ñ"Ü�[‰[˜‹^˜T×0Ñ0Ð1°T·[±[À±]ÑCÄtÇ{Á{ÐSTÃ~ÐFVÑVô	Xä�t—{‘{Ó#ò 	WˆAØ×(Ñ(¨Ó+‰HˆC�Ø�M‰M˜!Ñ×-Ñ-Ø—‘×)Ñ)¨Q°©W¸¸d¿k¹kÈA¹oÐPSÑ>SÑ9TÐ)ÓUõWñ	Wr   c                 ó”   — | j                   dk(  rt        || j                  «      \  }}||fS t        || j                  «      \  }}||fS )Nr5   )rM   ÚdivmodrC   rD   )r   Únro   r6   s       r   r\   zGrid._get_col_row¸   sL   € Ø�?‰?˜hÒ&Ü˜a §¡Ó-‰HˆC�ð �Cˆxˆô ˜a §¡Ó-‰HˆC�à�Cˆxˆr   c                 ó,   — t        | j                  «      S r   ©rV   r_   ©r   s    r   ú<lambda>zGrid.<lambda>À   s   € ¤3 t§}¡}Ó#5€ r   c                 ó,   — t        | j                  «      S r   r~   r   s    r   r€   zGrid.<lambda>Á   s   € ¼3¸t¿}¹}Ó;M€ r   c                 ó,   — t        | j                  «      S r   r~   r   s    r   Ú__len__zGrid.__len__Ä   s   € Ü�4—=‘=Ó!Ð!r   c                 ó    — | j                   |   S r   )r_   )r   rn   s     r   Ú__getitem__zGrid.__getitem__Ç   s   € Ø�}‰}˜QÑÐr   c                 ó2   — | j                   | j                  fS )zV
        Return the number of rows and columns of the grid as (nrows, ncols).
        )rC   rD   r   s    r   Úget_geometryzGrid.get_geometryÊ   s   € ð �{‰{˜DŸK™KÐ'Ð'r   c                 óT   — |d   | j                   _        |d   | j                  _        y)z¾
        Set the padding between the axes.

        Parameters
        ----------
        axes_pad : (float, float)
            The padding (horizontal pad, vertical pad) in inches.
        r   r   N©rJ   Ú
fixed_sizerK   )r   rj   s     r   Úset_axes_padzGrid.set_axes_padÐ   s(   € ð +3°1©+ˆ×ÑÔ'Ø)1°!©ˆ×ÑÕ&r   c                 óZ   — | j                   j                  | j                  j                  fS )zœ
        Return the axes padding.

        Returns
        -------
        hpad, vpad
            Padding (horizontal pad, vertical pad) in inches.
        r‰   r   s    r   Úget_axes_padzGrid.get_axes_padÜ   s,   € ð ×$Ñ$×/Ñ/Ø×#Ñ#×.Ñ.ð0ð 	0r   c                 ó:   — | j                   j                  |«       y)z%Set the aspect of the SubplotDivider.N)rU   Ú
set_aspect)r   r2   s     r   r�   zGrid.set_aspectè   s   € à�‰× Ñ  Õ(r   c                 ó6   — | j                   j                  «       S )z(Return the aspect of the SubplotDivider.)rU   Ú
get_aspectr   s    r   r‘   zGrid.get_aspectì   s   € à�}‰}×'Ñ'Ó)Ð)r   c                 ó   — t        j                  g d¢|¬«       |dk(  ryt        j                  | j                  | j
                  «      D �]!  \  }}	 | j                  |   |   }t        |j                  t        «      rIt        |j                  d|j                  d   «      }t        |j                  d|j                  d   «      }n|j                  d   }|j                  d   }|dk(  r|| j                  dz
  k(  n|d	k(  r|| j                  dz
  k(  xr |d
k(  nd}|dk(  r|d
k(  n|d	k(  r|| j                  dz
  k(  xr |d
k(  nd}|j                  ||¬«       |j                  ||¬«       �Œ$ y# t        $ r Y �Œ2w xY w)aÀ  
        Define which axes have tick labels.

        Parameters
        ----------
        mode : {"L", "1", "all", "keep"}
            The label mode:

            - "L": All axes on the left column get vertical tick labels;
              all axes on the bottom row get horizontal tick labels.
            - "1": Only the bottom left axes is labelled.
            - "all": All axes are labelled.
            - "keep": Do not do anything.
        )Úallr,   Ú1Úkeep)Úmoder•   Nr   ÚbottomÚleftr,   r”   r   T)Ú
ticklabelsÚlabel)r   rL   rH   ÚndindexrC   rD   r`   Ú
IndexErrorrO   Úaxisr   r   ÚxaxisÚspinesÚyaxisÚtoggle)	r   r–   rn   Újrp   Úbottom_axisÚ	left_axisÚdisplay_at_bottomÚdisplay_at_lefts	            r   rf   zGrid.set_label_modeð   sq  € ô 	×ÑÒ4¸4Õ@Ø�6Š>ØÜ—J‘J˜tŸ{™{¨D¯K©KÓ8ó 	P‰DˆAˆqðØ—]‘] 1Ñ% aÑ(�ô ˜"Ÿ'™'¤:Ô.Ü.¨r¯x©x¸¸B¿I¹IÀhÑ<OÓP�Ü,¨R¯X©X°q¸"¿)¹)ÀFÑ:KÓL‘	à Ÿg™g hÑ/�ØŸG™G F™O�	Ø9=Àº  d§k¡k°A¡oÒ!5ØDHÈCÂK  d§k¡k°A¡oÑ!5Ò!@¸!¸qº&Ø!%ð ð *.°ª˜q AšvØBFÈ#Â+˜q D§K¡K°!¡OÑ3Ò>¸¸QºØ#ð ð ×ÑÐ*;ÐCTÐÔUØ×Ñ¨¸ÐÖOñ%	Pøô ò Úðús   ÁE0Å0	E=Å<E=c                 ó   — | j                   S r   )rU   r   s    r   Úget_dividerzGrid.get_divider  s   € Ø�}‰}Ðr   c                 ó:   — | j                   j                  |«       y r   )rU   Úset_locator)r   Úlocators     r   rx   zGrid.set_axes_locator  s   € Ø�‰×!Ñ! 'Õ*r   c                 ó6   — | j                   j                  «       S r   )rU   Úget_locatorr   s    r   Úget_axes_locatorzGrid.get_axes_locator  s   € Ø�}‰}×(Ñ(Ó*Ð*r   ©Nr6   g{®Gáz”?)r#   r$   r%   Ú__doc__r   rN   r   Úrename_parameterr   rd   r\   Úpropertyr+   Ú
deprecatedr*   rƒ   r…   r‡   r‹   r�   r�   r‘   rf   r¨   rx   r®   © r   r   r)   r)      sÈ   „ ñð< Ðà€T×Ñ˜6 8¨XÓ6ð Ø Øðo(ð !ØØØØ Øóo(ó 7ðo(òbWòñ Ñ5Ó6€FØ$ˆ_ˆT�_‰_˜VÓ$¡XÑ.MÓ%NÓO€Fò"ò ò(ò
5ò
0ò)ò*ò$PòLò+ó+r   r)   c                   óF   ‡ — e Zd ZdZ	 	 	 dddddddddddœ	ˆ fd	„Zd
„ Zˆ xZS )Ú	ImageGridaR  
    A grid of Axes for Image display.

    This class is a specialization of `~.axes_grid1.axes_grid.Grid` for displaying a
    grid of images.  In particular, it forces all axes in a column to share their x-axis
    and all axes in a row to share their y-axis.  It further provides helpers to add
    colorbars to some or all axes.
    NFTr,   Úrightz5%)	r-   r2   r0   Ú	cbar_modeÚcbar_locationÚcbar_padÚ	cbar_sizeÚcbar_set_caxr1   c       	         óÚ  •— t        j                  g d¢|
¬«       t        j                  g d¢|¬«       |
| _        || _        || _        || _        t        ‰| �  |||||||dd||	|¬«       | j                  D ]  }|j                  |«       Œ |rÝ| j                  dk(  r&| j                  D ]  }| j                  d   |_        Œ y| j                  d	k(  rit        | j                  «      D ]P  \  }}| j                  |«      \  }}| j                  d
v r| j                  |   |_        Œ=| j                  |   |_        ŒR yt        | j                  | j                  «      D ]  \  }}||_        Œ yy)a¨
  
        Parameters
        ----------
        fig : `.Figure`
            The parent figure.
        rect : (float, float, float, float) or int
            The axes position, as a ``(left, bottom, width, height)`` tuple or
            as a three-digit subplot position code (e.g., "121").
        nrows_ncols : (int, int)
            Number of rows and columns in the grid.
        n_axes : int, optional
            If given, only the first *n_axes* axes in the grid are created.
        direction : {"row", "column"}, default: "row"
            Whether axes are created in row-major ("row by row") or
            column-major order ("column by column").  This also affects the
            order in which axes are accessed using indexing (``grid[index]``).
        axes_pad : float or (float, float), default: 0.02in
            Padding or (horizontal padding, vertical padding) between axes, in
            inches.
        share_all : bool, default: False
            Whether all axes share their x- and y-axis.  Note that in any case,
            all axes in a column share their x-axis and all axes in a row share
            their y-axis.
        aspect : bool, default: True
            Whether the axes aspect ratio follows the aspect ratio of the data
            limits.
        label_mode : {"L", "1", "all"}, default: "L"
            Determines which axes will get tick labels:

            - "L": All axes on the left column get vertical tick labels;
              all axes on the bottom row get horizontal tick labels.
            - "1": Only the bottom left axes is labelled.
            - "all": all axes are labelled.

        cbar_mode : {"each", "single", "edge", None}, default: None
            Whether to create a colorbar for "each" axes, a "single" colorbar
            for the entire grid, colorbars only for axes on the "edge"
            determined by *cbar_location*, or no colorbars.  The colorbars are
            stored in the :attr:`!cbar_axes` attribute.
        cbar_location : {"left", "right", "bottom", "top"}, default: "right"
        cbar_pad : float, default: None
            Padding between the image axes and the colorbar axes.

            .. versionchanged:: 3.10
                ``cbar_mode="single"`` no longer adds *axes_pad* between the axes
                and the colorbar if the *cbar_location* is "left" or "bottom".

        cbar_size : size specification (see `!.Size.from_any`), default: "5%"
            Colorbar size.
        cbar_set_cax : bool, default: True
            If True, each axes in the grid has a *cax* attribute that is bound
            to associated *cbar_axes*.
        axes_class : subclass of `matplotlib.axes.Axes`, default: `.mpl_axes.Axes`
        )ÚeachÚsingleÚedgeN)r¸   )r˜   r·   r—   Útop)r¹   T)r7   rj   r-   r.   r/   r2   r0   r1   r¿   r   rÀ   ©r˜   r·   N)r   rL   Ú_colorbar_modeÚ_colorbar_locationÚ_colorbar_padÚ_colorbar_sizer   r   Ú	cbar_axesre   r_   r   Ú	enumerater\   Úzip)r   rg   rh   ri   r+   r7   rj   r-   r2   r0   r¸   r¹   rº   r»   r¼   r1   rp   Úindexro   r6   r   r   s                        €r   r   zImageGrid.__init__*  sr  ø€ ôN 	×ÑÒ;Ø%.õ	0ä×ÑÒ=Ø)6õ	8à'ˆÔØ"/ˆÔØ%ˆÔØ'ˆÔô 	‰ÑØ��{ FØ¨(Ø¨°tÀFØ!¨jð	 	ô 	:ð —.‘.ò 	ˆBØ�L‰L˜Õð	ñ Ø×"Ñ" hÒ.ØŸ-™-ò /�BØ!Ÿ^™^¨AÑ.�B•Fñ/à×$Ñ$¨Ò.Ü!*¨4¯=©=Ó!9ò 5‘I�E˜2Ø#×0Ñ0°Ó7‘H�C˜Ø×.Ñ.Ð2CÑCØ!%§¡°Ñ!4˜�à!%§¡°Ñ!4˜�ñ5ô  # 4§=¡=°$·.±.ÓAò !‘G�B˜Ø �B•Fñ!ð r   c                 óÞ  — | j                   €E| j                  dv r| j                  j                  | _         n| j                  j                  | _         t        | j                  «      D �cg c]_  } t        | j                  «      | j                  d   j                  d¬«      | j                  j                  «       | j                  ¬«      ‘Œa c}| _        | j                  }| j                  }g }g }g }g }|dk(  �rÔ|dv �rÏ|dk(  r©| j                  t!        j"                  | j$                  «      z  }|j'                  t!        j(                  | j*                  |«      «       |j'                  t!        j(                  | j                   |«      «       | j                  j-                  ddd	¬
«      }	n­|dk(  r¨| j.                  t!        j0                  | j$                  «      z  }|j'                  t!        j(                  | j*                  |«      «       |j'                  t!        j(                  | j                   |«      «       | j                  j-                  dd	d¬«      }	t        | j                  «      D ]   }
| j                  |
   j3                  d«       Œ" | j                  d   j5                  	«       | j                  d   j3                  d«       t7        | j8                  d   «      D �]Ö  \  }}|dk7  r|j'                  | j                  «       |r&t!        j"                  |d| j                  d   ¬«      }n2t!        j"                  | j                  d   d| j                  d   ¬«      }|dk(  r‡|dk(  s
|dk(  r}|dk(  rx|j'                  t;        |«      «       |j'                  t!        j(                  | j*                  |«      «       |j'                  t!        j(                  | j                   |«      «       |j'                  t;        |«      «       |j'                  |«       |dk(  s�Œ?|dk(  s|dk(  s�ŒK|| j.                  dz
  k(  s�Œ_|j'                  t!        j(                  | j                   |«      «       |j'                  t;        |«      «       |j'                  t!        j(                  | j*                  |«      «       �ŒÙ g }g }t7        | j<                  d   d d d	…   «      D �]Ö  \  }}|dk7  r|j'                  | j                  «       |r&t!        j0                  |d| j                  d   ¬«      }n2t!        j0                  | j                  d   d| j                  d   ¬«      }|dk(  r‡|dk(  s
|dk(  r}|dk(  rx|j'                  t;        |«      «       |j'                  t!        j(                  | j*                  |«      «       |j'                  t!        j(                  | j                   |«      «       |j'                  t;        |«      «       |j'                  |«       |dk(  s�Œ?|dk(  s|dk(  s�ŒK|| j                  dz
  k(  s�Œ_|j'                  t!        j(                  | j                   |«      «       |j'                  t;        |«      «       |j'                  t!        j(                  | j*                  |«      «       �ŒÙ t        | j                  «      D �]Ü  }
| j?                  |
«      \  }}| j                  j-                  ||   || j                  dz
  |z
     ¬«      }	| j                  |
   j5                  |	«       |dk(  rŽ|dv r4| j                  j-                  ||   || j                  dz
  |z
     ¬«      }	n7|dv r3| j                  j-                  ||   || j                  dz
  |z
     ¬«      }	| j                  |
   j5                  |	«       Œü|dk(  s�Œ|dk(  r|dk(  s|dk(  re|| j.                  dz
  k(  rS| j                  j-                  |d   || j                  dz
  |z
     ¬«      }	| j                  |   j5                  |	«       �Œw|dk(  r|| j                  dz
  k(  s|dk(  s�Œ•|dk(  s�Œœ| j                  j-                  ||   |d   ¬«      }	| j                  |   j5                  |	«       �Œß |dk(  �rÖ|dk(  r©| j                  t!        j"                  | j$                  «      z  }|j'                  t!        j(                  | j                   |«      «       |j'                  t!        j(                  | j*                  |«      «       | j                  j-                  ddd	¬
«      }	n­|dk(  r¨| j.                  t!        j0                  | j$                  «      z  }|j'                  t!        j(                  | j                   |«      «       |j'                  t!        j(                  | j*                  |«      «       | j                  j-                  dd	d¬«      }	|dv �r›t        | j                  «      D ]   }
| j                  |
   j3                  d«       Œ" | j                  d   j5                  	«       | j                  d   j3                  d«       �n%|dk(  r9t        | j                  «      D ]   }
| j                  |
   j3                  d«       Œ" nç|dk(  rˆ|dv r| j                  }n| j.                  }t        |«      D ]   }
| j                  |
   j3                  d«       Œ" t        
dz   | j                  «      D ]   }| j                  |   j3                  d«       Œ" nZt        | j                  «      D ]B  }
| j                  |
   j3                  d«       | j                  |
   jA                  g d¢d¬«       ŒD | j                  jC                  |«       | j                  jE                  |«       y c c}w )NrÂ   r   Fr   )r   r¿   )r˜   r—   r˜   rB   )rs   rt   Úny1r—   )rs   Únx1rt   TÚaxes)r2   Úref_axr¾   rÀ   r·   r   rÁ   rr   )r·   r˜   )rÁ   r—   éþÿÿÿ)r·   rÁ   )ç      ð?rÑ   çü©ñÒMbP?rÒ   Úactive)Úwhich)#rÅ   rÄ   rJ   rŠ   rK   r[   r+   Ú_cbaraxes_class_factoryrN   r_   r    rU   rX   rÇ   rÃ   rC   r	   ÚAxesXrc   ÚappendÚfrom_anyrÆ   ry   rD   ÚAxesYÚset_visiblerx   rÈ   r`   rV   rb   r\   Úset_positionru   rw   )r   Ú_Úcb_modeÚcb_locationÚhÚvÚh_ax_posÚh_cb_posÚszr«   rn   ro   rp   Úv_ax_posÚv_cb_posr6   Úcountr¢   s                     r   rd   zImageGrid._init_locators“  sÒ	  € ð ×ÑÐ%à×&Ñ&Ð*;Ñ;Ø%)×%9Ñ%9×%DÑ%D�Õ"à%)×%8Ñ%8×%CÑ%C�Ô"ô
 ˜4Ÿ;™;Ó'ö	)ð ð <Ô# D×$:Ñ$:Ó;Ø—‘˜aÑ ×+Ñ+°Ð+Ó7¸¿¹×9SÑ9SÓ9UØ ×3Ñ3ö5ò)ˆŒð ×%Ñ%ˆØ×-Ñ-ˆàˆØˆàˆØˆØ�hÓ ;Ð2DÒ#DØ˜fÒ$Ø—[‘[¤4§:¡:¨d¯m©mÓ#<Ñ<�Ø—‘œŸ™ t×':Ñ':¸BÓ?Ô@Ø—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?ØŸ-™-×3Ñ3°q¸QÀBÐ3ÓG‘Ø Ò(Ø—[‘[¤4§:¡:¨d¯m©mÓ#<Ñ<�Ø—‘œŸ™ t×':Ñ':¸BÓ?Ô@Ø—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?ØŸ-™-×3Ñ3°q¸bÀQÐ3ÓG�Ü˜4Ÿ;™;Ó'ò 5�Ø—‘˜qÑ!×-Ñ-¨eÕ4ð5à�N‰N˜1Ñ×.Ñ.¨wÔ7Ø�N‰N˜1Ñ×)Ñ)¨$Ô/ä  §¡¨qÑ!1Ó2ó 	A‰GˆC�Ø�aŠxØ—‘˜×-Ñ-Ô.áÜ—Z‘Z ¨6¸$¿-¹-ÈÑ:JÔK‘ä—Z‘Z §¡¨aÑ 0Ø'-°d·m±mÀAÑ6FôH�ð ˜vÒ%Ø  FÒ*Ø$¨Ò.°3¸!²8Ø—‘¤ A£Ô'Ø—‘œŸ™ t×':Ñ':¸BÓ?Ô@Ø—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?à�O‰OœC ›FÔ#Ø�H‰H�RŒLà˜wÔ&Ø  FÒ*Ø$¨Ô.°3¸$¿+¹+È¹/Ô3IØ—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?Ø—‘¤ A£Ô'Ø—‘œŸ™ t×':Ñ':¸BÓ?Ö@ð3	Að6 ˆØˆÜ  ×!1Ñ!1°!Ñ!4±T°r°TÑ!:Ó;ó 	A‰GˆC�Ø�aŠxØ—‘˜×,Ñ,Ô-áÜ—Z‘Z ¨6¸$¿-¹-ÈÑ:JÔK‘ä—Z‘Z §¡¨aÑ 0Ø'-°d·m±mÀAÑ6FôH�ð ˜xÒ'Ø  FÒ*Ø$¨Ò.°3¸!²8Ø—‘¤ A£Ô'Ø—‘œŸ™ t×':Ñ':¸BÓ?Ô@Ø—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?à�O‰OœC ›FÔ#Ø�H‰H�RŒLà˜uÔ$Ø  FÒ*Ø$¨Ô.°3¸$¿+¹+È¹/Ô3IØ—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?Ø—‘¤ A£Ô'Ø—‘œŸ™ t×':Ñ':¸BÓ?Ö@ð3	Aô6 �t—{‘{Ó#ó 	BˆAØ×(Ñ(¨Ó+‰HˆC�Ø—m‘m×/Ñ/°8¸C±=Ø3;¸D¿K¹KÈ¹MÈ#Ñ<MÑ3Nð 0ó PˆGà�M‰M˜!Ñ×-Ñ-¨gÔ6à˜&Ò ØÐ"3Ñ3Ø"Ÿm™m×7Ñ7Ø# C™=¨X°d·k±kÀA±oÈÑ6KÑ-Lð 8ó N‘Gð !Ð$5Ñ5Ø"Ÿm™m×7Ñ7Ø# C™=¨X°d·k±kÀA±oÈÑ6KÑ-Lð 8ó N�Gð —‘˜qÑ!×2Ñ2°7Õ;Ø˜FÔ"Ø 6Ò)¨c°QªhØ&¨'Ò1°c¸T¿[¹[È1¹_Ò6LØ"Ÿm™m×7Ñ7Ø# A™;¨8°D·K±KÀ!±OÀcÑ4IÑ+Jð 8ó L�Gà—N‘N 3Ñ'×8Ñ8¸ÖAØ! XÒ-°#¸¿¹Àq¹Ò2HØ$¨Ô-°#¸´(Ø"Ÿm™m×7Ñ7¸8ÀC¹=Ø;CÀA¹;ð 8ó H�Gà—N‘N 3Ñ'×8Ñ8¸ÖAð5	Bð8 �hÓØ˜gÒ%Ø—[‘[¤4§:¡:¨d¯m©mÓ#<Ñ<�Ø—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?Ø—‘œŸ™ t×':Ñ':¸BÓ?Ô@ØŸ-™-×3Ñ3°r¸aÀRÐ3ÓH‘Ø Ò%Ø—[‘[¤4§:¡:¨d¯m©mÓ#<Ñ<�Ø—‘œŸ™ t×'9Ñ'9¸2Ó>Ô?Ø—‘œŸ™ t×':Ñ':¸BÓ?Ô@ØŸ-™-×3Ñ3°q¸bÀRÐ3ÓH�ØÐ.Ò.Ü˜tŸ{™{Ó+ò 9�AØ—N‘N 1Ñ%×1Ñ1°%Õ8ð9à—‘˜qÑ!×2Ñ2°7Ô;Ø—‘˜qÑ!×-Ñ-¨dÖ3Ø˜ÒÜ˜4Ÿ;™;Ó'ò 4�Ø—‘˜qÑ!×-Ñ-¨dÕ3ñ4à˜ÒØÐ/Ñ/ØŸ™‘àŸ™�Ü˜5“\ò 4�Ø—‘˜qÑ!×-Ñ-¨dÕ3ð4ä˜1˜q™5 $§+¡+Ó.ò 5�Ø—‘˜qÑ!×-Ñ-¨eÕ4ñ5ô ˜4Ÿ;™;Ó'ò ?�Ø—‘˜qÑ!×-Ñ-¨eÔ4Ø—‘˜qÑ!×.Ñ.Ò/EØ5=ð /õ ?ð?ð
 	�‰×$Ñ$ QÔ'Ø�‰×"Ñ" 1Õ%ùòk)s   Á)A$o*r¯   )r#   r$   r%   r°   r   rd   r&   r'   s   @r   r¶   r¶      sC   ø„ ñð Ø Øðg!ð !ØØØØ&ØØØ"Ø ög!öR^&r   r¶   )Únumbersr   rR   Útypesr   ÚnumpyrH   Ú
matplotlibr   r   Úmatplotlib.gridspecr   Úaxes_dividerr	   r
   r   Úmpl_axesr   r   r   Ú_make_class_factoryrÕ   r)   r¶   ÚAxesGridr´   r   r   ú<module>rð      sf   ðÝ Û Ý ã ç "Ý +ç 7Ñ 7ß ,÷Eñ Eð 4˜%×3Ñ3°LÀ(ÓKÐ ÷B+ñ B+ôJQ&�ô Q&ðh �r   