a
    ضa:                     @   s.  d dl Zd dlmZ d dlZd dlZd dlmZ d dl	m
Z
mZ e
dgdddd	d
 Ze
dgdddddd Ze
dgdd Zdd Ze dd Ze dd Ze dd Ze
dgdddd Ze
dgddd d! Ze
d"gddd#d$ Ze
d%gddd&d' Ze
d(gddd)d* Ze
d+gddd,d- Ze
d.gddd/d0 Ze
d1gddd2d3 Zed4gd5d6d7 Zed4gd5d8d9 Zd:d; Zd<d= Zd>d? Zd@dA Z dBdC Z!ed4gd5dDdE Z"ed4gd5dFdG Z#dHdI Z$dJdK Z%dLdM Z&dNdO Z'ed4gd5dPdQ Z(dRdS Z)dTdU Z*dVdW Z+dS )X    N)assert_allclose)pyplot)image_comparisoncheck_figures_equalZ
polar_axesdefaultg~jt?)styletolc               	   C   s   t ddd} dt j |  }t }|jdd}|j|| ddd	\}|jd
dddd	\}d}| | ||  }}||g|gd |jd||fddtdddddd |j	ddddd d S )N              ?MbP?      @Tpolarz#ee8d18   )colorZlwr   r   r      z#0000ffr      oza polar annotation)皙?r   zfigure fractionblackr   	facecolorshrinkleftbaseline)xyxytext
textcoords
arrowpropshorizontalalignmentverticalalignmentxout)Zaxistick1Ontick2On	direction)
nparangepipltfigureadd_subplotplotannotatedicttick_params)rthetafigaxlineindZthisrZ	thistheta r8   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_polar.pytest_polar_annotations
   s$    
	r:   Zpolar_coordsT)r   Zremove_textr   c                  C   s   t jjdddddd} t }|jdd}||  | |j |j	d	t
jd
 dft
jd dfddtddddddd	 |dd |dd d S )Nr   
      r2         ?)r   alphaequal)Zaspectzthe top       @      $@r   g      4@r   r   r   r   r   r   T)r   r   Zxycoordsr   r    r!   r"   Zclip_oni)mplZpatchesZEllipser+   r,   r-   Z
add_artistZset_clip_boxZbboxr/   r(   r*   r0   Zset_xlimset_ylim)elr4   r5   r8   r8   r9   test_polar_coord_annotations,   s"    

rE   zpolar_alignment.pngc                  C   s   t ddd} g d}t }g d}|j|ddd}||  |j|dd	d}|jd
 tdD ] }|j	| j
|| | ddd qdd S )Nr   ih  Z   )r   皙?皙?g333333?皙?r   皙?rK   rI   rI   T
horizontal)r   labelverticalF   r   top)Zangler!   r"   )r(   r)   r+   r,   add_axesZset_thetagridspatchZset_visiblerangeaxesZ
set_rgrids)ZanglesZgrid_valuesr4   ZrectrL   rN   ir8   r8   r9   test_polar_alignmentI   s    

rV   c                  C   sJ   t  } t ddgddg t ddgddg t| jdksFJ d	d S )
Nr   rO   rK   rG   r      g333333?rH   z!More than one polar axes created.)r+   r,   r   lenrT   )r4   r8   r8   r9   test_polar_twice^   s    rY   c                 C   s   | j dd}|tddgddg |tddgddg |j dd}|tdd	gddg |tdd
gddg d S )Nr   
projection   iMrG   rK   rO      if  )r-   r.   r(   deg2radfig_testfig_refr5   r8   r8   r9   test_polar_wrape   s    rc   c                    s~   dd l m  m     g d}g d}t| j t fdd|D | |jdd}|	t
|| |jdd	 d S )
Nr   g      >@g     F@g      N@     V@r
   r@         @r   c                    s   g | ]}| j  qS r8   deg.0r#   Zunitsr8   r9   
<listcomp>w       z&test_polar_units_1.<locals>.<listcomp>r   rZ   ri   )xlabel)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterr+   r,   numberr   r-   r.   r(   r_   set)ra   rb   xsysr5   r8   rl   r9   test_polar_units_1o   s    rx   c                    s   dd l m  m     g d} fdd|D }g d} fdd|D }t| j tj||ddd	 tt	 j
  jsJ |jd
d}|t|| |j
tjdj |jddd d S )Nr   rd   c                    s   g | ]}| j  qS r8   rh   rj   rl   r8   r9   rm      rn   z&test_polar_units_2.<locals>.<listcomp>rf   c                    s   g | ]}| j  qS r8   )km)rk   yrl   r8   r9   rm      rn   Zradry   )Z
thetaunitsZrunitsr   rZ   z{:.12})ro   Zylabel)rp   rq   rr   rs   r+   r,   rt   r   
isinstancegcaxaxisZget_major_formatterZUnitDblFormatterr-   r.   r(   r_   Zset_major_formatterrB   ZtickerZFuncFormatterformatru   )ra   rb   rv   Zxs_degrw   Zys_kmr5   r8   rl   r9   test_polar_units_2~   s    r   Z
polar_rmin)r   c                  C   sZ   t ddd} dt j |  }t }|jg ddd}|||  |d |d	 d S )
Nr   rg   {Gz?rO   rJ   Tr   r@   r=   	r(   r)   r*   r+   r,   rQ   r.   set_rmaxset_rminr2   r3   r4   r5   r8   r8   r9   test_polar_rmin   s    
r   Zpolar_negative_rminc                  C   sZ   t ddd} dt j |  }t }|jg ddd}|||  |d |d d S )Ng      r	   r   rO   rJ   Tr   r   r   r8   r8   r9   test_polar_negative_rmin   s    
r   Zpolar_roriginc                  C   sd   t ddd} dt j |  }t }|jg ddd}|||  |d |d	 |	d
 d S )Nr   rg   r   rO   rJ   Tr   r@   r=   r	   )
r(   r)   r*   r+   r,   rQ   r.   r   r   set_roriginr   r8   r8   r9   test_polar_rorigin   s    

r   zpolar_invertedylim.pngc                  C   s*   t  } | jg ddd}|dd d S )NrJ   Tr   rO   r   )r+   r,   rQ   rC   r4   r5   r8   r8   r9   test_polar_invertedylim   s    r   zpolar_invertedylim_rorigin.pngc                  C   sV   t  } | jg ddd}|jd |jddgddgdd |d |d d S )	NrJ   Tr   r   rO   none)cr   )r+   r,   rQ   yaxisZset_invertedr.   Zmarginsr   r   r8   r8   r9   test_polar_invertedylim_rorigin   s    
r   Zpolar_theta_positionc                  C   s\   t ddd} dt j |  }t }|jg ddd}|||  |dd	 |d
 d S )Nr   rg   r   rO   rJ   Tr   ZNW   	clockwise)	r(   r)   r*   r+   r,   rQ   r.   Zset_theta_zero_locationset_theta_directionr   r8   r8   r9   test_polar_theta_position   s    r   Zpolar_rlabel_positionc                  C   s.   t  } | jdd}|d |jdd d S )Nr   rZ   i;  auto)rotation)r+   r,   r-   Zset_rlabel_positionr1   r   r8   r8   r9   test_polar_rlabel_position   s    
r   Zpolar_theta_wedgec               	   C   s   t ddd} dt j |  }t ddd}t ddd}d	}tjt|t|d
didd\}}t|D ]\}}t|D ]\}	}
|||	f }|||  ||
k r|| |	|
 n||
 |	| |
d |jdd||t|  dd |jjddd |j jjg dd qvqfd S )Nr   rg   r   rO   g      .@g     v@re   g      I@)r$   inZinoutr   T)      )
subplot_kwZfigsizer   r   )r%   r&   r'   r   )Zlabel2Onr   )r   rO   g      @   r;   )Zsteps)r(   r)   r*   r+   subplotsrX   	enumerater.   Zset_thetaminZset_thetamaxr   r1   r   Zset_tick_paramsr}   Zget_major_locatorbaseZ
set_params)r2   r3   Z
theta_minsZ
theta_maxsZ
DIRECTIONSr4   axsrU   startjendr5   r8   r8   r9   test_polar_theta_limits   s6    




r   Zpng)
extensionsc                 C   sP   | j ddid}|jdd |jdd |j ddid}|d |d d S )	Nr   Tr   r;   )rP   r=   ZbottomrA   r   Zset_rlimr   r   r`   r8   r8   r9   test_polar_rlim   s    
r   c                 C   sH   | j ddid}|jddgd |j ddid}|d |d d S )Nr   Tr   r=   r;   r   rA   r   r`   r8   r8   r9   test_polar_rlim_bottom  s
    
r   c                  C   sD   t  jdd} | tdtdd  |  d dks@J d S )Nr   rZ   r;   r   r   )r+   r,   r-   r.   r(   r)   get_ylimr5   r8   r8   r9   test_polar_rlim_zero  s    r   c                  C   sj   t jdd t  } |  dkr,|  dks0J t d t   t  } |  dkrb|  dksfJ d S )Nr   rZ   r   r   all)r+   subplotr|   Zget_rminZget_rmaxcloser   r   r8   r8   r9   test_polar_no_data  s    
r   c                  C   sH   t  jdd} tt | d W d    n1 s:0    Y  d S )Nr   rZ   Zdatalim)r+   r,   r-   pytestraises
ValueErrorZset_adjustabler   r8   r8   r9   !test_polar_not_datalim_adjustable&  s    r   c                  C   sv   t  } | jdd}|jdd t j|j dd | j  |j	j
d j dksXJ |jj
d j dksrJ d S )NTr   rG   )r>   F)Zvisibler   )r+   r,   r-   ZgridZsetpr   Zget_ticklabelscanvasdrawr}   
majorTicksZgridlineZ	get_alphar   r8   r8   r9   test_polar_gridlines,  s    
r   c                  C   sF   t jddid\} }| j  || j }t|jg ddd d S )Nr[   r   r   )gyZ@g,ԚG=@g_)Gހ@gR!+|@r   )Zrtol)r+   r   r   r   Zget_tightbboxZget_rendererr   Zextents)r4   r5   Zbbr8   r8   r9   test_get_tightbbox_polar8  s    
r   c                 C   s   | j dddjdgdgdtj ddd	}| j d
ddjdgdgdtj ddd	}|j dddjdgdgdtj ddd	}|j d
ddjdgdgdtj ddd	}d S )Ny   r   rZ   r   r   r   r   F)Z	edgecolorZantialiasedz   rO   r]   )r-   barr(   r*   )ra   rb   p1p2Zp3Zp4r8   r8   r9   )test_polar_interpolation_steps_constant_r@  s    r   c                 C   s`   | j dddtjd gddg\}d| _|j ddtdtjd dtddd d S )Nr   rZ   r   rO   r   d   e   )r-   r.   r(   r*   get_path_interpolation_stepsZlinspace)ra   rb   lr8   r8   r9   )test_polar_interpolation_steps_variable_rN  s
    $
r   c                  C   s   t jdd} | ddtj  | jddd tjtdd	" | dd
tj  W d    n1 sb0    Y  tjtdd	 | jddd W d    n1 s0    Y  d S )Nr   rZ   r   rO   r   i  )ZthetaminZthetamaxz+angle range must be less than a full circle)matchr   i  )r+   r   set_thetalimr(   r*   r   r   r   r   r8   r8   r9   test_thetalim_valid_invalidV  s    0r   c                  C   sj   t jdd} | dd tt|  |  fdks:J | d tt|  |  fdksfJ d S )Nr   rZ   r   r   r   )rO   r   )r+   r   r   tupler(   radiansZget_thetaminZget_thetamaxr   r8   r8   r9   test_thetalim_argsb  s
    "
r   c                  C   s|   t jdddid\} }| D ]}|dtj q| D ]<}t|j 	 }t
d|v sdJ t
d|vs:J q:d S )NzAAAABB.r[   r   r   r   rF   r   )r+   subplot_mosaicvaluesr   r(   r*   degreesr}   Zget_majorticklocstolistr   Zapprox)r4   r   r5   Zticklocsr8   r8   r9   test_default_thetalocatorj  s    
r   c                  C   s4   t jdd} t dtjd }| jdks0J d S )Nr   rZ   r   rW   r   )r+   r   axvspanr(   r*   r   r   )r5   spanr8   r8   r9   test_axvspanx  s    r   c                 C   s`   | j dddddid}dD ]}|j|   q|j dddddid}dD ]}|j|   qHd S )NrO   Tr[   r   )sharexr   )r   r   r   )shareyr   )r   Zflatremove)rb   ra   r   rU   r8   r8   r9   test_remove_shared_polar~  s    r   c                  C   s   t jddddiddd\} }| j  |d jjd  s>J |d jjd  sVJ t jdddiddd\} }| j  |d	 jjd  sJ |d	 jjd  sJ d S )
NrO   r[   r   T)r   r   r   r   r   zab
cdb)	r+   r   r   r   r}   r   Zget_visibler   r   )r4   r   r8   r8   r9   "test_shared_polar_keeps_ticklabels  s    



r   c                  C   sD   t jdd} | dd | d | ddg |  dks@J d S )	Nr   rZ   r   r   r=   rK   rG   )r   rG   )r+   r   r   Zaxvliner.   r   r   r8   r8   r9   (test_axvline_axvspan_do_not_modify_rlims  s
    
r   c                  C   s   t jdd} | dddks J | dddks4J | dddksHJ | ddd	ks\J | ddd
kspJ | dddksJ | dddksJ | dddksJ | dddksJ d S )Nr   rZ   r   u   θ=0π (0°), r=0.000rK   u   θ=0.00π (0°), r=0.100r   u   θ=0.000π (0.0°), r=1.000u   θ=0.3π (57°), r=0.000u   θ=0.32π (57°), r=0.100u   θ=0.318π (57.3°), r=1.000rO   u   θ=0.6π (115°), r=0.000u   θ=0.64π (115°), r=0.100u   θ=0.637π (114.6°), r=1.000)r+   r   Zformat_coordr   r8   r8   r9   test_cursor_precision  s    r   ),Znumpyr(   Znumpy.testingr   r   Z
matplotlibrB   r   r+   Zmatplotlib.testing.decoratorsr   r   r:   rE   rV   rY   rc   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r8   r8   r9   <module>   st   
!



	









 




	





