o
    ĎiG                     @   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gddd Zedgddd Zedg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d5dd6d7 Ze
d8gddd9d: Zedgdd;d< Zedgdd=d> Zd?d@ ZdAdB ZdCdD Z dEdF Z!dGdH Z"dIdJ Z#edgddKdL Z$edgddMdN Z%dOdP Z&dQdR Z'dSdT Z(dUdV Z)edgddWdX Z*dYdZ Z+d[d\ Z,d]d^ Z-d_d` Z.e
dagdddbdc Z/e ddde Z0dfdg Z1ej23dhdidjge
dkgdd5dldmdn Z4dS )o    N)assert_allclose)pyplot)image_comparisoncheck_figures_equalzpolar_axes.png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   )color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)axistick1Ontick2On	direction)
nparangepipltfigureadd_subplotplotannotatedicttick_params)rthetafigaxlineindthisr	thistheta r<   W/home/jeff/fluffinator/venv/lib/python3.10/site-packages/matplotlib/tests/test_polar.pytest_polar_annotations
   s$   
	r>   zpolar_coords.pngTgy&1?)r   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   
      r4         ?)r   alphaequal)aspectzthe top       @      $@r   g      4@r   r   r   r   r   r   T)r   r   xycoordsr    r!   r"   r#   clip_oni)mplpatchesEllipser-   r.   r/   
add_artistset_clip_boxbboxr1   r*   r,   r2   set_xlimset_ylim)elr6   r7   r<   r<   r=   test_polar_coord_annotations,   s"   

rS   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 q2d S )Nr   ih  Z   )r   皙?皙?g333333?皙?r   皙?rY   rW   rW   T
horizontal)r   labelverticalF   r   top)angler"   r#   )r*   r+   r-   r.   add_axesset_thetagridspatchset_visiblerangeaxes
set_rgrids)anglesgrid_valuesr6   rectrZ   r\   ir<   r<   r=   test_polar_alignmentI   s   

rk   c                  C   sJ   t  } t ddgddg t ddgddg t| jdks#J d	d S )
Nr   r]   rY   rU   r      g333333?rV   z!More than one polar Axes created.)r-   r.   r   lenre   )r6   r<   r<   r=   test_polar_twice^   s   rn   png)
extensionsc                 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   iMrU   rY   r]      if  )r/   r0   r*   deg2radfig_testfig_refr7   r<   r<   r=   test_polar_wrape   s   rz   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
   rF         @r   c                       g | ]}| j  qS r<   deg.0r$   unitsr<   r=   
<listcomp>w       z&test_polar_units_1.<locals>.<listcomp>r   rq   r   )xlabel)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterr-   r.   numberr   r/   r0   r*   rv   set)rx   ry   xsysr7   r<   r   r=   test_polar_units_1o   s   r   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sCJ |jd
d}|t|| |j
tjdj |jddd d S )Nr   r{   c                    r   r<   r   r   r   r<   r=   r      r   z&test_polar_units_2.<locals>.<listcomp>r}   c                    r   r<   )km)r   yr   r<   r=   r      r   radr   )
thetaunitsrunitsr   rq   z{:.12})r   ylabel)r   r   r   r   r-   r.   r   r   
isinstancegcaxaxisget_major_formatterUnitDblFormatterr/   r0   r*   rv   set_major_formatterrJ   tickerFuncFormatterformatr   )rx   ry   r   xs_degr   ys_kmr7   r<   r   r=   test_polar_units_2~   s   r   zpolar_rmin.png)r   c                  C   sZ   t ddd} dt j |  }t }|jg ddd}|||  |d |d	 d S )
Nr   r~   {Gz?r]   rX   Tr   rF   rB   	r*   r+   r,   r-   r.   r`   r0   set_rmaxset_rminr4   r5   r6   r7   r<   r<   r=   test_polar_rmin      
r   zpolar_negative_rmin.pngc                  C   sZ   t ddd} dt j |  }t }|jg ddd}|||  |d |d d S )Ng      r	   r   r]   rX   Tr   r   r   r<   r<   r=   test_polar_negative_rmin   r   r   zpolar_rorigin.pngc                  C   sd   t ddd} dt j |  }t }|jg ddd}|||  |d |d	 |	d
 d S )Nr   r~   r   r]   rX   Tr   rF   rB   r	   )
r*   r+   r,   r-   r.   r`   r0   r   r   set_roriginr   r<   r<   r=   test_polar_rorigin   s   

r   zpolar_invertedylim.pngc                  C   s*   t  } | jg ddd}|dd d S )NrX   Tr   r]   r   )r-   r.   r`   rQ   r6   r7   r<   r<   r=   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 )	NrX   Tr   r   r]   none)cr   )r-   r.   r`   yaxisset_invertedr0   marginsr   r   r<   r<   r=   test_polar_invertedylim_rorigin   s   
r   zpolar_theta_position.pngc                  C   s\   t ddd} dt j |  }t }|jg ddd}|||  |dd	 |d
 d S )Nr   r~   r   r]   rX   Tr   NW   	clockwise)	r*   r+   r,   r-   r.   r`   r0   set_theta_zero_locationset_theta_directionr   r<   r<   r=   test_polar_theta_position   s   r   zpolar_rlabel_position.pngc                  C   s.   t  } | jdd}|d |jdd d S )Nr   rq   i;  auto)rotation)r-   r.   r/   set_rlabel_positionr3   r   r<   r<   r=   test_polar_rlabel_position   s   
r   zpolar_title_position.pngmpl20c                  C   s"   t  } | jdd}|d d S )Nr   rq   foo)r-   r.   r/   	set_titler   r<   r<   r=   test_polar_title_position   s   r   zpolar_theta_wedge.pngc               	   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 ]Z\}}t|D ]Q\}	}
|||	f }|||  ||
k rZ|| |	|
 n||
 |	| |
d |jdd||t|  dd |jjddd |j jjg dd q;q3d S )Nr   r~   r   r]   g      .@g     v@r|   g      I@)r%   ininoutr   T)      )
subplot_kwfigsizer   r   )r'   r(   r)   r   )label2Onr   )r   r]   g      @   r@   )steps)r*   r+   r,   r-   subplotsrm   	enumerater0   set_thetaminset_thetamaxr   r3   r   set_tick_paramsr   get_major_locatorbase
set_params)r4   r5   
theta_mins
theta_maxs
DIRECTIONSr6   axsrj   startjendr7   r<   r<   r=   test_polar_theta_limits   s:   




r   c                 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@   )r^   rB   bottomrG   r   set_rlimr   r   rw   r<   r<   r=   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   rB   r@   r   rG   r   rw   r<   r<   r=   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   rq   r@   r   r   )r-   r.   r/   r0   r*   r+   get_ylimr7   r<   r<   r=   test_polar_rlim_zero  s   r   c                  C   sj   t jdd t  } |  dkr|  dksJ t d t   t  } |  dkr1|  dks3J d S )Nr   rq   r   r   all)r-   subplotr   get_rminget_rmaxcloser   r   r<   r<   r=   test_polar_no_data"  s   
 r   c                  C   s2   t jdd t  } | d |  dksJ d S )Nr   rq   logr   )r-   r   r   
set_rscaler   r   r<   r<   r=   test_polar_default_log_lims-  s   
r   c                  C   sJ   t  jdd} tt | d W d    d S 1 sw   Y  d S )Nr   rq   datalim)r-   r.   r/   pytestraises
ValueErrorset_adjustabler   r<   r<   r=   !test_polar_not_datalim_adjustable4  s   "r   c                  C   sv   t  } | jdd}|jdd t j|j dd | j  |j	j
d j dks,J |jj
d j dks9J d S )NTr   rU   )rC   F)visibler   )r-   r.   r/   gridsetpr   get_ticklabelscanvasdrawr   
majorTicksgridline	get_alphar   r<   r<   r=   test_polar_gridlines:  s   
r   c                  C   sF   t jddid\} }| j  || j }t|jg ddd d S )Nrr   r   r   )gyZ@g,ԚG=@g_)Gހ@gR!+|@r   )rtol)r-   r   r   r   get_tightbboxget_rendererr   extents)r6   r7   bbr<   r<   r=   test_get_tightbbox_polarF  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   rq   r   r   r   r   F)	edgecolorantialiasedz   r]   rt   )r/   barr*   r,   )rx   ry   p1p2p3p4r<   r<   r=   )test_polar_interpolation_steps_constant_rN  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   rq   r   r]   r   d   e   )r/   r0   r*   r,   get_path_interpolation_stepslinspace)rx   ry   lr<   r<   r=   )test_polar_interpolation_steps_variable_r\  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 s1w   Y  tjtdd	 | jddd W d    d S 1 sPw   Y  d S )Nr   rq   r   r]   r   i  )thetaminthetamaxz+angle range must be less than a full circle)matchr   i  )r-   r   set_thetalimr*   r,   r   r   r   r   r<   r<   r=   test_thetalim_valid_invalidd  s   "r  c                  C   sj   t jdd} | dd tt|  |  fdksJ | d tt|  |  fdks3J d S )Nr   rq   r   r   r   )r]   r   )r-   r   r  tupler*   radiansget_thetaminget_thetamaxr   r<   r<   r=   test_thetalim_argsp  s
   "
&r!  c                  C   s|   t jdddid\} }| D ]	}|dtj q| D ]}t|j 	 }t
d|v s2J t
d|vs;J qd S )NzAAAABB.rr   r   r   r   rT   r  )r-   subplot_mosaicvaluesr  r*   r,   degreesr   get_majorticklocstolistr   approx)r6   r   r7   ticklocsr<   r<   r=   test_default_thetalocatorx  s   
r)  c                  C   s4   t jdd} | dtjd }| jdksJ d S )Nr   rq   r   rl   r   )r-   r   axvspanr*   r,   r  r  )r7   spanr<   r<   r=   test_axvspan  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|   q$d S )Nr]   Trr   r   )sharexr   )r   r   r   )shareyr   )r   flatremove)ry   rx   r   rj   r<   r<   r=   test_remove_shared_polar  s   r1  c                  C   s   t jddddiddd\} }| j  |d jjd  sJ |d jjd  s+J t jdddiddd\} }| j  |d	 jjd  sIJ |d	 jjd  sUJ d S )
Nr]   rr   r   T)r   r-  r.  r   r   zab
cdb)	r-   r   r   r   r   r   get_visibler   r"  )r6   r   r<   r<   r=   "test_shared_polar_keeps_ticklabels  s   



r4  c                  C   sD   t jdd} | dd | d | ddg |  dks J d S )	Nr   rq   r   r   rB   rY   rU   )r   rU   )r-   r   r*  axvliner0   r   r   r<   r<   r=   (test_axvline_axvspan_do_not_modify_rlims  s
   
r6  c                  C   s   t jdd} | dddksJ | dddksJ | ddd	ks$J | ddd
ks.J | dddks8J | dddksBJ | dddksLJ | dddksVJ | dddks`J d S )Nr   rq   r   {Gzt?u   θ=0.0π (0°), r=0.005rY   u   θ=0.00π (0°), r=0.100r   u   θ=0.000π (0.0°), r=1.000u   θ=0.3π (57°), r=0.005u   θ=0.32π (57°), r=0.100u   θ=0.318π (57.3°), r=1.000r]   u   θ=0.6π (115°), r=0.005u   θ=0.64π (115°), r=0.100u   θ=0.637π (114.6°), r=1.000)r-   r   format_coordr   r<   r<   r=   test_cursor_precision  s   r9  c                  C   s   t jdd} dd }d | _|| _| dddksJ | dd	d
ks$J | dddks.J || _d | _| dddks>J | dddksHJ | dddksRJ || _|| _| d	ddksbJ | dddkslJ | dddksvJ d S )Nr   rq   c                 S   s   d| d  S )Nz$%1.1fMgư>r<   )r$   r<   r<   r=   millions  s   z&test_custom_fmt_data.<locals>.millions   g    sAu,   θ=3.8197186342π (687.54935416°), r=$20.0Mi  g    >Au-   θ=392.794399551π (70702.9919191°), r=$2.0Mr   r  u!   θ=0.95493π (171.887°), r=$0.0Mg     jAr   u   θ=$0.2M, r=1.000rY   u   θ=$0.0M, r=0.100g    .Ar7  u   θ=$1.0M, r=0.005g   ZAu   θ=$2.0M, r=$6000.0Mg NgmCl   {  u!   θ=$1000000000000.0M, r=$12891.3Ml   1;Ti 	Bu   θ=$3938980.6M, r=$1107.9M)r-   r   	fmt_xdata	fmt_ydatar8  )r7   r:  r<   r<   r=   test_custom_fmt_data  s"   r>  zpolar_log.pngc                  C   sX   t  } | jdd}|d |dd d}|tddtj |t	dd| d S )	NTr   r   r   i  r  r   r]   )
r-   r.   r/   r   r   r0   r*   r  r,   logspace)r6   r7   nr<   r<   r=   test_polar_log  s   
*rA  c                 C   s   | j ddd}|dd |d |tddd |j ddd}|d |d	d
 |d |tddd ||fD ]}|jdd qAd S )Nr   red)rr   r   r   r]   r
  r   r   r   r  r   F)	labelleft)	r/   r   r   
set_rticksr*   r  r   r?  r3   )ry   rx   ax_refax_testr7   r<   r<   r=   test_polar_log_rorigin  s   


rG  c                  C   sN   t  } | jdd}|tj tj dd |j D }|g dks%J d S )Nr   rq   c                 S   s   g | ]}|  qS r<   )get_text)r   r  r<   r<   r=   r     s    z-test_polar_neg_theta_lims.<locals>.<listcomp>)u   -180°u   -135°u   -90°u   -45°u   0°u   45°u   90°u   135°)r-   r.   r/   r  r*   r,   r   r   )r6   r7   labelsr<   r<   r=   test_polar_neg_theta_lims  s
   rJ  orderbeforeafterzpolar_errorbar.png)baseline_imagesr?   r   c              	   C   s   t ddt j t jd }|t j d d }tjdd}|jdd}| d	kr>|d
 |d |j||dddddd d S |j||dddddd |d
 |d d S )Nr   r]   r   rB   )r   r   )r   r   rq   rL  NrY      r   seagreen)xerryerrcapsizefmtr   )	r*   r+   r,   r-   r.   r/   r   r   errorbar)rK  r5   r4   r6   r7   r<   r<   r=   test_polar_errorbar  s   


rX  )5numpyr*   numpy.testingr   r   
matplotlibrJ   r   r-   matplotlib.testing.decoratorsr   r   r>   rS   rk   rn   rz   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,  r1  r4  r6  r9  r>  rA  rG  rJ  markparametrizerX  r<   r<   r<   r=   <module>   s    

!




	












 



	







