a
    ضa{                     @   s   d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ G dd dejZG d	d
 d
ejZG dd dejZG dd de
Zee edgdddd Zedgdddd Z dS )z)
Testing that skewed axes properly work.
    )	ExitStackN)image_comparison)Axes)register_projectionc                       s$   e Zd Z fddZdd Z  ZS )	SkewXTickc                    s   t  }| j| j| j| j| jfD ]}||j|  q t	
| jj|  }t	
| jj|  }| j| j or| | j| j o| | j| j o| | j| j o| t | W d    n1 s0    Y  d S N)r   ZgridlineZ	tick1lineZ	tick2linelabel1label2callbackZset_visibleZget_visible
transformsZinterval_containsaxes
lower_xlimZget_loc
upper_xlimsuperdraw)selfZrendererstackZartistZneeds_lowerZneeds_upper	__class__ j/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_skew.pyr      s0    zSkewXTick.drawc                 C   s   | j j S r   )r   xaxisget_view_intervalr   r   r   r   r   )   s    zSkewXTick.get_view_interval)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )	SkewXAxisc                 C   s   t | jd |dS )N)major)r   r   )r   r   r   r   r   	_get_tick0   s    zSkewXAxis._get_tickc                 C   s   | j jd | j jd fS )Nr      )r   r   r   r   r   r   r   r   3   s    zSkewXAxis.get_view_intervalN)r   r   r   r    r   r   r   r   r   r   /   s   r   c                   @   s   e Zd Zdd ZdS )	SkewSpinec                 C   s@   | j j}| jdkr(| jj|d d df< n| jj|d d df< d S )Ntopr   )_pathZverticesZ
spine_typer   r   r   r   Zptsr   r   r   _adjust_location;   s    
zSkewSpine._adjust_locationN)r   r   r   r&   r   r   r   r   r"   :   s   r"   c                       sH   e Zd ZdZdd Zdd Z fddZedd	 Zed
d Z	  Z
S )	SkewXAxesskewxc                 C   sZ   t | | _| jj| j | jj| j t| | _| jj	| j | jj
| j d S r   )r   r   spinesr#   Zregister_axisbottommaxisZYAxisZyaxisleftrightr   r   r   r   
_init_axisK   s    
zSkewXAxes._init_axisc                 C   s8   t | dtj| dtj| dtj| dd}|S )Nr#   r*   r,   r-   )r#   r*   r,   r-   )r"   Zlinear_spinemspinesSpine)r   r)   r   r   r   _gen_axes_spinesT   s    
zSkewXAxes._gen_axes_spinesc                    sn   d}t    | j| jt |d  | _| j| j | _	t
| j| j t t |d | j | _dS )z
        This is called once when the plot is created to set up all the
        transforms for the data, text and grids.
           r   N)r   _set_lim_and_transformsZ
transScaleZtransLimitsr   Affine2Dskew_degtransDataToAxesZ	transAxes	transDataZblended_transform_factoryZIdentityTransformZ_xaxis_transform)r   Zrotr   r   r   r3   [   s     

z!SkewXAxes._set_lim_and_transformsc                 C   s
   | j jjS r   )r   ZviewLimZ	intervalxr   r   r   r   r   x   s    zSkewXAxes.lower_xlimc                 C   s,   ddgddgg}| j  |d d df S )Ng        g      ?r   )r6   inverted	transformr%   r   r   r   r   |   s    zSkewXAxes.upper_xlim)r   r   r   namer.   r1   r3   propertyr   r   r   r   r   r   r   r'   F   s   	
r'   Z	skew_axesT)Zremove_textc                  C   sN   t  } | jddddd}|dd |dd |d |jddd	 d S )
Nr!   r(   )Z
projectioni2   Tr   b)color)pltfigureZadd_subplotset_xlimset_ylimZgridZaxvline)Zfigaxr   r   r   test_set_line_coll_dash_image   s    
rD   Z
skew_rectsc            	      C   s   t jdddddd\} }|j}ttjg ddd}|d d	d
g |d d	d
g |d jddd t	||D ]f\}\}}d| d|  }}t
 ||}|d|| |tjddgdd||j ddd qtt jdddddd d S )N   T)   rF   )ZsharexZshareyZfigsize)r   r!         )repeatr   rG   rI   equal)share-   zSkew of {0} in X and {1} in YrH   g      ?Zcoral)r9   alphaZ	facecolorg{Gz?gGz?)Zwspacer,   r-   r*   r#   )r?   ZsubplotsZflatlist	itertoolsproductrA   rB   Z
set_aspectzipr   r4   r5   	set_titleformatZ	add_patchmpatchZ	Rectangler7   Zsubplots_adjust)	Zfixr   Z	rotationsrC   ZxrotsZyrotsZxdegZydegtr   r   r   test_skew_rectangle   s    
rX   )!__doc__
contextlibr   rQ   Zmatplotlib.pyplotZpyplotr?   Zmatplotlib.testing.decoratorsr   Zmatplotlib.axesr   Zmatplotlib.transformsr   Zmatplotlib.axisZaxisr+   Zmatplotlib.spinesr)   r/   Zmatplotlib.patchesZpatchesrV   Zmatplotlib.projectionsr   ZXTickr   ZXAxisr   r0   r"   r'   rD   rX   r   r   r   r   <module>   s&   >
