U
    \	a4                    @   s+  d dl mZ d dlZd dlmZ d dlZd dlmZ d dlZd dl	m
Z
 zd dlmZ W n  ek
rx   d dlmZ Y nX d dlZd dlZd dlmZ d d	lmZ d dlZd dlZd dlZd d
lmZmZ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/ d dl0m1Z2 d dl3m4Z5 d dl6m7Z7m8Z8m9Z9 d dlm:Z: d dl;m<Z< dd Z=e dd Z>e dd Z?e dd Z@edgddd ZAedgddd ZBdd ZCedgddd  ZDed!d"d#d$d%gd&d' ZEd(d) ZFd*d+ ZGed,gd-d. ZHd/d0 ZIejJKd1d2edgd3d4d5d6 ZLed7gd8d9 ZMd:d; ZNd<d= ZOedgdd>d? ZPed@gdAdBdCdD ZQejJRdEdFdG ZSejJRdEdHdI ZTejJRdEdJdK ZUedgddLdM ZVedNgdAdBdOdP ZWdQdR ZXedSgdAdBdTdU ZYdVdW ZZdXdY Z[dZd[ Z\ed\gd]d^id_d`da Z]dbdc Z^eddddgdedf Z_edggdhdidjdk Z`edgddldm Zadndo ZbedpgdgdAdhdqdrds Zcedtgdudv Zdedwgdxdydzd{ Zeed|d|gdAdBd}d~ ZfedgdAdBdd Zgdd Zhedgdhdidd Zidd Zjedgdd ZkejJRdEejJKddddgedgddd ZleddgdAdhddd Zmedgdhdidd Znedgddd ZoedgdAdBdd ZpejJjKdeqdddferdddxeqddferdddxdeqdfgdddgddd ZsejJjKdeqdddferdddxeqddferdddxdeqdfgdddgddd ZtedgdAdBdd ZuedgdhdAddd Zvedgdd ZwedgdAdBdd Zxdd ZyedgdAdBdd ZzedgddgdAdÍddń Z{edgddhdddɄ Z|edgddhddd̄ Z}dd΄ Z~edgdddЄ Zedgddd҄ ZedgdddԄ Zedgdddք Zedgddل ZedgdAdEddd܄ ZedgdAdBdd߄ Zdd ZedgdAdBdd ZedgdAdBdd ZedgdAdddd ZedgdAdBdd ZedgdAdBdd ZedgdEdAddd ZedgdAdBdd Zeddgdd Zdd Zdd Zed gdd Zedgdd Zedgddd Zedgddd	 Zedgdd
d Zedgddd Zdd Zdd Zedgdd Zdd Zdd Zdd Zdd Zdd Ze ejJRdEdd  Zd!d" Zed#gdAdBd$d% Zedgdd&d' Zd(d) Zed*gdAdBd+d, Zed-gdAdBd.d/ Zed0gdAdBd1d2 Zed3gd4d5 Zd6d7 Zd8d9 ZejJjKd:ej jd;d< d=d< gd>d?d@gddAdB ZejJKdCg dDfg gdDfg g gdfgdEdF ZejJKdGdHej+jjfdIejjjfdJej+jjfgdKdL ZedgddMdN ZedgddOdP ZedgddQdR ZedgddSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zed_gdAdBd`da Zedbgdcdd Zdedf ZedggdAdhddhdi Zedjgdhdidkdl ZedmdmgdAdhddndo ZedpgdAdhddqdr Zdsdt ZG dudv dvZÐdddwdxdyZedzd{ZejJKd|eă eŐd}ed d dDdDggd~feĐddeŐdeƐdDd d dDggd~feĐdd}d~eŐdeƐdDd d dDggd~feĐd}deŐd}ed d dDdDggd~feĐd}dgdeŐd}dged d dDdDgd dd dDggd~fgdd Z[[ejJKdeȃ dfeȐd}ddfeȐddwdfeȐddgdwddgfeȐdddfeȐddwdfeȐddwdfeȐddddfeȐd}ddddfeȐdddfeȐddddfgdd Zɐdd Zʐdd Zːdd Zedgdd Z͐dd Zΐdd Zeddgdd ZedgdAdBdd Zi dd< i fddZedgd]didEddd Zedgd]didEddd Zedgd]didEddd Zedgd]didEddd ZedgdAd]didEdddd Zedgd]didEdddd ZedgdAd]didEddd ZedgdAd]didEdddÄ ZedgdAd]didEddŐdƄ ZedgdAd]didEddȐdɄ ZedgdAd]didEddːd̄ ZedgdAd]didEddΐdτ ZedgdAd]didEddѐd҄ ZedgdAd]didEddԐdՄ ZedgdAd]didEddאd؄ ZedgdAd]didEddڐdۄ ZedgdAd]didEddݐdބ ZedgdAd]didEddd ZedgdAd]didEddd ZedgdAd]didEddd ZedgdAd]didEddd ZedgdAd]didEddd ZedgdAd]didEddd Zdd Zdd ZeddgddEddd ZedgdAdEddd ZedgdAd]didEddd Zed dgdEdidd Zdd Zedgd]didAdDdEddd	 Zed
gdAd]didEddd ZedgdAd]didEddd Zdd Zdd Zdd Zdd ZedgdAd]didEddd Zeddgdd Zedgdd  Zed!gd"d# Zed$gd%d& Zed'gd(d) Zed*gd+d, Zed-gd.d/ Zed0gd1d2 Z ed3gd4d5 Zed6gd7d8 Zed9gd:d; Zed<gd=d> Zed?gd@dA ZedBgdCdD ZdEdF ZdGdH ZdIdJ Z	dKdL Z
edgddMdN ZedgddOdP ZdQdR ZdSdT ZdUdV ZedWdXdWgdYdZ Zd[d\ Ze d]d^ Zd_d` Zedagdbdc Zddde Zdfdg Zedgddhdi Zdjdk Ze dldm ZejJKdndDddgeƐdDddgdDgdodp Zedqdqgdrds Zedtgdudv ZedwgdAdBdxdy Zedzgd{d| Zed}gd~d ZejJjKddAdgddgdedgdhdAddd Z dd Z!dd Z"ejJjKddAdgddgdedgdhdAddd Z#edgdd Z$edgdd Z%edgdd Z&edgdAdBdd Z'dd Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/edgdd Z0dd Z1dd Z2dd Z3edgdAdBdd Z4edgdAdBdd Z5edgdAdBdd Z6dd Z7dd Z8edgdAdBdd Z9eddgdAdBddÄ Z:edgdAdBdŐdƄ Z;ejJKdǐdȐdɐdgdːd̄ Z<edgdAdBdΐdτ Z=dАdф Z>ejJKdg gg d dDggd dDgg ggejJKdӐdԐdՐdddgdאd؄ Z?edgdAdBdڐdۄ Z@edgdݐdބ ZAedgdAdBdd ZBeddgeC dkr
d ndxdydd ZDe dd ZEe dd ZFe dd ZGe dd ZHdd ZIedddgdgddd ZJdd ZKedddgdgddd ZLdd ZMejJKdҐdDddejNdgejOdDddd dgd gedgddd ZPeddgdAdBdd ZQedgdAdBdd ZRd	d
 ZSeddddgdAddEddd ZTeddddgdAddEddd ZUeddddgdAddEddd ZVdd  ZWedgdd!d" ZXd#d$ ZYed%d&d'd(gdAd)dd*d+ ZZed,d-d.d/d0d1d2d3gdAdBd4d5 Z[ed6gdAdBd7d8 Z\ed9d9gdAdBd:d; Z]ejJKd<d=d>d?gd@dA Z^dBdC Z_dDdE Z`dFdG ZaejJKdHe/jbe/jcdIge/jde/jedJggdKdL ZfdMdN ZgdOdP ZhdQdR ZidSdT ZjejJKd1d2dUdV ZkdWdX ZldYdZ Zmed[gd\d] Zned^d^d^gdgdd_d` Zoedagdbdc Zpeddgdedf Zqedggdhdi Zredjgdkdl Zsedmgdndo Ztedpgdqdr Zudsdt Zvdudv Zwdwdx Zxdydz Zyed{gd|d} Zzd~d Z{dd Z|dd Z}edgdd Z~dd Zedgd]did_dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedgd]did_dd Zedgd]did_dd Zdd Zdd Zdd Zdd ZejJKddejjfdejjfeded fejjfdDdd ddgd dDddgfejjfejdejdfej jfgejJKderddejdd dgdd Zdd Zdd Zdd Zdd ZejJKde dd ZedgdAdBdÐdĄ ZdŐdƄ ZdǐdȄ ZedgdAdxddʐd˄ ZejJKdddAgedgdAdhddΐdτ ZejJRdEdАdф ZejdҐdgdԍdՐdք Zejdאdؐdِdgdԍdېd܄ Zdݐdބ Zdߐd Zdd Zdd ZedgdEdidd ZedgdEdidd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zdd Zdd Zdd Zedgddyd	d
 Zedgdd Zedgddydd ZedgdAdBdd Zdd Zdd Zdd Zdd Zdd ZÐdd ZĐd d! ZŐd"d# ZƐd$d% Zǐd&d' ZȐd(d) Zɐd*d+ ZejJRdEd,d- Zːd.d/ Z̐d0d1 Z͐d2d3 Zΐd4d5 Zϐd6d7 ZejJKd8d9d:gejJKd;d9d:gd<d= Zѐd>d? ZҐd@dA ZӐdBdC ZedgddDdE ZedgddFdG Z֐dHdI ZאdJdK ZؐdLdM ZejJKdNddAgejJKdOddAgdPdQ ZڐdRdS ZېdTdU ZܐdVdW ZݐdXdY ZސdZd[ Zߐd\d] Zed^gdhdAdd_d` Zedagdhdidbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zedgddxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZejJKdd2ejJKdddd Zedgddd ZejJRdEdd Z dd Zdd ZejJKddd e&jD dddg ejJRdEdd Zdd Zdd Zedgddd Zedgddd Zdd Z	ejJKddddgdd Z
dd Zdd Zdd ZdÐdĄ ZdŐdƄ ZdǐdȄ Zdɐdʄ Zdːd̄ ZejJRdEd͐d΄ ZdS (      )
namedtupleNDecimal)product)SimpleNamespace)nullcontext)	ExitStack)ma)cycler)image_comparisoncheck_figures_equalremove_ticks_and_titles)Figure)assert_allcloseassert_array_equalassert_array_almost_equal)
rc_context)MatplotlibDeprecationWarningc                  C   sD   t  \} }|d |d | dks0t| dks@td S )Nzx labelzy label)pltsubplots
set_xlabel
set_ylabelZ
get_xlabelAssertionErrorZ
get_ylabelfigax r   >/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_axes.pytest_get_labels,   s
    

r   c                 C   s   |   }|jddgddgddgdd}|  |jddd |jdd	d | |}|jd
dd |  }|jddgddgddgdd}|  |jddd	d |jddd	d ||}|jd
dd	d d S )N      scatterclabelY LabeltoplocX LabelrightZ Labelyhaxr.   r   r!   legendr   r   colorbar	set_labelfig_testfig_refr   Zsccbarr   r   r   test_label_loc_vertical4   s    

r9   c                 C   s   |   }|jddgddgddgdd}|  |jddd |jdd	d | j|d
d}|jdd	d |  }|jddgddgddgdd}|  |jddd	d |jddd	d |j|d
d}|jddd	d d S )Nr   r    r!   r"   r%   bottomr'   r)   left
horizontalorientationr+   r   r,   r/   r1   r5   r   r   r   test_label_loc_horizontalG   s    r?   c              	   C   s   t ddd` |  }|jddgddgddgdd}|  |d |d	 | j|d
d}|d W 5 Q R X | }|jddgddgddgdd}|  |jdddd |jd	ddd |j|d
d}|jdddd d S )Nr*   r&   )zxaxis.labellocationzyaxis.labellocationr   r    r!   r"   r%   r)   r<   r=   r+   r,   r/   )	
matplotlibr   r   r!   r2   r   r   r3   r4   r5   r   r   r   test_label_loc_rcZ   s"    


rA   png
extensionsc           	      C   s   t jd d}t jdd| }|d }|  }|j||d | }t j||ddt || }t 	| |d }||d | ||  }|
|dg| |jdddd d S )	N!N,   r   r   )maxlagsfull)mode)r-   xminxmax)nprandomseednormalZcumsumr   ZacorrZ	correlatedotarangevlinesaxhline)	r6   r7   ZNxr0   rG   ax_testax_refZnorm_auto_corrZlagsr   r   r   
test_acorro   s    rV   c                 C   s   t jd t d}d|d d< t j| |d}| d}|d | |d j|dd	d
 |d}|d j|ddd |d j	
  |d jt |d d d dddi |d jd|d  |d  d d d d |D ]}|j	d qd S )NrE   i   r   rF   )    rW   r    r   .lower)markeroriginZgray_rnearest)cmapinterpolation
markersize
   )aspectxlimylimboth)rX   )rL   rM   rN   onesshufflereshaper   spyimshowxaxistick_topplotZnonzerosetget_xlimget_ylimset_ticks_position)r6   r7   aaxs_testaxs_refr   r   r   r   test_spy   s&    



( 
 ru   c               
   C   sT   t  \} }ddidddfD ]0}tt |jtddf| W 5 Q R X qd S )Nr^   r\   osolid)rZ   	linestyle   )r   r   pytestraises	TypeErrorri   rL   Zeye)r   r   Zunsupported_kwr   r   r   test_spy_invalid_kwargs   s    r}   c                 C   sT   t jd tjdd}|  | | }|| |j	
  |j	d d S )Nmpl20rW   re   )mplstyleuserL   rM   randadd_subplotZmatshowrj   rk   rl   rq   )r6   r7   rr   rU   r   r   r   test_matshow   s    

r   Zformatter_ticker_001Zformatter_ticker_002Zformatter_ticker_003Zformatter_ticker_004Zformatter_ticker_005c                     sV  dd l m  m     dtjd<  fddtdD }  fddtdD } fddtdD }t 	 }|
d	 t 	 }|
d	 |j| |d
dd t 	 }|
d	 |j| |d
dd |
d t 	 }|j| |d
dd |j| |ddd |
d t 	 }|j| |d
dd |j| |ddd |
d |  d S )Nr      zlines.markeredgewidthc                    s   g | ]}| j  qS r   )sec.0r0   unitsr   r   
<listcomp>   s     z)test_formatter_ticker.<locals>.<listcomp>ra   c                    s   g | ]}d | d  j  qS )      ?      ?kmr   r-   r   r   r   r      s     c                    s   g | ]}d | d  j  qS )g      ?      ?r   r   r   r   r   r      s     zx-label 001bluer   )colorZxunitszx-label 003greenhourzx-label 004zx-label 005)matplotlib.testing.jpl_unitstesting	jpl_unitsregisterr@   rcParamsranger   figurer   r   rm   autoscale_view)ZxdataZydata1Zydata2r   r   r   r   test_formatter_ticker   s0    






r   c                  C   s   dd } t   }|jjs t|jjs,t|jjs8t|jjsDt|j|  |jjr\t|jjsht|jjstt|jjstt	
| }t|j t	j
st|j j|jkstd S )Nc                 S   s   dS )N r   r0   posr   r   r   	_formfunc   s    z4test_funcformatter_auto_formatter.<locals>._formfunc)r   r   r   rk   isDefault_majfmtr   isDefault_minfmtyaxisset_major_formattermtickerFuncFormatter
isinstanceget_major_formatterfunc)r   r   Ztarg_funcformatterr   r   r   !test_funcformatter_auto_formatter   s     

r   c                  C   s   d} t   }|jjst|jjs(t|jjs4t|jjs@t|j|  |jjsXt|jjsdt|jjspt|jjr|tt	
| }t|j t	j
st|j j|jkstd S )Nz	{x}_{pos})r   r   r   rk   r   r   r   r   set_minor_formatterr   ZStrMethodFormatterr   Zget_minor_formatterfmt)Zformstrr   Ztarg_strformatterr   r   r   &test_strmethodformatter_auto_formatter   s     

r   Ztwin_axis_locators_formattersc                  C   s  t jddddd} t t j|  d }t|}tddd	g}t }|ddd}|dd
gddg |j	
| |j	| |j	td |j	tdddg |j
t  |jtddddg |jtd |jtddddg |  |  d S )Nr   r      T)numZendpoint       @皙?皙?333333?d   z%08.2lfZtricksZmindZjedi   #   7   K   z%05.2lfr#   3prv   )rL   linspacesinpir   ZFixedLocatorr   r   rm   r   set_major_locatorZset_minor_locatorr   ZFormatStrFormatterr   ZFixedFormatterrk   ZLinearLocatortwinytwinx)valsZlocsZmajlZminlr   ax1r   r   r   "test_twin_axis_locators_formatters  s&    
r   c                  C   s   t  \} }| }| }t   |j r2t|j r@t|	  |	  |j r^t|j rlt|j
 szt|j st|j rt|j
 rt|j st|j st|j
 std S N)r   r   r   r   drawrk   get_visibler   patchclar   )r   r   ax2ax3r   r   r   test_twinx_cla$  s"    r   twinr0   r-   gRQ?)rD   tolc                 C   sF  d| }d| d}t dd}| ddd}t|| }t||d ||| | ddd}t||d t|| }||| dD ]}|dd|}	t|	|d |	|| tjj}
|tj	j
|
d	d	gd	dgd	dgddgddgdd	gdd	gd	d	gg|
j|
jgd
 |	jdtjd tjd dd qt|  t| d S )Nr   set_scaler   r   r    logr   r    r      nonezaxes.edgecoloraxes.linewidthZ
projecting)	transform	facecolor	edgecolor	linewidthZcapstyle)rL   rQ   r   getattrrm   r@   pathPath
add_artistpatches	PathPatchZMOVETOZLINETO	transAxesr   r   r   )r6   r7   r   Z	twin_funcZ	set_scaler0   rT   ax_twinirU   r   r   r   r   test_twin_logscale;  sJ    
   r   ztwin_autoscale.pngc                  C   s   t dddg} d|  }t dddg}d| }t }|jdddd}|j| |dd	d
 t|}|j||ddd |dd |dd d S )Nr   r   r   r    r   r   r   r   F)Zautoscalex_onZautoscaley_onr   ra   r   lwr--r   r   )rL   arrayr   r   add_axesrm   r   margins)r0   r-   x2y2r   r   r   r   r   r   test_twinx_axis_scalesg  s    
r   c                  C   st   t  \} }| }|d | }| s2t| r>t| }|d | }| sdt| rptd S )NF)	r   r   r   Zset_autoscalex_onget_autoscalex_onr   r   Zset_autoscaley_onget_autoscaley_on)r   r   Zax_x_onZax_x_offZax_y_onZax_y_offr   r   r   #test_twin_inherit_autoscale_settingy  s    

r   c                  C   sr  t d} |  }| rt| r*ttjd}|| | rLt| sXt|	  t
ddtj d}||t| | rt| rt|	  || t   | rt| stt d}t jd|d}|jd | st||t| |	  | r*t|	  || ||t| |	  | sdtt |  d S )	Nr   )r   r   r    r         shareyT)r   r   gcaZxaxis_invertedr   Zyaxis_invertedrL   rM   rj   r   r   r   rm   cos	autoscalesubplotr   Zset_invertedclose)r   r   imgr0   ax0r   r   r   r   test_inverted_cla  s>    




r   c              	   C   s`   t ddd" |  }|ddgddg W 5 Q R X | }|ddgddg |  d S )NT)zxtick.minor.visiblezytick.minor.visibler   r   )r@   r   r   rm   minorticks_on)r6   r7   rT   rU   r   r   r    test_minorticks_on_rcParams_both  s    
r  Zautoscale_tiny_rangeTremove_textc                  C   sL   t dd\} }t|jD ],\}}dd|  }|ddgdd| g qd S )Nr    ra   ir   r   )r   r   	enumerateflatrm   )r   axsr   r   y1r   r   r   test_autoscale_tiny_range  s    r  defaultc                  C   sb   t dd\} }|ddddg |jdddd |jdd	dd t| d
 t| d d S )Nr   r    ry   r   Tr0   F)enableaxistightr-   )g333333ÿg333333	@)r         @)r   r   rm   r   r   ro   rp   r   r   r   r   test_autoscale_tight  s    r  c                  C   s   t jdtd} tjdddd\}\}}|| |  || |  |jdd |jdd t  | d | d f}t	|
 | t	| | t	|
 | t	| | d	 | d f d S )
Nr   Zdtyper    r   Tsharex)r  r_   r   )rL   rQ   floatr   r   loglogsemilogxr   r   r   ro   rp   )r0   r   r   r   Zlimsr   r   r   test_autoscale_log_shared  s    r  c                  C   s   t  \} }|jddgddggdd t| d t| d d|_|  d	d|j  d
d|j  f}d	d|j	  d
d|j	  f}t| | t| | d|_|  t| d t| d d S )Nr   r   r    ry   rY   r[   )      r   Fr  r   T)
r   r   rj   r   ro   rp   Zuse_sticky_edgesr   Z_xmarginZ_ymargin)r   r   rc   rd   r   r   r   test_use_sticky_edges  s    r  c                 C   sZ   t ddd}| d}| jd|d}|| |d}|jd|d}|| d S )Nr   ry   r   r   r   r  )rL   rQ   rh   r   
pcolormesh)r6   r7   Zr   r   r   r   r   test_sticky_shared_axes  s    


r  Zoffset_pointsc                  C   sf   t ddd} t dt j |  }t }|jdddd}|j| |d	d
d\}|jdddddd d S )N              @{Gz?r   F)r_   r   r   )Zautoscale_onrc   rd   ry   purpler   r   z	local maxry   r   datary   ry   zoffset points)xyxycoordsxytext
textcoords)	rL   rQ   r   r   r   r   r   rm   annotate)tsr   r   liner   r   r   test_basic_annotate  s    
 r.  c               	   C   s8   t  \} }tjtdd |jddd W 5 Q R X d S )Nz;The \'s\' parameter of annotate\(\) has been renamed 'text'matchznow named textr   r   )r,  r&  )r   r   rz   warnsr   r*  r   r   r   r   test_annotate_parameter_warn  s
    r3  zarrow_simple.pngc            
      C   s   d} d}d}t | ||}tdd\}}tt|j|D ]v\}\}}|dd |dd |\} }}dtj	 | d }	|j
ddt|	t|	|	d	 | |||	d
 |	d
 d
 q8d S )N)TF)rH   r;   r*   ry   r   r       r   r   ra   )widthlength_includes_headshapehead_starts_at_zeroZ
head_widthhead_length)r   r   r   r  zipr  set_xlimset_ylimrL   r   arrowr   r   )
r7  r8  r9  kwargsr   r  r   r   kwargthetar   r   r   test_arrow_simple&  s$    
rB  c                  C   s$   t  \} }|jdddddd d S )Nr   )r:  )r   r   r>  _r   r   r   r   test_arrow_emptyA  s    rE  c                  C   s@   t  \} }|dddd | dks,t| dks<td S )Nr   )皙?皙@)r   r   r>  ro   r   rp   rC  r   r   r   test_arrow_in_viewG  s    rH  c                  C   sN   t  \} }|jdddd}|jd ks*t|jdddi d}|jd k	sJtd S )Nfoor1  r    ry   )r(  )r(  
arrowprops)r   r   r*  Zarrow_patchr   )r   r   annr   r   r   test_annotate_default_arrowN  s
    rM  zfill_units.pngdpi<   )savefig_kwargc                  C   s  dd l m  m}  |   | jdtdddd}d| j }| dd}tj	d	d
dd}t
|}tdd\}\\}}\}	}
|j|g|gddd ddddg}||| ddddgd |j|g|gddd ||||| || gddddgd |	j|g|gddd |	|| d| j d| j d| j d| j gd |
j|g|gddd |
j|||| || gd| j d| j d| j d| j gdd |  d S )Nr   ET  r      dt      $@g     @z
2009-04-27z
2009-04-29datetime64[D]r  r    degred)Zyunitsr   r   r  g     V@bZ   r   )r   )r   r   r   r   EpochdatetimerX  DurationrL   rQ   mdatesdate2numr   r   rm   fillZautofmt_xdate)r   r+  valuedayrU  Zdtnr   r   r   r   ax4indr   r   r   test_fill_unitsW  s6    


 
""rf  c                	   C   s   t jtdd tjdgdgddd W 5 Q R X t jtdd tjdgdgdd	d
 W 5 Q R X t jtdd tjdgdgddd W 5 Q R X tjdgdgddd d S )Nzmarker .* redundantly definedr/  r   rv   r0   rZ   z linestyle .* redundantly defined---rx   zcolor .* redundantly definedrr   r   r   )r   r   )rz   r2  UserWarningr   rm   errorbarr   r   r   r    test_plot_format_kwarg_redundanty  s       ro  Zsingle_pointc                  C   s   dt jd< dt jd< td\} \}}|dgdgd |dgdgd dgdgd}td\} \}}|jd	d	d|d
 |jddd|d
 d S )Nrv   lines.markerT	axes.gridr    r   r   rr   rZ  rr   r$  rZ  )r@   r   r   r   rm   )r   r   r   r$  r   r   r   test_single_point  s    

rt  zsingle_date.pngr~   )r   c                  C   sj   dt jd< ttd} dg}dg}t dd\}}|d j||  |d	d
d |d j||d	d
d d S )N)   zaxes.formatter.limits
0000-12-31g    X&Ag(\bPr    r   r   rv   rk  rl  )	r   r   r_  r`  rL   
datetime64r   	plot_daterm   )rU  Ztime1data1r   r   r   r   r   test_single_date  s    
r{  c                 C   s|   t dd}t dddd}| d}|d | |d | |d}|d jdd	d
 |d |  d S )Nra   r   r_   r   r   r_   r   r    r   gQQ?)r   	   rc   rd   )rL   rQ   rh   r   rm   rn   Zravel)r6   r7   rowcolr  r   r   r   test_shaped_data  s    

r  c                  C   sZ   t jddgdtfdtfgd} t d}|d jdd| d |d	 jddd
| d d S )Nr   r   r    r    rf   Ztwosr  r    r   rs  r   rk  )rL   r   r  r   r   r   rm   )Zptsr  r   r   r   test_structured_data  s    r  Zaitoff_proj)rD   r  r   c                  C   sz   t t j t jd} t t j d t jd d}t | |\}}tjdtddd\}}|  |j|j	|j	ddd	 d
S )z^
    Test aitoff projection ref.:
    https://github.com/matplotlib/matplotlib/pull/14451
       r    )   @ZaitoffZ
projection)figsize
subplot_kwrv   r   )r`   N)
rL   r   r   meshgridr   r   dictgridrm   r  )r0   r-   XYr   r   r   r   r   test_aitoff_proj  s    
r  Zaxvspan_epochc                  C   s   dd l m  m}  |   | jdtdddd}| jdtdddd}| d| jd}t	
 }|j||d	d
d ||d|  |d|   d S Nr   rQ  rR  r   r  rT     r   r         ?)r   alphar  )r   r   r   r   r\  r]  r^  rc  convertr   r   axvspanr<  r   t0tfrU  r   r   r   r   test_axvspan_epoch  s    r  Zaxhspan_epoch{Gz?)r   c                  C   s   dd l m  m}  |   | jdtdddd}| jdtdddd}| d| jd}t	
 }|j||d	d
d ||d|  |d|   d S r  )r   r   r   r   r\  r]  r^  rc  r  r   r   axhspanr=  r  r   r   r   test_axhspan_epoch  s    r  zhexbin_extent.pngc                  C   st   t  \} }tdd d}|\}}|j||ddddgd ||d}t  \} }|jd	d
ddddg|d d S )N  )r      r   r   333333?ffffff?)extentr   r0   r-   )r  r$  )r   r   rL   rQ   rh   hexbin)r   r   r$  r0   r-   r   r   r   test_hexbin_extent  s    
r  zhexbin_empty.pngc                  C   s   t  } | g g  d S r   )r   r   r  r   r   r   r   test_hexbin_empty  s    r  c                  C   sd   t  \} }tdd d}|\}}|j||ddddgdd}td	d
d}||d s`td S )N   r    r   r   r   r  r  r_   )r  Zpicker  ,  r   r   )	r   r   rL   rQ   rh   r  r   containsr   )r   r   r$  r0   r-   ZhbZmouse_eventr   r   r   test_hexbin_pickable  s    r  zhexbin_log.pngc                  C   s~   dt jd< tjd d} tj| }dd|  dtj|   }td|d	 }t  \}}|j||d
d
d}t 	| d S )NFpcolormesh.snaprE   順 r         @r  r    r   r   )yscalebins)
r   r   rL   rM   rN   standard_normalpowerr   r  r3   )nr0   r-   r   r   hr   r   r   test_hexbin_log  s    
r  c                  C   s   t  \} }|  |ddddgddddg | dks@t| dksPtt   t  \} }|  |ddddgddddg | d	kst| d
kstt  \} }|	d |
dd | dkstd S )Nr   r    r   r   r   )r   r  r  )r  r   )r   r   r   ra   )ra   r   )r   r   invert_xaxisrm   ro   r   rp   r   invert_yaxis
set_yscaler=  r   r   r   r   test_inverted_limits   s    
r  Znonfinite_limitsc               	   C   s`   t dt jd} t jdd t | }W 5 Q R X t j| t| d < t \}}|	| | d S )Nr  r  ignoredivider    )
rL   rQ   eerrstater   nanlenr   r   rm   r0   r-   r   r   r   r   r   test_nonfinite_limits:  s    r  plot_funr!   rm   fill_betweenc                 C   s^   t jdddd}| }| }t|| g g  ||fD ] }t|| |tt|dd q8d S )Nz
2010-01-01z
2011-01-01rW  r  C0rl  )rL   rQ   r   r   r   r  )r  r6   r7   r0   rT   rU   r   r   r   r   test_limits_empty_dataE  s    r  rj   )r  r   c                  C   s   dt jd< d} t| | f\}}|| d 8 }|| d 8 }t|d |d  ||  }t \}}|| d|i}t \}}|jd|d d S )Nr\   image.interpolationr   r    rk  rs  )r@   r   rL   indicessqrtr   r   rj   )Nr0   r-   rk  r   r   r$  r   r   r   test_imshowV  s    

r  Zimshow_clipc            	      C   s   dt jd< d} t| | f\}}|| d 8 }|| d 8 }t|d |d  ||  }t \}}||| d g}|jd }|	 d }|
 }t||}|j||d d S )Nr\   r  r   r    r   r   )	clip_path)r@   r   rL   r  r  r   r   contourcollections	get_pathsget_transformmtransformsZTransformedPathrj   )	r  r0   r-   rk  r   r   r#   r  Zclip_transformr   r   r   test_imshow_clipk  s    

r  c              	   C   sh   ddgddgg}|  }|j|ddd |   }tjtdd	  |j|td
dddd W 5 Q R X dS )9Parameters vmin, vmax should be ignored if norm is given.r   r    ry   r   r   r   )vminvmaxCPassing parameters norm and vmin/vmax simultaneously is deprecated.r/  ra   )normr  r  N)r   rj   rz   r2  r   mcolors	Normalize)r6   r7   rr   r   r   r   r   test_imshow_norm_vminvmax  s    r  Zpolycollection_joinstylec                  C   sf   t  \} }tddgddgddgddgg}tjj|gdd}|| |dd |	dd d S )Nr   r    (   )
linewidthsr   ry   )
r   r   rL   r   r   r  ZPolyCollectionadd_collectionZ
set_xboundZ
set_ybound)r   r   vertsr#   r   r   r   test_polycollection_joinstyle  s    "
r  z	x, y1, y2r  ry   r  r    Z
2d_x_inputZ2d_y1_inputZ2d_y2_input)idsc              	   C   s4   t  \}}tt || || W 5 Q R X d S r   )r   r   rz   r{   
ValueErrorr  )r0   r  r   r   r   r   r   r   test_fill_between_input  s    r  z	y, x1, x2Z
2d_y_inputZ2d_x1_inputZ2d_x2_inputc              	   C   s4   t  \}}tt || || W 5 Q R X d S r   )r   r   rz   r{   r  fill_betweenx)r-   x1r   r   r   r   r   r   test_fill_betweenx_input  s    r  Zfill_between_interpolatec               	   C   s  t ddd} t dt j |  }dt dt j |   }tjdddd\}\}}|j| || |d	d
 |j| ||||kdddd |j| ||||kddd t j	|d}t jj
|d< |j| || |d	d
 |j| ||||kddd |j| ||||kddd d S )Nr  r    r  333333?r   r   Tr  blackrl  white/)wherer   hatchinterpolaterY  )r  r   r  r   r   r   )rL   rQ   r   r   r   r   rm   r  r	   masked_greaterZmasked)r0   r  r   r   r   r   r   r   r   test_fill_between_interpolate  s(    r  Z#fill_between_interpolate_decreasingr   r  c               	   C   s   t dddg} t dddg}t ddd	g}tjd
d\}}||| d ||| d |j| ||||k dddd |j| ||||kdddd |dd |dd d S )Ngfffff@i  i  g"@rv  rG  g@gffffff@gffffff@)r  r  r  ztab:redkr   T皙?)r  r   r  r  rY  r   r      X  )rL   r   r   r   rm   r  r<  r=  )r   r+  Zprofr   r   r   r   r   (test_fill_between_interpolate_decreasing  s$        r  z
symlog.pdfc               
   C   sp   t ddddddddg} t d	d
ddddddg}t \}}|| | |d |d |dd d S )Nr   r   r    r      r  r5     i@B i  r  r   r   symloglinearr_   i )rL   r   r   r   rm   r  
set_xscaler=  r  r   r   r   test_symlog  s    

r  zsymlog2.pdfc                  C   st   t ddd} tdd\}}t|dddd	d
gD ],\}}|| |  |jd|d |d q2|d dd	 d S )N2   MbP?r   r         4@r   r   r   r  r  )	linthreshTr_   皙)	rL   rQ   r   r   r;  rm   r   r  r=  )r0   r   r  r   r  r   r   r   test_symlog2  s    r  c                  C   s   dddddddg} dddd	dd
dddddddg}t | |\}}t ||}t| tt| t| ||d dd df  t||t|d dd df  d S )N            r  r  r   r   r   g      g      g      пr   r        ?      ?r_   )rL   r  hypotr   pcolorlist)r0   r-   r  r  r  r   r   r   test_pcolorargs_5205	  s         
r  r  c                  C   s*  dt jd< d} tdd| }tdd| d }t||\}}t|t| }t|t| }|d }t||d }||  |	  }t
t|d	t| k |}t d
d\}	\}
}}|
j|||d dd df d	dd |j|||d dd df dddgd |j|||dd d S )NFr  r5  r	  r   r    皙?r   r   r   ry   r_   r  )r   
edgecolorsrZ  wgouraudshading)r   r   rL   r   r  r   r   r  minptpr	   Zmasked_whereabsmaxr   r  )r  r0   r-   r  r  QxZQzr  ZZmr   r   r   r   r   r   r   test_pcolormesh  s    
 $(r  Zpcolormesh_alphaZpdf)rD   r  c                  C   s  dt jd< d} ttdd| tdd| d \}}|}|t| }t||d }||  |  }t 	dd	}|t
d	}d
d
tt
d	  |d d df< t|}t dd\}	\\}
}\}}|
|||fD ]&}|tjddddddd
gdd q|
j|||d dd df |dddd |j||||dddd |j|||d dd df |ddd |j||||ddd d S )NFr  r5  r	  r   r    r   viridis   r   ry   )r   r	  r  r   r   )r   zorderr_   r  r  r   )r]   r  r  r  r  )r]   r  r  )r   r   rL   r  r   r   r  r  r  get_cmaprQ   r  ZListedColormapr   	add_patchmpatches	Rectangler  )r  r  r  r  ZQyr  Zvircolorsr]   r   r   r   r   rd  r   r   r   r   test_pcolormesh_alpha/  s<    
$
   
 
 &r%  zpcolormesh_datetime_axis.pngFc                     s  dt jd< t  } | jdddd tddd t fd	d
tdD }td}t	tdtd\}}|| }t 
d t |d d |d d |d dd df  t 
d t ||| tj|tj ddd}tj|d d tjf ddd}t 
d t |d dd df |d dd df |d dd df  t 
d t ||| |  D ]*}| D ]}|d |d qrqfd S )NFr  r  \(\?333333?Zhspacer&   r:     r   c                    s   g | ]} t j|d  qS )daysr]  	timedeltar   dbaser   r   r   [  s     z1test_pcolormesh_datetime_axis.<locals>.<listcomp>r  r     r_      r   r        r*   r   )r   r   r   subplots_adjustr]  rL   r   r   rQ   r  r   r  repeatnewaxisget_axesget_xticklabelsset_haset_rotationr   r0   r-   Zz1Zz2zr   r$   r   r0  r   test_pcolormesh_datetime_axisR  s,    


.

>

r@  zpcolor_datetime_axis.pngc                     s  t  } | jdddd tddd t fddtd	D }td	}ttd
td
\}}|| }t 	d t 
|d d |d d |d dd df  t 	d t 
||| tj|tj d	dd}tj|d d tjf d	dd}t 	d t 
|d dd df |d dd df |d dd df  t 	d t 
||| |  D ]*}| D ]}|d |d qhq\d S )Nr  r&  r'  r(  r)  r   c                    s   g | ]} t j|d  qS r*  r,  r.  r0  r   r   r   u  s     z-test_pcolor_datetime_axis.<locals>.<listcomp>r  r  r2  r_   r3  r   r4  r5  r6  r*   r   )r   r   r7  r]  rL   r   r   rQ   r  r   r  r8  r9  r:  r;  r<  r=  r>  r   r0  r   test_pcolor_datetime_axiso  s*    

.

>

rA  c               	   C   s  d} t dd| }t dd| d }t ||\}}t ||d }t \}}tt |	||| W 5 Q R X tt |	|||j
 W 5 Q R X tt( |j	|||d dd df dd W 5 Q R X tt( |j	|||d dd df dd W 5 Q R X t j|d	< tt$ |	|||d dd df  W 5 Q R X t jd
d t jj||d	k d}W 5 Q R X tt$ |	|||d dd df  W 5 Q R X dd	dg}ddg}t ||\}}t |j}tjtdd |j	|||dd W 5 Q R X d S )Nr5  r	  r   r    r   r_   r  r  r   r  invalid)maskig  r   r  ra   z.are not monotonically increasing or decreasingr/  auto)rL   r   r  r  r   r   rz   r{   r|   r  TNaNr  r  r	   r   zerosr8  r2  rm  )r  r0   r-   r  r  r  rD  r   r   r   r   test_pcolorargs  s:    ,,
((
rI  c                 C   s   |   }tdd}tdd}tjd tjdd}|j|||dd |  }|d d	 t|d  }|d d	 t|d  }|j|||d
d d S )Nr   ra   ry   rE   r    r  r  r  r_   r\   r   rL   rQ   rM   rN   randnr  diffr6   r7   r   r0   r-   r  r   r   r   r   r   test_pcolornearest  s    rN  c                 C   s   |   }dd tdD }tdd}tjd tjdd}|j|||d	d
 |  }dd tdD }|d d t|d  }|j|||dd
 d S )Nc                 S   s   g | ]}t j |d  qS )  r]  fromtimestampr   r   r   r   r     s     z+test_pcolornearestunits.<locals>.<listcomp>ra   r   ry   rE   r    r  r  r  c                 S   s    g | ]}t j |d  d qS )r   rO  rP  r   r   r   r   r     s     r_   r\   )	r   r   rL   rQ   rM   rN   rK  r  rL  rM  r   r   r   test_pcolornearestunits  s    rR  c              	   C   s   |   }tdd}tdd}tjd tjdd}|j|d d |d d |d dd df dd	 |  }|d d }|d d }tt	 |j|||dd	 W 5 Q R X d S )
Nr   ra   r   rE   ry   r  r_   r  r  )
r   rL   rQ   rM   rN   rK  r  rz   r2  r   rM  r   r   r   test_pcolordropdata  s    2rS  c                 C   s   |   }tdd}tdd}tjd tjdd}|j|||dd |  }|d d	 t|d
  }|d d	 t|d
  }|j|||dd d S )Nr   ra   r   rE   ry   r  rE  r  r_   r    rJ  rM  r   r   r   test_pcolorauto  s    rT  	canonicalc                  C   s    t  \} }|dddg d S Nr   r    ry   r   r   rm   r   r   r   r   test_canonical  s    rX  zarc_angles.pngc            
      C   sL  d} d}d}d}t dd\}}t|jD ]\}}|d d }|d }	|tj|| |dd	 |tj|| ||	|d
 ||t	
t	|	 |d  |d |t	
t	| |d  g|t	t	|	 |d  |d |t	t	| |d  g || | || | | d9 } |d9 }|d d |d d f}|d9 }q*d S )Nr    r   )r   r   ry   h  r  -   r   )r  )theta1theta2r   ra   )r   r   r  r  r!  r"  ZEllipseArcrm   rL   r   deg2radr   r<  r=  )
r  r  Zcentrer   r   r  r   r   r\  r[  r   r   r   test_arc_angles  s2    r_  Zarc_ellipsec               	   C   sN  d\} }d\}}d}t t d}|d t | }|d t | }t |}t t |t | gt |t |gg}	t |	t ||g\}}|| 7 }||7 }t }
|
j	ddd}|j
||d	d
d
ddd tj| |f|||dddd}|| |
j	ddd}|j
||d	dddd tj| |f|||dddd}|| d S )N)gRQ?gp=
ף?)r   r   rY  r   r   rE  )rb   r   yellowr   )r  r   r   r   r  r    F)angler   ra  r  r   equalr   )r  r   r   r  )rL   r^  rQ   r   r   r   rP   r   r   r   ra  r"  r]  r!  )ZxcenterZycenterr6  heightrb  rA  r0   r-   ZrthetaRr   r   e1e2r   r   r   test_arc_ellipse  sH    
    
   rh  c                  C   sn   t  \} }td}|jdddgdddg|d |jdddgdddg|d |jdddgdddg|d d S )Nrv   r   r    ry   rg  r   r   )r   r   mmarkersMarkerStylerm   r!   rn  )fixr   mr   r   r   test_marker_as_markerstyle9  s
    
rm  	markeveryc                  C   s   t ddd} t | t | d d  }t \}}|j| |ddd |j| |dd d	d
 |j| |dddd
 |j| |dddd
 |  d S )Nr   ra   r   r   rv   r	  r$   r/  mark allrn  r$   r,  mark every 10+r   r  mark every 5 starting at 10rL   r   r   r  r   r   rm   r2   r  r   r   r   test_markeveryA  s    rw  Zmarkevery_linec                  C   s   t ddd} t | t | d d  }t \}}|j| |ddd |j| |dd d	d
 |j| |dddd
 |j| |dddd
 |  d S )Nr   ra   r   r   z-or	  ro  z-drp  rq  z-srr  z-+rt  ru  rv  r  r   r   r   test_markevery_lineO  s    rx  Zmarkevery_linear_scalesr  )r  r   c            
      C   s   d dddddgddgt dd	d
dddddg} d
}tjt| | d |}d}tddd|  d	| }t|d | }t| D ]R\}}|| }|| }	t	
|||	f  t	dt|  t	j||ddd|d qd S )Nr  r   r  r  r  r   r   r_   r   r  ry   r   r   r   r  r   g?r   r   )\(?ra   r    r   markevery=%srv   rh  r   lsmsrn  )slicer@   gridspecGridSpecr  rL   r   r   r  r   r   titlestrrm   
casescolsgsdeltar0   r-   r   caser  r  r   r   r   test_markevery_linear_scales]  s.     
   r  Zmarkevery_linear_scales_zoomedc            
      C   s   d dddddgddgt dd	d
dddddg} d
}tjt| | d |}d}tddd|  d	| }t|d | }t| D ]f\}}|| }|| }	t	
|||	f  t	dt|  t	j||ddd|d t	d t	d qd S )Nr  ry  r  r  r   r   r_   r   r  ry   r   r   r   rz  r{  r   r|  ra   r    r   r}  rv   rh  r   r~  )r  g@)r  g333333?)r  r@   r  r  r  rL   r   r   r  r   r   r  r  rm   rc   rd   r  r   r   r   #test_markevery_linear_scales_zoomedv  s2     
   
r  Zmarkevery_log_scalesc            
      C   s   d dddddgddgt dd	d
dddddg} d
}tjt| | d |}d}tddd|  d	| }t|d | }t| D ]f\}}|| }|| }	t	
|||	f  t	dt|  t	d t	d t	j||ddd|d qd S )Nr  ry  r  r  r   r   r_   r   r  ry   r   r   r   rz  r{  r   r|  ra   r    r   r}  r   rv   rh  r   r~  )r  r@   r  r  r  rL   r   r   r  r   r   r  r  xscaler  rm   r  r   r   r   test_markevery_log_scales  s2     
   

r  Zmarkevery_polarc            	      C   s   d dddddgddgt dd	d
dddddg} d
}tjt| | d |}tddd	}dtj | }t| D ]V\}}|| }|| }t	j
|||f dd t	dt|  t	j||ddd|d qnd S )Nr  ry  r  r  r   r   r_   r   r  ry   r   r   r   rz  r{  r   r  r    T)polarr}  rv   rh  r   r~  )r  r@   r  r  r  rL   r   r   r  r   r   r  r  rm   )	r  r  r  rk  rA  r   r  r  r  r   r   r   test_markevery_polar  s,     
   r  Zmarker_edgesc                  C   sz   t ddd} t \}}|j| t | ddddd |j| d t | ddddd |j| d	 t | ddd
dd d S )Nr   r   ra   zy.      >@rk  )r  mewmecr   r   r    rZ  )rL   r   r   r   rm   r   r0   r   r   r   r   r   test_marker_edges  s
     r  zbar_tick_label_single.pngc                  C   sP   t  } | jddddd ddd}t  \}} t  } | jdddd|d	 d S )
Nr   r   edge0)align
tick_labelrr  rr   rZ  )r  r  r$  )r   r   barr   )r   r$  r   r   r   r   test_bar_tick_label_single  s    
r  c                  C   s&   t  \} }|ddgtjdg d S )Nr   r   r   )r   r   r  rL   r  r   r   r   r   test_nan_bar_values  s    r  c                  C   s   t  \} }|g g  d S r   )r   r   r  r   r   r   r   test_bar_ticklabel_fail  s    r  zbar_tick_label_multiple.pngc                  C   s0   t  } | jddgddgddgddgdd	 d S )
Nr         @r    r   r   rr   rZ  centerr6  r  r  )r   r   r  r  r   r   r   test_bar_tick_label_multiple  s    r  z/bar_tick_label_multiple_old_label_alignment.pngc                  C   s:   dt jd< t } | jddgddgddgdd	gdd
 d S )Nr  zytick.alignmentr   r  r    r   r   rr   rZ  r  )r@   r   r   r   r  r  r   r   r   *test_bar_tick_label_multiple_old_alignment  s
    
r  c                 C   sh   |   }ddddg}ddddg}d	d
 |D }dd
 |D }|j||dd |  }|j||dd d S )Nr    @333333@r  r  rG  ffffff
@皙@c                 S   s   g | ]}t |qS r   r   r   r   r   r   r     s     z+test_bar_decimal_center.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   r   r   r   r   r   r     s     r  r  r   r  r6   r7   r   x0y0r0   r-   r   r   r   test_bar_decimal_center  s    r  c                 C   s|   |   }ddddg}ddddg}d	d
 |D }dd
 |D }|j||ddddgdd |  }|j||ddddgdd d S )Nr   r  r  r  r  rG  r  r  c                 S   s   g | ]}t |qS r   r   r   r   r   r   r     s     z,test_barh_decimal_center.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   r   r   r   r   r   r   	  s     r   r   r  rd  r  r   barhr  r   r   r   test_barh_decimal_center  s    r  c                 C   sj   ddddg}ddddg}d	d
ddg}dd |D }|   }|j|||dd |  }|j|||dd d S )Nr   r  r  r  r  rG  r  r  r  333333?r   r    c                 S   s   g | ]}t |qS r   r   r   r   r   r   r   r     s     z*test_bar_decimal_width.<locals>.<listcomp>r  r6  r  r  )r6   r7   r0   r-   Zw0r  r   r   r   r   test_bar_decimal_width  s    r  c                 C   sj   ddddg}ddddg}d	d
ddg}dd |D }|   }|j|||dd |  }|j|||dd d S )Nr   r  r  r  r  rG  r  r  r  r  r   r    c                 S   s   g | ]}t |qS r   r   r  r   r   r   r   $  s     z,test_barh_decimal_height.<locals>.<listcomp>r  r  r  )r6   r7   r0   r-   Zh0r  r   r   r   r   test_barh_decimal_height  s    r  c                  C   sR   t  } | jddgddgdddd}|D ]$}| dks<t| d	ks(tq(d S )
Nr   r    r   r   r   rk  r  r   r   r   r   r   r   r   r   r   r   r   r   r  get_facecolorr   get_edgecolorr   rectsrectr   r   r   test_bar_color_none_alpha-  s
    r  c                  C   sR   t  } | jddgddgdddd}|D ]$}| dks<t| d	ks(tq(d S )
Nr   r    r   r   rk  r   r  r  r  r  r  r   r   r   test_bar_edgecolor_none_alpha5  s
    r  zbarh_tick_label.pngc                  C   s0   t  } | jddgddgddgddgdd	 d S )
Nr   r  r    r   r   rr   rZ  r  )rd  r  r  )r   r   r  r  r   r   r   test_barh_tick_label=  s    r  c                  C   s^  t  \} }|jtddddtjddd |jtddddtjddtjddd t  \} }|jtddddtjddd	 |jtddddtjddtjddd
 t  \} }|jtdddtdddgtddgtjddd	 |jtdddtdddgtddgdd dD d	 |tdddtjddfgd dS )z>Smoketest that bar can handle width and height in delta units.  r   r   ry   hoursr6  r    )xerrr6  )rd  )rd  yerrr   c                 S   s   g | ]}t j|d qS )r  r,  r   r+  r   r   r   r   Y  s     z&test_bar_timedelta.<locals>.<listcomp>r   )ra   r  N)	r   r   r  r]  r-  r  rL   r   broken_barhr   r   r   r   test_bar_timedeltaE  s<    







r  c                 C   sB   t jdd}| jdd| jdddj}t  tj||d d S )Nr   r    z1/1/2000r   )years)periodsfreq	positions)	rL   rM   r   
date_rangeZ
DateOffsetyearr   r   boxplot)pdr$  r  r   r   r   test_boxplot_dates_pandas_  s     
r  c                 C   s   ddl m}m} t }|d}tdddg}t|dk rZ||d tj	dd	  q2t
d
}t
||\}}t|d t|d f}	t
|	d |	d  }
|	|
_z"|  ||||
}|j  W 5 |  X d S )Nr   )register_matplotlib_converters deregister_matplotlib_converterso   i  r   rv  r_   x   )secondsr   )Zpandas.plottingr  r  r   r   r   r]  r  appendr-  rL   rQ   r  r8  r  canvasr   )r  r  r  r   r   timesZy_valsZ	time_axisZy_axisr8  Zz_dataimr   r   r   test_pcolor_regressionh  s     

r  c                 C   s   |  dddgdddgdddgdddgd}| |dddg |d	< |d	d
g d	g }|j}|d
 }|d
 }t \}}|j||ddd |j||ddd d S )Nr  r   r    ry   )r  monthrc  rb  r  r  rc  daterb  ra   r  r  oranger   r   )		DataFrameZto_datetimegroupbysumindexr   r   r  rm   )r  dfZmonthlydatesZforecastbaseliner   r   r   r   r   test_bar_pandas  s    r  c                 C   sJ   | j dddgdddgddd	d
gd}t \}}|j|jd|jd d S )Nr   r   r  r   r  r  )r0   r6  r   r    ry   r  r  )r  r   r   r  r0   r6  r  r  r   r   r   r   r   test_bar_pandas_indexed  s
    r  c                 C   sh   |   }|  }ddg}ddg}ddg}tdD ]"}|j|| || d|| d q0|j|||d d S )	Nr   r    ry   r0   rv   r  )r   r  )r  )r   r   r  )r6   r7   rT   rU   r0   r-   hatchesr   r   r   r   test_bar_hatches  s     r  c                 C   sF   | j ddgdd}t|| t|j| t| t|j d S )Nr   r    float64r  )Seriesr   rm   r  )r  r0   r   r   r   test_pandas_minimal_plot  s
    
r  Zhist_logc                  C   sH   t dddd } t d|  d|  g}t \}}|j|ddd d S )Nr   r   r  ry   FT)ra  r   )rL   r   concatenater   r   hist)Zdata0r$  r   r   r   r   r   test_hist_log  s    r  c                 C   s   |  dd}| dd}tdddgD ]\}}|d|f d |d|f jdd|d	 |d|f jdd|d	 |d|f d |d d |f D ]}|jddd
|d qq&d S )Nr    ry   r  step
stepfilledr   r   r   histtypeT)r   r  )r   r  r  r  )r6   r7   rs   rt   r   r  r   r   r   r   test_hist_log_2  s    r  c                  C   s   t d\} }|d jdgddggddd |d d |d jdddgddd |d d | j  |d  |d  kstd S )Nr    r   r   
barstackedr  r   )r   r   r  r  r  r   rp   r   r   r  r   r   r   test_hist_log_barstacked  s    
r  zhist_bar_empty.pngc                  C   s   t  } | jg dd d S )Nr  r  r   r   r  r  r   r   r   test_hist_bar_empty  s    r  zhist_step_empty.pngc                  C   s   t  } | jg dd d S )Nr  r  r  r  r   r   r   test_hist_step_empty  s    r   zhist_step_filled.pngc            
      C   s   t jd t jdd} d}ddiddidd ii gd }d	gd
 dgd
  }tjdd
d\}}t|||jD ]B\}}}|j| |f|dd| |	d||f  |j
dd qn|d j}	tdd |	D std S )Nr   r  ry   ra   ra  TFr    r  r   r  )nrowsncolsr  stackedz%s/%sr  r:   r   r   c                 s   s   | ]}|  | kV  qd S r   )r  r  )r   r   r   r   r   	<genexpr>  s     z(test_hist_step_filled.<locals>.<genexpr>)rL   rM   rN   rK  r   r   r;  r  r  	set_titler=  r   allr   )
r0   Zn_binsr?  typesr   r  Zkg_typer   r   r   r   r   test_hist_step_filled  s    
r  zhist_density.pngc                  C   s6   t jd t jd} t \}}|j| dd d S )NrE   r  Tdensity)rL   rM   rN   r  r   r   r  r$  r   r   r   r   r   test_hist_density  s    r  c                  C   s^   t jd} | d}ddddddg}tj||d	d
\}}}t j||d	d
\}}t|| d S )Ni  r   r   r_   r  r   r   r   T)r  r  )rL   rM   ZRandomStaterK  r   r  Z	histogramr   )rngr+  r  Zmpl_heightsrD  Z
np_heightsr   r   r   test_hist_unequal_bins_density  s    
r  c                  C   sd   t  dddt  dddgt  dddt  dddgg} t \}}|j| dd |j| dd d S )N  r   r    T)r  F)r]  r   r   r  r  r   r   r   test_hist_datetime_datasets  s    r  bins_preprocessc                 C   s   | S r   r   r  r   r   r   <lambda>      r  c                 C   s   t | dS )Nrx  )rL   asarrayastyper  r   r   r   r    r  r`  zdatetime.datetimeznp.datetime64c              	   C   s   t  dddt  dddt  dddt  dddgt  dddt  dddt  dddt  dddgg}t  dddt  dddt  dddg}t \}}|j|| |dd	\}}}tj|tj	| |j|| |d
d	\}}}tj|tj	| d S )Ni  r   r      r    ry      T)r  r  F)
r]  r   r   r  rL   r   r   r   r  r`  )r  r$  Z
date_edgesr   r   rD  r  r   r   r    test_hist_datetime_datasets_bins  s"      r  zdata, expected_number_of_histsr   c                 C   sH   t | \}}}t|}|jdkr2d|ksDtn|jd |ksDtd S )Nr   r   )r   r  rL   r  ndimr   r8  )r$  Zexpected_number_of_histsZhistsrD  r   r   r   test_hist_with_empty_input.  s
    

r  zhisttype, zorderr  r  r  c                 C   sH   t   }|jddg| d |js(t|jD ]}| |ks.tq.d S )Nr   r    r  )r   r   r   r  r   r   
get_zorder)r  r  r   r   r   r   r   test_hist_zorder<  s
    

r!  c                 C   s  dd l m} tddddddddg}td	d
dddddddg	}| dd }|d j||d d |d j||d dd |d || |d j||dd |d || |d   |d j||dd |d   ddd}|dd }|d j	|t
||d fddi| |d j	t
|d ||fddi| |d j	|t
||d fddi| |d |j|d |d gd|d gf| |d |j|d |d gd|d gf| |d dd  |d j	t
|d ||fddi| |d |jd|d g|d |d gf| |d |jd|d g|d |d gf| |d dd  |d j	|t
||d fddi| |d |j|d |d gd|d gf| |d |j|d |d gd|d gf| |d   |d j	t
|d ||fddi| |d |jd|d g|d |d gf| |d |jd|d g|d |d gf| |d   d S ) Nr   r     rW   %   0   r  r   r   r   r  r  r  g      @      @g       @      "@ry   r    r  r   r<   )r  r>   r=   r   miterbuttsolid_joinstylesolid_capstyler_   	drawstyle
steps-post)Zmatplotlib.lineslinesrL   r   r   flattenstairsZsemilogyr  rm   r  Zadd_lineLine2Dr=  r<  )r6   r7   Zmlinesr-   r0   	test_axesr   ref_axesr   r   r   test_stairsH  s@    
(((..(..(..(..r5  c                 C   s  dddddgddddddg }}d}|  dd }|d j||dd	 |d j||d
dd |d j|||dd |d j|||d
dd | dd }|d j|t||d ddd |d dd  |d j|t||d ddd |d dd  |d j|t||d t	t
|d | ddd |d |d  |d j|t||d t	t
|d | ddd |d |d  d S )Nr   r    ry   r   r   r   r4  T)ra  r<   )r>   ra  )r  ra  )r  r>   ra  r_   post)r  r   )r   r0  r1  r  rL   r  r=  r  r<  rf   r  )r6   r7   r  r  bsr3  r4  r   r   r   test_stairs_fillt  s4     ""    r8  c                 C   s  d}|   }|dddg}|| |dddg |jtdd d |dddgtdd  |dddg |d td t| d tddstt| d tdst|jdd	 | j	dkst|  }|jdddgdd	}|| d S )
N)r   r   r   r    ry   r   edgesr   r4  r'  )
r   r1  r=  set_datarL   rQ   allcloseget_datar   r  )r6   r7   rd   test_axr  ref_axr   r   r   test_stairs_update  s     
 r@  c                 C   sb   |   }|jdddgd d |  }ddd}|jtdddddgfd	d
i| |dd  d S )Nr   r  rv  r'  r(  r)  r*  r   r-  r.  r   )r   r1  rm   r   r=  )r6   r7   r>  r?  r   r   r   r   test_stairs_baseline_0  s    
$rA  c                  C   s>   t   } | g dg |  dks*t|  dks:td S )N*   )'   rZ  r~  )r   r   r   r1  ro   r   rp   r  r   r   r   test_stairs_empty  s    rD  c                	   C   s6   t jtdd tddgdtjdg W 5 Q R X d S )NNan values in "edges"r/  r   r    r   )rz   r{   r  r   r1  rL   r  r   r   r   r   test_stairs_invalid_nan  s    rF  c                	   C   s2   t jtdd tddgddg W 5 Q R X d S )NSize mismatchr/  r   r    r   )rz   r{   r  r   r1  r   r   r   r   test_stairs_invalid_mismatch  s    rH  c               	   C   sH   t ddgdddg} tjtdd | jdtjdgd W 5 Q R X d S )Nr   r    r   rE  r/  r9  )r   r1  rz   r{   r  r;  rL   r  r  r   r   r   test_stairs_invalid_update  s    rJ  c               	   C   sF   t ddgdddg} tjtdd | jtdd W 5 Q R X d S )Nr   r    r   rG  r/  r   r9  )r   r1  rz   r{   r  r;  rL   rQ   rI  r   r   r   test_stairs_invalid_update2  s    rK  ztest_stairs_options.pngc               
   C   s  t dddddgt ddddgt } }| }t j|d< t \}}|j|d | dddd	 |j|| d d d
dddd |j|| ddddd |j|d | d d dddddd |j|d d d d d | d d
ddd dd |j|d d d d d | dddddd |j|d d d d d | d t 	dd t
|d!ddd"dd# |j|d d d d d d d$ | d d d d%ddd&d'd(d) |jd*d+ d S ),Nr   r    ry   r   r   r   TA)r   ra  r$   rY  r<   B)r   ra  r>   r$   r  ri  C)r   r  r   r$   r   D)r  r   r  r>   r$   r_      E)r   r  r   r  r$   r"     r!  F)r  r   r  r   r$   r   rS     r   G)r  r   r  r   r$   ra  r  r  r5  //H)r   r  r   r  r  r$   r   r'   )rL   r   r  r  copyr  r   r   r1  r   r  r2   )r0   r-   Zynr   r   r   r   r   test_stairs_options  sH    .
  &   .    4  rY  ztest_stairs_datetime.pngc               	   C   sF   t jdd\} }|tdttdtd t jdd d S )NT)constrained_layout$   z
2001-12-27z
2002-02-02r   )rotation)r   r   r1  rL   rQ   rx  Zxticks)fr   r   r   r   test_stairs_datetime  s    r^  c                  C   sH   t ddd} t ddd}t | t |d d t jf  }| ||fS )Nr   r      r  )rL   r   r   r   r9  )r0   r-   r?  r   r   r   contour_dat  s    "r`  Zcontour_hatchingc               
   C   sD   t  \} }}t \}}|j| ||dddddgtdddd	 d S )
Nrv  r  \rV  rh  Zgrayre   r   )r  r]   extendr  )r`  r   r   contourfr   )r0   r-   r?  r   r   r   r   r   test_contour_hatching  s     rd  Zcontour_colorbarc            	   
   C   s   dt jd< t \} }}t  \}}|j| ||tdddt dddd	d
}|j| ||tddddgddd}|j| ||tddddgdd}|j	||d}|
| |j
|dd d S )NFr  gg7A`?r   ZRdBug333333r  re   )levelsr]   r  r  rb  gg^I+r-   rw   r    )re  r$  
linestylesr  rG  r#   )re  r$  r  r  )Zerase)r   r   r`  r   rc  rL   rQ   r   r  r3   Z	add_lines)	r0   r-   r?  r   r   csZcs1Zcs2r8   r   r   r   test_contour_colorbar  s*    

rh  hist2dc                  C   s   dt jd< tjd tjdd d } tjdd }t  \}}|j| |ddd	 | |d
}t  \}}|jddd|dd d S )NFr  r   r   r    r   ra   Tr  
rasterizedr   r0   r-   )r  r$  rk  )r   r   rL   rM   rN   rK  r   ri  )r0   r-   r   r   r$  r   r   r   test_hist2d  s    

rl  Zhist2d_transposec                  C   sX   dt jd< tjd tdgd } tjdd }t  \}}|j| |ddd	 d S )
NFr  r   r   r   r    ra   Trj  )	r   r   rL   rM   rN   r   rK  r   ri  r  r   r   r   test_hist2d_transpose,  s    
rm  c                  C   s>   t jd\} }t  }|tfD ]}|j| |dd q$d S )Nr  Tr  )rL   rM   r   r   r   ri  )r0   r-   r   objr   r   r   test_hist2d_density:  s    ro  c                "   @   s  e Zd Zedgddddd Zedgddd	d
 Zedgddgddd Zedgddd Zdd Z	dd Z
ejddd Z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% Zedgdd&d' Zd(d)gd*fd+d,d-d.d/d0d1gd2fd3d4gd*fd4gd5 d*fd6gd7 d2fd6gd5 d2fd6gd8 d9fd:d;d<d=gd2fd:d>d<d?gd2fd:d6d<d?gd*fd@dAdAggd2fd@dAdAggd7 d9fd@dAdAggd5 d2fd@dAdAggd8 d9fd@dAdAd6ggd2fd@dAdAd6ggd7 d9fd@dAdAd6ggd5 d2fd@dAdAd6ggd8 d9fd@dAdAd6ggd7 d@dAdAgg d2fd@dAdAd6gd>dBgd9fd@dAdAd6gd>dBd?gd2fd@dAdAd6gd>dBd?dAd@dAggd9fd@dAdAd6gd>d4gd*fd@dAdAd6gd>dBd4gd*fd@dAdAd6gd>dBd?d4gd*fgZejdCedDdE ZejdedgddFdG ZdHdI Zd2S )JTestScatterr!   r~   Tr  c                 C   s   t ddddgt ddddgdddd	gd
dddgddddgd}t \}}|j|d d |d d |d |d d |j|d d |d d |d |d d |jdddd|d d S )Nry   r   r    r  r   rk  r-   rZ  limer  r         0.50.60.7z0.8)r0   r-   r#   r,  c2r0   r   r#   r,  r#   r,  rw  )r#   r,  r$  )rL   r   r   r   r!   )selfr$  r   r   r   r   r   test_scatter_plotB  s     
 

**zTestScatter.test_scatter_plotzscatter_marker.pngr  c           
   
   C   s2  t jdd\}\}}}|jddddgddddgddd	d
gddddgdddd	gdd |jddddgddddgddd	d
gddddgdddd	gtjdddd d\}}|| tj }tddtj d}tt	|| | t
|| | g}	|jddddgddddgddd	d
gddddgdddd	g|	d d S )Nry   r  r   r    r  r   r   r   r   r-   rZ  rq  rO  r  r  r   r  rk  gr,  )r#   r,  r  rZ   rv   r&   	fillstyler#  r   r  )r   r   r!   ri  rj  rL   r   r   Zcolumn_stackr   r   )
ry  r   r   r   r   rxZryarearA  r  r   r   r   test_scatter_markerM  s2    








zTestScatter.test_scatter_markerZ
scatter_2DrB   )r  rD   c                 C   sP   t d}t d}t ||\}}|| }t \}}|j|||ddd d S )Nry   r    r  face)r#   r,  r  )rL   rQ   r  r   r   r!   )ry  r0   r-   r?  r   r   r   r   r   test_scatter_2Df  s    

zTestScatter.test_scatter_2DrC   c           
      C   s   t ddddg}t ddddg}t d	d
 |D }t dd
 |D }ddddg}ddddg}| }	|	j||||d | }	|	j||||d d S )Nr   r  r  r  r  rG  r  r  c                 S   s   g | ]}t |qS r   r   r  r   r   r   r   s  s     z4TestScatter.test_scatter_decimal.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   r   r  r   r   r   r   t  s     rk  r-   rZ  rq  r  r   rr  rs  rx  )rL   r   r   r!   )
ry  r6   r7   r  r  r0   r-   r#   r,  r   r   r   r   test_scatter_decimalo  s    z TestScatter.test_scatter_decimalc              	   C   sn   t t" tjddgddgddgd W 5 Q R X t t( tjdddgdddgdddgd W 5 Q R X d S )Nr   r    r   r   rl  ry   )rz   r{   r  r   r!   ry  r   r   r   test_scatter_color~  s    &zTestScatter.test_scatter_colorc                 C   s   t jdddgdddgdddgtjdd	d
dddgd}| jdksHtt| ddddgddddgddddgg t|	 dddg d S )Nr   r   r    ry   0.10.3rt  rv   r   r~  r  r  ?r#   rZ   r  )r   r   r   r   r   )
r   r!   ri  rj  get_facecolorsr8  r   r   get_edgecolorsget_linewidthsry  collr   r   r   test_scatter_unfilled  s    

z!TestScatter.test_scatter_unfilledr	  c                 C   s   t jdddgdddgdddgdd	d
dgd}t| |  t| ddddgddddgddddgg t| d	d
dg d S )Nr   r   r    ry   r  r  rt  r0   r  r  r  r  r   r   r   )r   r!   r   r  r  r  r  r   r   r   test_scatter_unfillable  s    

z#TestScatter.test_scatter_unfillablec              	   C   s   t d}tjtdd t|||dd   W 5 Q R X tjtdd$ t|dd  |dd  | W 5 Q R X tjtdd t||d W 5 Q R X d S )Nr   zsame size as x and yr/  r   zfloat array-likerI  )rL   rQ   rz   r{   r  r   r!   )ry  r0   r   r   r   test_scatter_size_arg_size  s    
 (z&TestScatter.test_scatter_size_arg_sizec                 C   sp   t jdddgdtjtjgdd}t| ds4tt jddddgdtjtjdgdd}t| dsltd S )Nr   r    ry   r|  r   r   r   r   r   r   )r   r!   rL   r  r  
same_colorr  r   r  r   r   r   test_scatter_edgecolor_RGB  s    z&TestScatter.test_scatter_edgecolor_RGBc                 C   s   |  }tdd}|dd |jtdtddtjdtjgddddg|dd	 |  }tdd}|jd
dgd
dgddgddg|d |jddgddgddgdd d S )Nr  r  r  r   r   r    ry   Tr#   r,  r]   Zplotnonfiniter   r#   r,  r]   )r,  r   r   r   r   Zset_badr!   r   rL   r  ry  r6   r7   r   r]   r   r   r   test_scatter_invalid_color  s     
 $z&TestScatter.test_scatter_invalid_colorc                 C   s   |  }tdd}|dd |jtdtddtjdtjgddddg|dd	 |  }|jd
dgd
dgddgddg|d d S )Nr  r  r  r   r   r    ry   Fr  r   r  r  r  r   r   r   test_scatter_no_invalid_color  s     
 z)TestScatter.test_scatter_no_invalid_colorc              	   C   sj   dddg}|  }|j|||ddd |  }tjtdd$ |j|||td	d
ddd W 5 Q R X dS )r  r   r    ry   r   r   )r#   r  r  r  r/  r  ra   )r#   r  r  r  N)r   r!   rz   r2  r   r  r  ry  r6   r7   r0   r   r   r   r   test_scatter_norm_vminvmax  s    
 z&TestScatter.test_scatter_norm_vminvmaxc                 C   s:   |  }|jdddd |  }|jdgdgdgd d S )Nr   r#   )r   r!   )ry  r6   r7   r   r   r   r   test_scatter_single_point  s    z%TestScatter.test_scatter_single_pointc                 C   s^   t d}| }|j||dd|ddd | }|j|dd||ddd d S )Nra   r    r   r  )rL   rQ   r   r!   rh   r  r   r   r   test_scatter_different_shapes  s
    
 z)TestScatter.test_scatter_different_shapes)rt  NZrgby
conversion)rY  N)r   N)NNrk  r}  rZ  r   N)jauner  r  r   r   ry   r   r8  rt  z0.4ru  rv  rY  C5r   r   z0.0zc_case, re_keyc              	   C   sr   dd }d}ddd}|d kr8t jjj|di ||d n6tjt|| d	 t jjj|di ||d W 5 Q R X d S )
Nc                   S   s   dS Nr   r   r   r   r   r   get_next_color	  s    z2TestScatter.test_scatter_c.<locals>.get_next_colorr   z!^'c' argument has [0-9]+ elementsz^'c' argument must be a color)r8  r  r  )r#   r  r?  xsizeget_next_color_funcr/  )r   axesAxes_parse_scatter_color_argsrz   r{   r  )ry  Zc_caseZre_keyr  r  REGEXPr   r   r   test_scatter_c	  s*          zTestScatter.test_scatter_cc                 C   s   dddgg}ddddgg}|  }|jtdtd|d |jtdd td|d |  }|jtdtd|d |jtdd td|d d S )	Nr   r   皙?ry   rl  r   r    r  )r   r!   rL   rf   r   )ry  r6   r7   ZrgbZrgbarU   rT   r   r   r   test_scatter_single_color_c(	  s    z'TestScatter.test_scatter_single_color_cc              	   C   s   t d}t \}}tdD ]@}|j|t d|d| dd|d d}| |d kstq|j|t dddddtddd
d}t	| tddt
jd	 f d S )Nr   ry   rN  r0   r   r   )r#   rZ   r,  r  C3lines.linewidth)N)rL   rQ   r   r   r   r!   rH   r  r   r   r   r   )ry  r0   r   r   r   Zpcr   r   r   test_scatter_linewidths8	  s    
z#TestScatter.test_scatter_linewidths)__name__
__module____qualname__r   rz  r  r  r   r  r  r  rz   markr   r  r  r  r  r  r  r  r  Zparams_test_scatter_cparametrizer  r  r  r   r   r   r   rp  A  sz   









		









 +


rp  )r  c                K   s   | ||d k	r|ni |fS r   r   )r#   r  r  r?  r   r   r   _paramsG	  s    r  _resultz	c, colorszparams, expected_resultrZ  )r#   r$  rk  r  rl  r}  r   c                 C   s@   dd }t jjj| d|i\}}}||jks0tt||j d S )Nc                   S   s   dS r  r   r   r   r   r   r  [	  s    z5test_parse_scatter_color_args.<locals>.get_next_colorr  )r   r  r  r  r#   r   r   r$  )paramsZexpected_resultr  r#   r$  Z_edgecolorsr   r   r   test_parse_scatter_color_argsL	  s    r  zkwargs, expected_edgecolorsr  r  r   )r   r  )r#   r   r  )r   r   c                 C   sN   dd }|  dd }|  dd }tjjj||| d|d\}}}||ksJtd S )Nc                   S   s   dS r  r   r   r   r   r   r  v	  s    z@test_parse_scatter_color_args_edgecolors.<locals>.get_next_colorr#   r  r    )r  r  )popr   r  r  r  r   )r?  Zexpected_edgecolorsr  r#   r  rD  Zresult_edgecolorsr   r   r   (test_parse_scatter_color_args_edgecolorsg	  s        r  c               	   C   sX   dd } t jtdd8 tdddgddd	gg}tjjj|d i d
| d W 5 Q R X d S )Nc                   S   s   dS r  r   r   r   r   r   r  	  s    z;test_parse_scatter_color_args_error.<locals>.get_next_colorz&RGBA values should be within 0-1 ranger/  r   r   r  r  gffffff?r    )r?  r  r  )	rz   r{   r  rL   r   r   r  r  r  )r  r#   r   r   r   #test_parse_scatter_color_args_error	  s        r  c               	      s  ddl m  G  fddd} |  }|  }tj|_|  }tjddddg|d}t| ks^tt	j
tdd tj|d}W 5 Q R X ||kstt  t	j
tdd tj|d}W 5 Q R X t|tjj kstt	j
tdd tj|d}W 5 Q R X ||kstt	j
tdd tj|d}W 5 Q R X ||ks@t| dksRtt	j
tdd tj|d}W 5 Q R X ||kstt  tjd	|d}t|tjj kstt  d S )
Nr   	PolarAxesc                       s    e Zd Zdd Z fddZdS )z#test_as_mpl_axes_api.<locals>.Polarc                 S   s
   d| _ d S )Nr   theta_offsetr  r   r   r   __init__	  s    z,test_as_mpl_axes_api.<locals>.Polar.__init__c                    s    d| j ifS )Nr  r  r  r  r   r   _as_mpl_axes	  s    z0test_as_mpl_axes_api.<locals>.Polar._as_mpl_axesN)r  r  r  r  r  r   r  r   r   Polar	  s   r  r   r  z5Calling gca\(\) with keyword arguments was deprecatedr/  y   )Zmatplotlib.projections.polarr  rL   r   r  r   r  typer   rz   r2  r   r   r   r   	_subplotssubplot_class_factoryZget_theta_offsetr   )r  ZprjZprj2Zprj3r   Z
ax_via_gcar   r  r   test_as_mpl_axes_api	  sX    r  c                  C   sZ   t  \} }t  \}}t | |t  ks2t| t  ksBtt |  t | d S r   )r   r   Zscar   r   Zgcfr   )fig1r   fig2r   r   r   r   test_pyplot_axes	  s    

r  Z
log_scalesc                  C   sL   t  \} }|ttdd |jddd |  |jddd d S )Nr   r   r         @r0  r&  )	r   r   rm   rL   r   r   r  r  r   r   r   r   r   test_log_scales	  s
    r  c                  C   sR   t  \} }|jddd |jtd | |   krHdksNn t	d S )Nr   )r  r  r   r   ra   )
r   r   rn   rk   r   r   ZMultipleLocatorro   rp   r   rC  r   r   r   test_log_scales_no_data	  s    r  c               	   C   sp   t  \} }|d tjtdd |dd W 5 Q R X |d tjtdd |dd W 5 Q R X d S )Nr   zAttempted to set non-positiver/  r_   ra   )	r   r   r   rz   r2  rm  r<  r  r=  r   r   r   r   test_log_scales_invalid	  s    

r  Zstackplot_test_imagec                  C   s   t  } tddd}d| }d| d }d| d }| ddd}||||| |d |d	 ||||d
}t  \} }|jdddd|d |d |d	 d S )Nr   ra   r   r   r   r  r    r   ra   )r   F   )r0   r  r   y3r0   r  r   r  rs  )	r   r   rL   r   r   	stackplotr<  r=  r   )r   r0   r  r   r  r   r$  r   r   r   test_stackplot	  s    


r  Zstackplot_test_baselinec                  C   s   t jd dd } | dd}d|dd d f< tdd\}}|d jtd|jd	d
 |d jtd|jdd
 |d jtd|jdd
 |d jtd|jdd
 d S )Nr   c                 S   s   t || f}t| D ]}tdD ]t}ddt j   }dt j  d }ddt j   }|d d |f  |t t || | | d   7  < q"q|S )Nr   r   r   r    r   ra   )rL   rH  r   rM   exprQ   )r  rl  rr   r   jr0   r-   r?  r   r   r   layers
  s    >z'test_stackplot_baseline.<locals>.layersry   r   r  r    r  Zzeror'  r1  symr   r   Zwiggler  Zweighted_wiggle)rL   rM   rN   r   r   r  r   rF  )r  r/  r   r  r   r   r   test_stackplot_baseline 
  s    

r  c                 C   s   | S r   r   )r,  r   r   r   r  
  r  c                 C   s   t jd tjjt jjddddf| }t \}}|	ddrN|
d n
|d |	d	d
sttjd tjd< |j||f| d S )N  r  r   )r#  r   )ZmeansigmasizevertTr   patch_artistFr  boxplot.boxprops.linewidth)rL   rM   rN   r   ZcbookZboxplot_statsZ	lognormalr   r   getr  r   r   Zbxp)stats_kwargstransform_stats
bxp_kwargsZlogstatsr   r   r   r   r   _bxp_test_helper
  s    
r  zbxp_baseline.pngr  )rP  r   c                   C   s
   t   d S r   r  r   r   r   r   test_bxp_baseline+
  s    r  zbxp_rangewhis.pngc                   C   s   t tddgdd d S )Nr   r   Zwhisr  r  r  r   r   r   r   test_bxp_rangewhis2
  s    r  zbxp_percentilewhis.pngc                   C   s   t tddgdd d S )Nr   _   r  r  r  r   r   r   r   test_bxp_percentilewhis9
  s    r  zbxp_with_xlabels.pngc                  C   s   dd } t | d d S )Nc                 S   s$   t | tdD ]\}}||d< q| S NABCDr$   r;  r  statsr,  r$   r   r   r   r   D
  s    
z(test_bxp_with_xlabels.<locals>.transform)r  r  r   r   r   r   test_bxp_with_xlabels@
  s    r  zbxp_horizontal.pngr   )r  rP  r   r   c                   C   s   t tddd d S )NFr  r  r  r   r   r   r   test_bxp_horizontalL
  s    r  zbxp_with_ylabels.png)rP  r   r   c                  C   s   dd } t | tddd d S )Nc                 S   s$   t | tdD ]\}}||d< q| S r  r  r  r   r   r   r   Z
  s    
z(test_bxp_with_ylabels.<locals>.transformFr  r  r  r  r  r   r   r   test_bxp_with_ylabelsU
  s    r  zbxp_patchartist.png)r  rP  r   c                   C   s   t tddd d S )NT)r  r  r  r   r   r   r   test_bxp_patchartistb
  s    r  zbxp_custompatchartist.pngr   c                   C   s    t tdtdddddd d S )NTra  r   :)r   r   r  )r  boxpropsr  r  r   r   r   r   test_bxp_custompatchartistj
  s    r  zbxp_customoutlier.pngc                   C   s   t ttdddddd d S )Nr   r/  r}  rx   rZ   mfc)Z
flierpropsr  r  r   r   r   r   test_bxp_customoutliert
  s    r  zbxp_withmean_custompoint.pngc                   C   s    t tdtdddddd d S )NTr   r/  r   r  )	showmeansZ	meanpropsr  r  r   r   r   r   test_bxp_showcustommean}
  s    r  zbxp_custombox.pngc                   C   s   t ttdddddd d S )Nri  rZ  ry   rx   r   r   )r   r  r  r   r   r   r   test_bxp_custombox
  s    r  zbxp_custommedian.pngc                   C   s   t ttdddddd d S )Nri  rZ  ry   r  )Zmedianpropsr  r  r   r   r   r   test_bxp_custommedian
  s    r	  zbxp_customcap.pngc                   C   s   t ttdddddd d S )Nri  r}  ry   r  )Zcappropsr  r  r   r   r   r   test_bxp_customcap
  s    r
  zbxp_customwhisker.pngc                   C   s   t ttdddddd d S )Nrh  rl  ry   r  )Zwhiskerpropsr  r  r   r   r   r   test_bxp_customwhisker
  s    r  zbxp_withnotch.pngc                   C   s   t tddd d S )NT)Zshownotchesr  r  r   r   r   r   test_bxp_shownotches
  s    r  zbxp_nocaps.pngc                   C   s   t tddd d S )NF)Zshowcapsr  r  r   r   r   r   test_bxp_nocaps
  s    r  zbxp_nobox.pngc                   C   s   t tddd d S )NF)Zshowboxr  r  r   r   r   r   test_bxp_nobox
  s    r  zbxp_no_flier_stats.pngc                  C   s   dd } t | tddd d S )Nc                 S   s   | D ]}| dd  q| S )Nfliers)r  )r  r,  r   r   r   r   
  s    z*test_bxp_no_flier_stats.<locals>.transformF)Z
showfliersr  r  r  r   r   r   test_bxp_no_flier_stats
  s    r  zbxp_withmean_point.pngc                   C   s   t tdddd d S )NTFr  Zmeanliner  r  r   r   r   r   test_bxp_showmean
  s    r  zbxp_withmean_line.pngc                   C   s   t tdddd d S )NTr  r  r  r   r   r   r   test_bxp_showmeanasline
  s    r  zbxp_scalarwidth.pngc                   C   s   t tddd d S )Nr  widthsr  r  r   r   r   r   test_bxp_scalarwidth
  s    r  zbxp_customwidths.pngc                   C   s   t tddddgdd d S )Nr   r  g?g333333?r  r  r  r   r   r   r   test_bxp_customwidths
  s    r  zbxp_custompositions.pngc                   C   s   t tddddgdd d S )Nr   r   r  rv  r  r  r  r   r   r   r   test_bxp_custompositions
  s    r  c                	   C   s,   t t ttdgdd W 5 Q R X d S )Nr   r  r  rz   r{   r  r  r  r   r   r   r   test_bxp_bad_widths
  s    r  c                	   C   s.   t t ttddgdd W 5 Q R X d S )Nr    ry   r  r  r  r   r   r   r   test_bxp_bad_positions
  s    r  r  g{Gz?)r   r   c                  C   s   t jd t ddd} t d| dg} t \}}|j| | gddd	 |d
 d| | gi}t \}}|jddd|d |d
 d S )Nr  ru  rv     rT  '  r   	bootstrapnotchr`  r   r0   )r   r!  r$  	rL   rM   rN   r   hstackr   r   r  r=  )r0   r   r   r$  r   r   r   test_boxplot  s    
r%  zboxplot_sym2.pngc                  C   s~   t jd t ddd} t d| dg} tdd\}\}}|j| | gd	d
d |d |j| | gd	dd |d d S )Nr  ru  rv  r  r  rT  r   r    r  ^)r   r  r"  r}  r#  )r0   r   r   r   r   r   r   test_boxplot_sym2  s    
r'  zboxplot_sym.pngc                  C   sJ   t ddd} t d| dg} t \}}|j| | gdd |d d S )	Nru  rv  r  r  rT  r  r  r"  )rL   r   r$  r   r   r  r=  r  r   r   r   test_boxplot_sym'  s
    r)  z$boxplot_autorange_false_whiskers.pngz#boxplot_autorange_true_whiskers.pngc                  C   s   t jd t d} t d| dg} t \}}|j| | gddd |d t \}}|j| | gddd	d
 |d d S )Nr  r  r   r    r  r   r  )r  r   T)r   r!  Z	autorange)	rL   rM   rN   rf   r$  r   r   r  r=  )r0   r  r   r  r   r   r   r   test_boxplot_autorange_whiskers4  s    

r*  c              	   C   sF   t ddd}t d|dg}t| | ||g W 5 Q R X | S )Nru  rv  r  r  rT  )rL   r   r$  r@   r   r  )r   rc_dictr0   r   r   r   _rc_test_bxp_helperG  s
    r,  Zboxplot_rc_parameters)rP  r  r   r   c                  C   s   t jd td\} }dddgdddd	ddd
dddd
ddd
ddd
d}dddgdd}ddddddddd
dddd}|||g}t||D ]\}}t|| qtjj	dd |d 
 D kstd S )Nr  ry   Tr   r  r  rZ  rv   r}  ri  r   rk  r#   r  )zboxplot.notchboxplot.whiskerszboxplot.bootstrapzboxplot.flierprops.colorboxplot.flierprops.markerz"boxplot.flierprops.markerfacecolorz"boxplot.flierprops.markeredgecolorzboxplot.flierprops.markersizezboxplot.flierprops.linestylezboxplot.flierprops.linewidthzboxplot.boxprops.colorr  zboxplot.boxprops.linestylezboxplot.capprops.colorzboxplot.capprops.linewidthzboxplot.capprops.linestylezboxplot.medianprops.colorzboxplot.medianprops.linewidthzboxplot.medianprops.linestyleFr   r   )zboxplot.verticalr-  zboxplot.patchartist-.)r-  zboxplot.showcapszboxplot.showboxzboxplot.showflierszboxplot.showmeanszboxplot.meanlinezboxplot.meanprops.colorzboxplot.meanprops.linewidthzboxplot.meanprops.linestylezboxplot.whiskerprops.colorzboxplot.whiskerprops.linewidthzboxplot.whiskerprops.linestylec                 S   s   g | ]}t |qS r   )r  r  r   r   r   r     s     z.test_boxplot_rc_parameters.<locals>.<listcomp>r   )rL   rM   rN   r   r   r;  r,  r@   r   r   Zget_childrenr   )r   r   Zrc_axis0Zrc_axis1Zrc_axis2	dict_listr  Zrc_axisr   r   r   test_boxplot_rc_parametersO  sZ    
r1  zboxplot_with_CIarray.pngc                  C   sv   t jd t ddd} t d| dg} t \}}t ddgd	d
gg}|j| | gdd dg|dd |	d d S )Nr  ru  rv  r  r  rT  r	  r  r
        @r  r   r   )r   usermediansconf_intervalsr!  r"  )
rL   rM   rN   r   r$  r   r   r   r  r=  )r0   r   r   ZCIsr   r   r   test_boxplot_with_CIarray  s     r5  zboxplot_no_inverted_whisker.pngc               	   C   s\   t jddddddddgt jd	} t }||  |d
 |jjddd |j	d d S )Nry   i(#  r_  X   i^  i@ ix  i  r  r   Fminorwhich)
rL   r   r  r   r  r  r  r   r  rk   )r0   r   r   r   r   test_boxplot_no_weird_whisker  s    

r:  c               	   C   s   t ddd} t d| dg} t \}}tt |j| ddgd W 5 Q R X tt$ |j| | gddgddggd W 5 Q R X d S )	Nru  rv  r  r  rT  r   r    )r3  	rL   r   r$  r   r   rz   r{   r  r  r  r   r   r   test_boxplot_bad_medians  s    r<  c               	   C   s   t ddd} t d| dg} t \}}tt |j| | gddggd W 5 Q R X tt" |j| | gddgdggd W 5 Q R X d S )	Nru  rv  r  r  rT  r   r    )r4  r;  r  r   r   r   test_boxplot_bad_ci  s    "r=  c                  C   sZ   t d} t \}}|| d d  dks4t|j| ddd d  dksVtd S )Nra   boxesr   r    r  )rL   rQ   r   r   r  r   r   )r0   rk  r   r   r   r   test_boxplot_zorder  s    
r@  c                  C   s   dt jd< dt jd< dt jd< t  \} }td}d|d	< |j|d
d}dD ]"}|| D ]}| dksZtqZqN|d d  dkst|d d  dkstd S )Nr,  rp  rv   r.  r&  zboxplot.meanprops.markerr   r_  r_   T)r  )ZwhiskersZcapsr>  Zmediansr   r  r   Zmeans)r   r   r   rL   rQ   r  Z
get_markerr   )r   r   Z	test_dataZ
bxp_handleZ	bxp_linesZ	each_liner   r   r   test_boxplot_marker_behavior  s    



rA  z&boxplot_mod_artists_after_plotting.pngc                  C   sR   dddddddg} t  \}}|j| dd}|D ]}|| D ]}|d	 q<q0d S )
Nr'  r|  r  gQ?gQ?gQrv   r(  r   )r   r   r  	set_color)r0   r   r   Zbpkeyrn  r   r   r   &test_boxplot_mod_artist_after_plotting  s    rD  zviolinplot_vert_baseline.pngc                  C   sp   t jd dd tdD } t }|j| tddddd d| i} t \}}|jdtdddd| d d S )	Niec                 S   s   g | ]}t jjd dqS r   r  rL   rM   rO   r   rD  r   r   r   r     s     z1test_vert_violinplot_baseline.<locals>.<listcomp>r   r   r  r  showextremashowmediansr/  )r  r  rJ  rK  r$  )rL   rM   rN   r   r   r  
violinplotr   )r$  r   r   r   r   r   test_vert_violinplot_baseline  s     rM  zviolinplot_vert_showmeans.pngc                  C   sB   t  } tjd dd tdD }| j|tddddd d S )Niw5+c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r     s     z2test_vert_violinplot_showmeans.<locals>.<listcomp>r   r   r   rI  r   r  rL   rM   rN   r   rL  r   r$  r   r   r   test_vert_violinplot_showmeans  s    rP  zviolinplot_vert_showextrema.pngc                  C   sB   t  } tjd dd tdD }| j|tddddd d S )Nic                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r     s     z4test_vert_violinplot_showextrema.<locals>.<listcomp>r   r   r   rI  rN  rO  r   r   r    test_vert_violinplot_showextrema  s    rQ  zviolinplot_vert_showmedians.pngc                  C   sB   t  } tjd dd tdD }| j|tddddd d S )Nib}&c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r     s     z4test_vert_violinplot_showmedians.<locals>.<listcomp>r   r   r   rI  rN  rO  r   r   r    test_vert_violinplot_showmedians  s    rR  zviolinplot_vert_showall.pngc                  C   s\   t  } tjd dd tdD }| j|tddddddgdd	gd
dgddggd d S )NiOc                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r     s     z0test_vert_violinplot_showall.<locals>.<listcomp>r   r   r   ?r   rF  r   r  r  r  )r  r  rJ  rK  	quantilesrN  rO  r   r   r   test_vert_violinplot_showall  s    rU  z#violinplot_vert_custompoints_10.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )Ni$c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   %  s     z8test_vert_violinplot_custompoints_10.<locals>.<listcomp>r   r   ra   r  r  rJ  rK  pointsrN  rO  r   r   r   $test_vert_violinplot_custompoints_10   s     rX  z$violinplot_vert_custompoints_200.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )NiYqVc                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   /  s     z9test_vert_violinplot_custompoints_200.<locals>.<listcomp>r   r   r  rV  rN  rO  r   r   r   %test_vert_violinplot_custompoints_200*  s     rY  zviolinplot_horiz_baseline.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )Ni\dc                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   9  s     z2test_horiz_violinplot_baseline.<locals>.<listcomp>r   Fr   r  r  r  rJ  rK  rN  rO  r   r   r   test_horiz_violinplot_baseline4  s     r[  z violinplot_horiz_showmedians.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )	Nilo/c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   C  s     z5test_horiz_violinplot_showmedians.<locals>.<listcomp>r   Fr   r   rZ  rN  rO  r   r   r   !test_horiz_violinplot_showmedians>  s     r\  zviolinplot_horiz_showmeans.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )	Ni&c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   M  s     z3test_horiz_violinplot_showmeans.<locals>.<listcomp>r   Fr   r   rZ  rN  rO  r   r   r   test_horiz_violinplot_showmeansH  s     r]  z violinplot_horiz_showextrema.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )	Nie!c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   W  s     z5test_horiz_violinplot_showextrema.<locals>.<listcomp>r   Fr   r   rZ  rN  rO  r   r   r   !test_horiz_violinplot_showextremaR  s     r^  zviolinplot_horiz_showall.pngc                  C   s^   t  } tjd dd tdD }| j|tdddddddgd	d
gddgddggd d S )Ni"c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   a  s     z1test_horiz_violinplot_showall.<locals>.<listcomp>r   Fr   r   rS  r   rF  r   r  r  r  )r  r  r  rJ  rK  rT  rN  rO  r   r   r   test_horiz_violinplot_showall\  s     r_  z$violinplot_horiz_custompoints_10.pngc               	   C   sF   t  } tjd dd tdD }| j|tddddddd d S )	Ni0c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   l  s     z9test_horiz_violinplot_custompoints_10.<locals>.<listcomp>r   Fr   ra   r  r  r  rJ  rK  rW  rN  rO  r   r   r   %test_horiz_violinplot_custompoints_10g  s      ra  z%violinplot_horiz_custompoints_200.pngc               	   C   sF   t  } tjd dd tdD }| j|tddddddd d S )	Ni<9!c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r   v  s     z:test_horiz_violinplot_custompoints_200.<locals>.<listcomp>r   Fr   r  r`  rN  rO  r   r   r   &test_horiz_violinplot_custompoints_200q  s      rb  c               	   C   sR   t  } tjd dd tdD }tt | j	|tdd W 5 Q R X d S )Ni@ 3c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r     s     z1test_violinplot_bad_positions.<locals>.<listcomp>r   r   r  
r   r  rL   rM   rN   r   rz   r{   r  rL  rO  r   r   r   test_violinplot_bad_positions{  s
    rd  c               	   C   sZ   t  } tjd dd tdD }tt  | j	|tddddgd W 5 Q R X d S )	NiA#c                 S   s   g | ]}t jjd dqS rE  rG  rH  r   r   r   r     s     z.test_violinplot_bad_widths.<locals>.<listcomp>r   r   r    ry   )r  r  rc  rO  r   r   r   test_violinplot_bad_widths  s
    re  c               	   C   sX   t  } tjd tjjddg}tt  | j	|ddgddggd W 5 Q R X d S )	Nil r   rF  r   r   r   r  rT  
r   r  rL   rM   rN   rO   rz   r{   r  rL  rO  r   r   r   test_violinplot_bad_quantiles  s
    rh  c               	   C   s   t  } tjd tjjddg}tt | j	|ddddggd W 5 Q R X tt | j	|d	ddd
ggd W 5 Q R X d S )Niq4r   rF  r   r   r   ?rf  gr  rg  rO  r   r   r   $test_violinplot_outofrange_quantiles  s    "rj  c                 C   sZ   t jd t jjddg}|  }|j|dddgd | }|j|dddggd d S )N+r   rF  r   r   rS  rf  )rL   rM   rN   rO   r   rL  )r6   r7   r$  r   r   r   r   %test_violinplot_single_list_quantiles  s    rl  c              	   C   s   t jd |jt jjddddddddd	gd
}|jt jjddtdd
}|t jjdd}|  |||g | |j|j|jg d S )Nrk  rv  rF  r  r  r  r   r   ry   r  Z	ABCDEFGHIr  )	rL   rM   rN   r  rO   r  r   rL  values)r6   r7   r  s1s2Zs3r   r   r   test_violinplot_pandas_series  s    &rp  c                  C   sz   t  \} }|dd | }tjd tjddd}tjddd}|j||gddgdd	 | }t	|| d S )
Nr   r   ra   ry   r  r   r    F)r  Zmanage_ticks)
r   r   r<  ro   rL   rM   rN   rO   r  r   )rD  r   Zold_xlimr  r   Znew_xlimr   r   r   test_manage_xticks  s    rq  c                  C   s   t  \} }|jtjddgd |jtjddgd | j  | dksVt	t
| ddgksnt	dd | D dd	gkst	d S )
Nr   ry   r  r   )r  r  c                 S   s   g | ]}|  qS r   get_textr  r   r   r   r     s     z+test_boxplot_not_single.<locals>.<listcomp>r   5)r   r   r  rL   rM   r   r  r   ro   r   r  
get_xticksr;  r   r   r   r   test_boxplot_not_single  s    
rv  c                  C   s@   t ddgddg tjddi t } t j| ddd d S )Nr   r   z	font.sizeP   raw)rN  format)r   rm   r@   r   updateioBytesIOsavefigrZ  r   r   r   test_tick_space_size_0  s    r  Zerrorbar_basicZerrorbar_mixedc            
   	   C   s  t ddd} t |  }ddt |   }d| }t }| }|j| |ddd |d tj	ddd	d
\}}|d }|j| ||dd |d |j
dd |d }|j| ||ddd |d |d }|j| ||d| g|d| gdd |d |d }|d t d|| }|| }|j| ||d| g|dddd |d |d | |d}	t }| }|jdd dd|	d! |d d S )"Nr   r   r   r   r  )r  r  z&Simplest errorbars, 0.2 in x, 0.4 in yr    T)r  r  r  r  rv   r  r   zVert. symmetricZnbinsr1  )r  r   r  zHor. symmetric w/ alphar  z--or  r  r   zH, V asymmetricr  r   r  r}  )r  r  r   ecolorZcapthickzMixed sym., log yzVariable errorbarsr   r0   r-   r  r  r$  )rL   rQ   r  r  r   r   r   rn  r  r   locator_paramsr  maximumZsuptitle)
r0   r-   r  r  r   r   r  ZylowerZ
yerr_lowerr$  r   r   r   test_errorbar  sF    


$

  


r  c                  C   s   t  \} }td}d| }|j||d d\}}}|j|d| d d\}}}||d| \}t| tdks|t	t| tdkst	t| tdkst	d S )Nra   r    r  r   r  C1C2)
r   r   rL   rQ   rn  rm   r  to_rgba	get_colorr   )r]  r   r0   r-   rf  rD  rg  Zln1r   r   r   test_errorbar_colorcycle  s    
r  c              
      s   t ddd  fddtdD }|  }| }t|dddd	gD ]>\}}|j ||d
 dddd |j ||d
 dd|dd qFd S )Nr   r   r   c                    s   g | ]}t   | qS r   )rL   r  r   r  r0   r   r   r   %  s     z.test_errorbar_cycle_ecolor.<locals>.<listcomp>r  r  r  r  r  rh  rv   r  )r  rx   rZ   r  )r  rx   rZ   r   r  )rL   rQ   r   r   r;  rn  )r6   r7   r-   ZaxtZaxryir   r   r  r   test_errorbar_cycle_ecolor"  s       r  c               	   C   s   t  } |  }tddd}t| }ddt|  }t|d| fj}d| }t	
t |j|||dd W 5 Q R X t	
t |j|||dd W 5 Q R X t	
t |j||||dd	 W 5 Q R X d S )
Nr   r   r   r   r    rv   r  )r  r   r  )r   r   r   rL   rQ   r  r  vstackrF  rz   r{   r  rn  )r   r   r0   r-   Zyerr1r  r  r   r   r   test_errorbar_shape1  s    r  Zerrorbar_limitsc                  C   s`  t ddd} t |  }d}d}d}t \}}|j| ||||dd t | }d|d	d
dg< |j| |d ||||dd t | }d|dddg< |j| |d ||||dd |j| |d dd|||||dd
 d}t | d}d|ddg< |}	|}
t | }t | }d|dg< d|dg< |j| |d dd|||	|
||ddddd |d  |	d! d S )"Nr   r  r   r   dottedr   )r  r  r  r   Tr   r   r  r   )r  r  uplimsr  r   r    r   r  r   rY  )r  r  lolimsr  r   r   rv   magenta)rZ   r  r  r  r  r  r  r   r   ry   r   @r   r   Zcyan)rZ   r  r  r  xlolimsxuplimsr  r  r  r  capsizer   )r   r  zErrorbar upper and lower limits)
rL   rQ   r  r   r   rn  Z
zeros_likeZ	full_liker<  r  )r0   r-   r  r  r  r   r   r  r  r  r  r   r   r   test_errorbar_limitsC  sX    

   



     
r  c                  C   sd   t d} t d}tj| |dddd\}}}|d ks:t|D ] }t | tdks>tq>d S )Nr   r   r   )r  r  r   r  )	rL   rQ   r   rn  r   r	  r  r  r  )r0   r-   plotlinerD  ZbarlinesZerrbarr   r   r   test_errobar_nonefmtr  s    

r  c                  C   s`   t d} t d}tj| |ddddddddd	d
d\}}}| dksLt| dks\td S )Nr   r   Noner,  rH   z	steps-midroundr(  r)  Zbevel)
r  r  r  rZ   r  r-  Zdash_capstyleZdash_joinstyler,  r+  )rL   rQ   r   rn  Zget_fillstyler   Zget_drawstyle)r0   r-   r  rD  r   r   r   "test_errorbar_line_specific_kwargs}  s    

 r  c              	   C   s$  |  }|jdddgdddgdddd	d
 |jdddgdddgdddddd |jdddgdddgdddddd |dd tdddgdddgd	ddgdddgd}tjd|d |   }|jdddgdddgdd |jdddgdddgddd |jdddgdddgddd  |dd d S )!Nr    r   ra   r   r   r   ri  r,  r  )r0   r-   r  r  rZ   r  ry   z	tab:greenr  r-   )r0   r-   r  r   r  rZ   r  r   r  ztab:bluer/  rv   r#   )r0   r-   r  r   r  rZ   r  r  rZ  r}  rk  )r  rZ   r  r   r  )Z
prop_cycle)r0   r-   r  )r0   r-   r  r   )r0   r-   r  r   )r   rn  r<  r
   r   rc)r6   r7   r   Z_cycler   r   r   test_errorbar_with_prop_cycle  s6           r  c               	   C   s   t ddd} | d|   }|d }t  }tjtdd |j| ||dd W 5 Q R X tjtdd |j| ||d	d W 5 Q R X tjtd
d |j| ||ddgd W 5 Q R X tjtdd |j| ||dd W 5 Q R X d S )Nr   r   r   r  znot a tuple of two integersr/  )r   r    ry   )
errorevery)r  ry   znot a valid NumPy fancy indexFTznot a recognized valueZfoobar)	rL   r   r   r   r   rz   r{   r  rn  )r0   r-   r  r   r   r   r   test_errorbar_every_invalid  s     r  c           	   
   C   s>  t ddd}|d|  }|d }| }|  }tdddddgD ]p\}}|d7 }|j||||d	fd	|d
 |j|||dd |j||d d	 ||d d	 ||d d	 d	|dd qD|j||d |dd	dd |j|dd d	 |dd d	 d ddd |j||d |d	dd |j||d |tdd dtdd dd	ddd |j|dd d |dd d d dddd |j|dd d |dd d d |dd d d	ddd |j||d |dddgd dddgd d	ddd |j|dd d |dd d d dddd |j|dd d |dd d d |dd d d	ddd d S )Nr   r   r   r  Zrgbkr    rv  r  r   )r  r  r#   r  )r#   r  r   )r  r#   r   r   )r   r   rv   )rn  r  r   r?  )r  r   r   ry   r  )r  rn  r  r#   r   FTr   r  )rL   r   r   r;  rn  rm   r  )	r6   r7   r0   r-   r  rU   rT   r   shiftr   r   r   test_errorbar_every  sX     (  *
  ,,    ,,  r  
elinewidthc                 C   s(   t jdddgdddgdddg| d d S )Nr   r    ry   )r  r  )r   rn  )r  r   r   r   test_errorbar_linewidth_type  s    r  Zhist_stacked_stepfilledc                  C   sj   t ddd} t ddd}t \}}|j| |fddd	 d
| |fi}t \}}|jd
dd|d d S )Nr   ry   r  r   ra   r  r  Tr  r0   )r  r  r$  rL   r   r   r   r  )d1d2r   r   r$  r   r   r   test_hist_stacked_stepfilled  s    r  Zhist_offsetc                  C   sH   t ddd} t ddd}t \}}|j| dd |j|d	d d S )
Nr   ra   r  r   ry   r  r   r  r   r  r  r  r   r   r   r   r   test_hist_offset  s
    r  zhist_step.pngc                  C   sD   t ddd} t \}}|j| dd |dd |dd	 d S )
Nr   ry   r  r  r  r   ra   r_   r   )rL   r   r   r   r  r=  r<  r  r   r   r   r   r   test_hist_step  s
    r  zhist_step_horiz.pngc                  C   s@   t ddd} t ddd}t \}}|j| |fddd	 d S )
Nr   ra   r  r   ry   r  r  r<   )r  r>   r  r  r   r   r   test_hist_step_horiz	  s    r  Zhist_stacked_weightsc                  C   sb   t ddd} t ddd}t ddd}t d	d
d}t \}}|j| |f||fddd d S )Nr   ra   r  r   ry   r  r  r2  r  r   r  T)weightsr  r  r  )r  r  Zw1Zw2r   r   r   r   r   test_hist_stacked_weighted  s    r  use_line_collectionzw/ line collectionzw/o line collectionzstem.pngc              	   C   sJ   t ddt j d}t \}}|j|t |dddd| d |  d S )	Nr   r    r   C2-.zk+C1-. )linefmt	markerfmtbasefmtr$   r  )rL   r   r   r   r   stemr   r2   r  r0   r   r   r   r   r   	test_stem  s       r  c                  C   s^   t  \} }ttd}ttd}|| ||| |||d |j||ddd d S )Nra   r   zb--)r  )r   r   r  r   r  )r   r   r0   r-   r   r   r   test_stem_args,  s    
r  c                  C   sB   t dd\} }tjdtjdg}ddg}|||d d S )Nr   z2013-9-28 11:00:00z2013-9-28 12:00:00r   r  z*-)r   r   dateutilparserparser  )r   r   xsysr   r   r   test_stem_dates9  s    

r  zstem_orientation.pngc              	   C   sB   t ddt j d}t \}}|j|t |ddd| dd d S )	Nr   r    r  r  Zkxr  r<   )r  r  r  r  r>   )rL   r   r   r   r   r  r   r  r   r   r   test_stem_orientationA  s       r  Zhist_stacked_stepfilled_alphac                  C   sB   t ddd} t ddd}t \}}|j| |fddd	d
 d S )Nr   ry   r  r   ra   r  r  Tr   )r  r  r  r  r  r   r   r   "test_hist_stacked_stepfilled_alphaM  s    r  Zhist_stacked_stepc                  C   s@   t ddd} t ddd}t \}}|j| |fddd	 d S )
Nr   ry   r  r   ra   r  r  Tr  r  r  r   r   r   test_hist_stacked_stepV  s    r  Zhist_stacked_normedc                  C   s@   t ddd} t ddd}t \}}|j| |fddd d S )	Nr   ry   r  r   ra   r  T)r  r  r  r  r   r   r   test_hist_stacked_density_  s    r  zhist_step_bottom.pngc                  C   s4   t ddd} t \}}|j| t ddd d S )Nr   ry   r  ra   r  )r:   r  )rL   r   r   r   r  rQ   r  r   r   r   test_hist_step_bottomh  s    r  c                  C   s   ddddg} ddddddg}t j|| dd\}}\}ddgddgddgddgddgddgddgddgddgddgddgddgddgg}t| | d S )Nr   r   r    ry   r  r  r  r   r  r   get_xyr  r$  rD  polygonr&  r   r   r   test_hist_stepfilled_geometryp  s    *     r  c               	   C   sz   ddddg} ddddddg}t j|| dd\}}\}ddgddgddgddgddgddgddgddgg}t| | d S )Nr   r   r    ry   r  r  r  r  r   r   r   test_hist_step_geometry{  s    4r  c                  C   s   ddddg} ddddddg}t j|| dddgdd\}}\}ddgddgddgddgddgdd	gdd	gddgddgddgddgddgddgg}t| | d S )
Nr   r   r    ry   r   r  r  r:   r  r   r  r  r  r   r   r   $test_hist_stepfilled_bottom_geometry  s     *     r  c               	   C   s   ddddg} ddddddg}t j|| dddgdd\}}\}ddgddgddgddgddgdd	gdd	gddgg}t| | d S )
Nr   r   r    ry   r   r  r  r   r  r  r  r   r   r   test_hist_step_bottom_geometry  s    4r  c                  C   s*  ddddg} ddddddg}dddg}t j||g| ddd\}}}t|dksRt|d \}ddgddgddgddgddgddgddgddgddgddgddgddgddgg}t| | |d \}ddgddgddgddgddgddgddgddgddgddgddgddgddgg}t| | d S )	Nr   r   r    ry   Tr  r  r  r  r   r   r  r  r   r   r  r  Zdata_1Zdata_2rD  r   r  r&  r   r   r   %test_hist_stacked_stepfilled_geometry  s:    


*     
*     r  c               	   C   s   ddddg} ddddddg}dddg}t j||g| ddd\}}}t|dksRt|d \}ddgddgddgddgddgddgddgddgg}t| | |d \}ddgddgddgddgddgddgddgddgg}t| | d S )	Nr   r   r    ry   Tr  r  r   r  r  r   r   r   test_hist_stacked_step_geometry  s    


4
4r  c                  C   s2  ddddg} ddddddg}dddg}t j||g| ddddgdd\}}}t|dksZt|d \}ddgddgddgdd	gdd	gdd
gdd
gddgddgddgddgddgddgg}t| | |d \}ddgddgddgddgddgddgddgdd
gdd
gdd	gdd	gddgddgg}t| | d S )Nr   r   r    ry   Tr   r  r  r  r:   r  r   r  r   r  r2  r  r  r   r   r   ,test_hist_stacked_stepfilled_bottom_geometry  s<    


*     
*     r  c               	   C   s   ddddg} ddddddg}dddg}t j||g| ddddgdd\}}}t|dksZt|d \}ddgddgddgdd	gdd	gdd
gdd
gddgg}t| | |d \}ddgddgddgddgddgddgddgdd
gg}t| | d S )Nr   r   r    ry   Tr   r  r  r   r  r   r  r2  r  r  r   r   r   &test_hist_stacked_step_bottom_geometry  s     


4
4r  Zhist_stacked_barc                  C   s   dddddddddddd	gdd
ddddgdddddddgddddddddddddgddddddddddddddgddddddddddddgg} ddddddg}dd d!d"d#g}t  \}}|j| dd$d%||d& |jd'd(d)d* d S )+Nr   r  @  i  rw  r  r  6  r     r  r  i  r  r  r_     rO  r  r   ra   i+  r   r  )gXxn?r   r  )r  r   g `p?)r  r   gǟ?)r  gˢ`?r   )gC?r  r   )gK?r  r   r   r  z yellowr  r  r  mid)r  r  r  r   r$   zupper right)r   r   r   )r(   Zbbox_to_anchorZncol)r   r   r  r2   )r/  r$  labelsr   r   r   r   r   test_hist_stacked_bar  s&       r  c                  C   sD   t ddg} tjddgddggdd| d |  ddgks@td S )Nra   r  r   r   r    r  )r  r:   )rL   r   r   r  tolistr   r~  r   r   r   %test_hist_barstacked_bottom_unchanged  s    r  c                  C   s,   t  \} }|jg tdtdgdd d S )Nra   r  r  )r   r   r  r   r   r   r   r   test_hist_emptydata
  s    r  c                  C   s   t  \} }|jddgdd\}}}|d  dks8t|jddgdgd\}}}|d  dksft|jddgd d\}}}|d  dkst|jddgdd\}}}|d  dkst|jddgdd\}}}|d  dkstd S )Nr   r   ro  r  Z
_nolegend_Z00)r   r   r  	get_labelr   )r   r   rD  barsr   r   r   test_hist_labels  s    r  Ztransparent_markersc                  C   s:   t jd t jd} t \}}|j| dddd d S )Nr   r  rO  r   r   )r  r`   rL   rM   rN   r   r   rm   r  r   r   r   test_transparent_markers  s    r  Zrgba_markersc               	   C   s   t jdd\} }ddg}ddg}d dg}tdd	d
}t|D ]~\}}t|D ]l\}}	t|D ]Z\}
}|| j|d |
d df||	|d| || j|d |
d df|	|d| q\qLq<|D ]}|ddddg qd S )Nr    r{  r  )r   r   r   r   r   )r   r   r   r   r   r   r  )r  r  r   rv   )r  r  r  ry   r0   )r  r  r_   r   r   r   )r   r   r  r  rm   r  )r   r  ZrcolorsZbcolorsalphaskwr   r  r  Zrcolorr  Zbcolorr   r   r   r   test_rgba_markers'  s     .r  Zmollweide_gridc                  C   s    t  } | jdd}|  d S )N	mollweider  )r   r   r   r  r   r   r   r   test_mollweide_grid8  s    r  c                  C   s   t  } | jdd}ttj tjd}ttj d tjd d}t||\}}t| | fj	}|j
|}|j
 |}tj||d d S )Nr  r  rY  r   r  ry   )r   r   r   rL   r   r   r  r  r0  rF  transProjectionr   invertedr   r   )r   r   ZlonZlatllr&  Zll2r   r   r   &test_mollweide_forward_inverse_closureA  s    r  c                  C   sz   t  } | jdd}tddd}t||\}}t| | fj}|j	
 |}|j	|}tj||d d S )Nr  r  r   r     ry   )r   r   r   rL   r   r  r  r0  rF  r  r  r   r   r   )r   r   r0   r-   r&  r  xy2r   r   r   &test_mollweide_inverse_forward_closureW  s    r  
test_alphac               	   C   s   t jd t jd} t \}}|j| ddddgddddgddd |j| d	 dddddgddddgdddd
 |j| d ddddgdddgdddd
 |j| d dddddgddddgddd |j| d dddddgdddgddd d S )Nr   r  z-Dr   r   r  ra   )r   r  r`   r   r    )r   r  r`   r   r  r   r  r  r  r  r   r   r   r  l  s2           	eventplotc                  C   sr  t jd t jddg } t jddg }| | }t|}dddggt|  }dddgdddgdddgdddgdddgdddgg}|| }dt dt| d	  }d
dddddg}| | }	d	gt|  }
ddddddg}|
| }t }| }|j	|||	|d}t|}||ks&t
|||	|d}t }| }|j	dddd|d}t|}||ksnt
d S )Nr   rW   r  r  r   r  r  r5  gQ?ir   r   ra   r   r    ry   )r$  lineoffsetslinelengths)r   r#   lor  r   r#   r  r  )r$  r  r  r$  )rL   rM   rN   r  r  rQ   r   r   r   r  r   )rz  data2r$  Znum_datasetsZcolors1Zcolors2r$  Zlineoffsets1Zlineoffsets2r  Zlinelengths1Zlinelengths2r  r   axobjZcollsZnum_collectionsr   r   r   test_eventplot  sH    

 r  ztest_eventplot_defaults.pngc                  C   sZ   t jd t jddg } t jddg }| | }t }| }|| dS )zf
    test that eventplot produces the correct output given the default params
    (see bug #3728)
    r   rW   r  r  N)rL   rM   rN   r  r   r   r   r  )rz  r  r$  r   r  r   r   r   test_eventplot_defaults  s    r  r$  )rt  )z
tab:orangeztab:pinkztab:cyanZbLacK)rY  )r   r   r   N)r   r   r   r   c                 C   s   dgdgdgdgg}dd | D }t |dkr6|d }tt|t |df}t \}}t | dkrp| d } |j|| d}t||D ]\}}t	|
 | qd	S )
zBTest the *colors* parameter of eventplot. Inspired by issue #8193.r   r   r    ry   c                 S   s   g | ]}|d k	r|ndqS )Nr  r   r   r#   r   r   r   r     s     z)test_eventplot_colors.<locals>.<listcomp>r   r$  N)r  rL   Zbroadcast_tor  Zto_rgba_arrayr   r   r  r;  r   r  )r$  r$  expectedr   r   r  r  r   r   r   r   test_eventplot_colors  s    r  z!test_eventplot_problem_kwargs.pngc              	   C   s   t jd t jdg }t jdg }||g}t }| }|j|ddgddgdd	gd	dgd
dgddgd t| dkst	t
dd | D st	dS )z
    test that 'singular' versions of LineCollection props raise an
    IgnoredKeywordWarning rather than overriding the 'plural' versions (e.g.
    to prevent 'color' from overriding 'colors', see issue #4297)
    r   r  ra   rk  rZ  r#   rl  r    r   rw   Zdasheddashdotr  )r$  r   r  r   rf  rx   ry   c                 s   s   | ]}t |jtV  qd S r   )
issubclasscategoryr   )r   Zwir   r   r   r    s   z0test_eventplot_problem_kwargs.<locals>.<genexpr>N)rL   rM   rN   r  r   r   r   r  r  r   r	  )Zrecwarnrz  r  r$  r   r  r   r   r   test_eventplot_problem_kwargs  s$    	r  c                  C   s.   t dd\} }|jg gdgd t   d S )Nr   )r  r  r  r  r  )r   r   r  r   r   r   r   r   test_empty_eventplot  s    r  r$  r>   _emptyZverticalr<   c              	   C   sb   |dkri nd|i}t dd\}}|dkr6ttnt  |j| f| W 5 Q R X t   dS )z#Introduced when fixing issue #6412.r	  r>   r   )Nr   N)r   r   rz   r2  r   r   r  r   )r$  r>   optsr   r   r   r   r   test_eventplot_orientation  s    r  zmarker_styles.pngc               	   C   sv   t  \} }tttjjjdd dD ]J\}}|j|d d t	dd  t
dd | d|d|d  |d q&d S )	Nc                 S   s   t t| t |  S r   )r  r  r  r   r   r   r    r  z$test_marker_styles.<locals>.<lambda>)rC  r    r   ra   r   )rx   rZ   r`   r$   )r   r   r  sortedr@   markersrj  rm   rL   rQ   rf   )r   r   r-   rZ   r   r   r   test_marker_styles  s    . 
 r  zrc_markerfill.pngc                  C   sR   t  \} }td}tdddgD ](\}\}}|tjd< |j|| |d q$d S )Nrv  )r&   r,  )r:   rv   )r   r&  zmarkers.fillstylerg  )r   r   rL   rQ   r  r@   r   rm   )r   r   r0   idxr   rZ   r   r   r   test_markers_fillstyle_rcparams  s    

r  zvertex_markers.pngc                  C   sv   t td} d}ddddg}t \}}|j| d|dd	 |j| d d d
 d|dd	 |d
dg |d
dg d S )Nra   )r_   r_   r|  r  r}  r  r|  r  r}  r   r  r  r_   rZ  )r  r   r   r   rm   r<  r=  )r$  Zmarker_as_tupleZmarker_as_listr   r   r   r   r   test_vertex_markers%  s    r  Zvline_hline_zorderZerrorbar_zorderx86_64c                  C   s  t td} t }| }|j| ddd |jddddd |jddddd |jdd	ddd |jd
dddd |d t }| }t td} t	
d}t td}|j| ||dddd tdD ]*}|j|dd|d |j| dd|d q|d d S )Nra   r   )r   r  r   rY  )r   r   r  r   rv  rl  r    r  ry   zaxvline and axhline zorder testrk  )r  r  r   r   )r   r   r  zerrorbar zorder test)r  r   r   r   r   rm   rS   axvliner  rL   rH  rn  )r0   r   r   r-   r  r  r   r   r   test_eb_line_zorder1  s&    

r  c                 C   s   |   }|jddd |ddgddgd |jddd	d
 |  }|jddd |ddgddgd |jddgddgd	d
 d S )N)r   ra   )r  r   r  r   r  z.-)r   r  )ra   r  r  r  r   ra   r  r  )r   rn   r  axliner6   r7   r   r   r   r   test_axline_loglogO  s    r  c                 C   s   |   }|jddd |dd |jdddd |jdd	d
d |jdddd |jdddd |jdtddd |  }|jddd |ddgddg |jddd |jdd
d |jddd |jddgddgdd |jddd d S )Nr}  r  r  r  r  r  rl  )r   r   r   r   r  )gffffffr  r   r  )sloper   )r   r  r  ZC4)r  r   infr  r_   r   r   )r   rn   r  r  rm   rS   r  r  r   r   r   test_axline\  s     r  c                 C   s   |   }|jddd |jdd|jd |jddd|jd |jd	d
d|jd |jddd|jd |  }|jddd |ddgddg |jd
dgdd
gdd |jddgd
d
gdd |jd
d
gddgdd d S )Nr}  r  r  r   r  r   r  r  r  r   r   r   r   r   r  )r   r   )r   r   r  )r   r   r_   rl  )r   rn   r  r   rm   r  r   r   r   test_axline_transaxess  s    r   c                 C   s   |   }|jddd |jdd|jd |jddd|jd	 |jdd
d|jd	 |jddd | dd |  }|jddd |dd |d
dgd
dg |jd
dgd
dgdd |jd
dgddgdd d S )Nr}  r  r  r   r  r  r    r  r  r   r  )r   r   r  ry   r   ra   rl  )r   rn   r  r   set_size_inchesrm   r  r   r   r   test_axline_transaxes_panzoom  s    r"  c               	   C   s   t  \} }tt |d W 5 Q R X tt |jdddd W 5 Q R X |d tt |jddd W 5 Q R X |d |d tt |jddd W 5 Q R X |d tt |dd t 	  W 5 Q R X dS )z3Exactly one of *xy2* and *slope* must be specified.r  r  r   )r  r   r  N)
r   r   rz   r{   r|   r  r   r  r  r   r   r   r   r   test_axline_args  s     



r#  Zvlines_basicZvlines_with_nanZvlines_maskedc                  C   s  dddddg} dddddg}t  \}}|j| d|d	dd
 ddddddg}ddddtjdg}t jddd\}\}}}	|j|d|d	dd
 ddddddg}
tjdddddg}|j|
d|dddd ddddddg}tjddddtjg}|	j|d|ddd
 ||||	fD ]}|dd q| | ks0t| | ksFt| |	 ks\tt  \}}tj	ddddddgd}tj	ddddddgd}tj	ddddddgd}|j|||ddd
 |dd d S Nr    ry   r   r   rv  ir  r   r}  r$  r   r  )r   r  )r  r  rk  ri  )r$  r   rx   r  ra   r5  r   r_   rP  r"  r   r     r  )
r   r   rR   rL   r  r<  rp   r   r	   masked_equal)r  r  r  r   r   r   r  r   r   rd  x3r  x4y4r   fig3ax5Zx5Zymin5Zymax5r   r   r   test_vlines  s2    r-  c               	   C   sN   t  \} }tddi* |ddd}tj| ds@tW 5 Q R X d S Nzlines.colorrY  r   r   r   )	r   r   r   r   rR   r$  r  r  r   r   r   r/  r   r   r   test_vlines_default  s    r0  Zhlines_basicZhlines_with_nanZhlines_maskedc                  C   s  dddddg} dddddg}t  \}}|j| d|d	dd
 ddddddg}ddddtjdg}t jddd\}\}}}	|j|d|d	dd
 ddddddg}
tjdddddg}|j|
d|dddd ddddddg}tjddddtjg}|	j|d|ddd
 ||||	fD ]}|dd q| | ks0t| | ksFt| |	 ks\tt  \}}tj	ddddddgd}tj	ddddddgd}tj	ddddddgd}|j|||ddd
 |dd d S r$  )
r   r   hlinesrL   r  r=  ro   r   r	   r'  )r  r  r  r   r   r   r  r   r   rd  r  r(  r*  r)  r   r+  r,  Zy5Zxmin5Zxmax5r   r   r   test_hlines  s2    r2  c               	   C   sN   t  \} }tddi* |ddd}tj| ds@tW 5 Q R X d S r.  )	r   r   r   r   r1  r$  r  r  r   r/  r   r   r   test_hlines_default  s    r3  r   r   c                 C   s   dddddg}|  dddj|dd|d	d
 |  dddj|dd|d	d
 dddd	g}ddddg}| dddj|dd|d	d
 | dddj|dd|d	d
 d S )NrY  r   r   r!  r  r    r   r   r   r%  ry   )r   rR   r1  )r6   r7   r$  Ztest_colorsZ	expect_xyZexpect_colorr   r   r   test_lines_with_colors
  s&        r4  Zstep_linestylec               	   C   sV  t d } }tdd\}}| }ddddg}t||D ]h\}}|j| |d|dd	 |j| |d
 d|dd	 |j| |d d|dd	 |ddg |ddg q<| ||d
 |d d}tdd\}}| }ddddg}t||D ]f\}}|jddd|d|d |jddd|d|d |jddd|d|d |ddg |ddg qd S )Nra   r    rh  ri  r/  r  r   pre)r   rx   r  r   r  r6  r_   rv  )r  Y0Y1Y2r  r6  )r   rx   r  r$  r7  r8  )	rL   rQ   r   r   r0  r;  r  r<  r=  )r0   r-   r   ax_lstZ	ln_stylesr   r  r$  r   r   r   test_step_linestyle  s(    r:  Zmixed_collectionc                  C   s   t  \} }tjddddd}tjj|gdd}|ddgd	d	gg |d
dg tjj|gdd}|ddgddgg |d
dg |	ddddgddddgg |j
d || || |dd |dd d S )N)r  r  r   r   r   )radiusr   r   T)Zmatch_originalr   r  r   r   r$  iir   r   r   rt  r  )r   r   r"  Circler   r  ZPatchCollectionZset_offsetsZset_linewidthsZset_edgecolorsr   rB  r  r<  r=  )r   r   r#   p1p2r   r   r   test_mixed_collection:  s    

r?  c                  C   s:   t tdtdd} |   |   dks6td S )Nr   r   )r   r   r   r   )	r   r   rL   Zint32Zint64r   Zget_subplotspecZget_geometryr   r  r   r   r   test_subplot_key_hashT  s    r@  zspecgram_freqs.pngzspecgram_freqs_linear.pngzspecgram_noise.pngzspecgram_noise_linear.pnggQ?)r  r   r   c                  C   s  dt jd< d} d}|d |d |d g|d |d	 |d
 gg}td| t| }td| d| }ttdtj tj	
|| jdd}td| d }tjd ttj| tj| g}dddg}||f||ffD ]\}	}
|
d }tdtt|
 }tt d|D ] \}}|j|	|
||||d q"tt d|D ]*\}}|j|	|
||||dt j d qXqdS )z)Test axes.specgram in default (psd) mode.r\   r  r  rV  r   r   r  @ffffff@'@ra   r   r   r    r4  r	  onesidedtwosidedry   )NFFTFsnoverlappad_tosidesr  )rF  rG  rH  rI  rJ  r   r  N)r@   r   intrL   r  rQ   r  r   r   multiplyouterr  rM   rN   r  r   ceillog2r;  r   r   r   specgramr$  LogNorm)r  rG  fstims
NFFT_freqsr0   y_freqs
NFFT_noisey_noise	all_sidesr-   rF  rH  rI  r   rJ  r   r   r   test_specgramZ  s8    
,$
 
  rX  zspecgram_magnitude_freqs.pngz#specgram_magnitude_freqs_linear.pngzspecgram_magnitude_noise.pngz#specgram_magnitude_noise_linear.pngc                  C   s  dt jd< d} d}|d |d |d g|d |d	 |d
 gg}td| t| }td| d| }tdtj tj	|| j
dd}d|dddf< t|}td| d }tjd ttj| tj| g}dddg}	||f||ffD ]\}}
|
d }tdtt|
 }tt d|	D ]"\}}|j||
||||dd q6tt d|	D ],\}}|j||
||||ddt j d	 qnqdS )z%Test axes.specgram in magnitude mode.r\   r  r  rV  r   r   r  rA  rB  rC  r   r   r   r    r4  Nr_   ra   r	  rD  rE  ry   Z	magnituderF  rG  rH  rI  rJ  rI   r  )rF  rG  rH  rI  rJ  rI   r   r  )r@   r   rK  rL   r  rQ   r   r   rL  rM  r  r$  rM   rN   r  r  r   rN  rO  r;  r   r   r   rP  r$  rQ  )r  rG  rR  rS  r0   r-   rT  rU  rV  rW  rF  rH  rI  r   rJ  r   r   r   test_specgram_magnitude~  s<    
,&

  
   rZ  zspecgram_angle_freqs.pngzspecgram_phase_freqs.pngzspecgram_angle_noise.pngzspecgram_phase_noise.pngc                  C   s  dt jd< d} d}|d |d |d g|d |d	 |d
 gg}td| t| }td| d| }tdtj tj	|| j
dd}d|dddf< t|}td| d }tjd ttj| tj| g}dddg}	||f||ffD ]\}}
|
d }tdtt|
 }dD ]n}tt d|	D ]R\}}|j||
|||||d tt  |j||
|||||dd W 5 Q R X q>q&qdS )z,Test axes.specgram in angle and phase modes.r\   r  r  rV  r   r   r  rA  rB  rC  ra   r   r   r    r4  Nr_   r	  rD  rE  )rb  phasery   rY  dB)rF  rG  rH  rI  rJ  rI   r   )r@   r   rK  rL   r  rQ   r   r   rL  rM  r  r$  rM   rN   r  r  r   rN  rO  r;  r   r   r   rP  rz   r{   r  )r  rG  rR  rS  r0   r-   rT  rU  rV  rW  rF  rH  rI  rI   r   rJ  r   r   r   test_specgram_angle  s<    
,&

    r]  c                  C   sF   t jtdddd\} }}}| \}}}}|dkr>|dksBtdS )z;Test axes.specgram when Fs is None, should not throw error.r  Nr  )rG  r   rW   `   )r   rP  rL   rf   Z
get_extentr   )specfreqsr+  r  rJ   rK   Zfreq0Zfreq1r   r   r   test_specgram_fs_none  s    ra  c                 C   sH   t d}t |}dtjd< | | dtjd< |  | dS )zCTest specgram ignores image.origin rcParam and uses origin 'upper'.r  upperzimage.originrY   N)rL   rQ   r   r   r   r   rP  )r6   r7   r+  signalr   r   r   test_specgram_origin_rcparam  s    



rd  c               	   C   s<   t d} t | }tt tj|dd W 5 Q R X dS )z4Ensure passing origin as a kwarg raises a TypeError.r  rY   r  N)rL   rQ   r   rz   r{   r|   r   rP  )r+  rc  r   r   r   test_specgram_origin_kwarg  s    

re  zpsd_freqs.pngzcsd_freqs.pngzpsd_noise.pngzcsd_noise.pnggMb`?c               	   C   s  d} d}|d |d |d g|d |d |d gg}t d	| t| }td
| d| }tdtj tj|| jdd}t d	| d }tj	
d
 tj	| tj	| g}ddiddddddg}||f||ffD ]\}	}
|
d }t dtt|
 }tt d|D ]X\}}|jt|	f|
|||d|}t|d|dd ksdt|jddd qtt d|D ]P\}}|j|	|
|||d|}t|d|dd kst|jddd qqd S )Nr        Y@r   r   r  rA  rB  rC  r  r   r   r    r4  rJ  r	  rD  F)rJ  return_linerE  Try   )rF  rG  rH  rI  rg  r   ZxlabelZylabel)rK  rL   r  rQ   r   r   rL  rM  r  rM   rN   r  r   rN  rO  r;  r   r   r   Zpsdr  r  r  r   rn   csd)r  rG  rR  rS  r0   Zys_freqsrU  Zys_noiseZ
all_kwargsr  rF  rH  rI  r   r?  retr   r   r   test_psd_csd  sD    ,& 
 rk  z#magnitude_spectrum_freqs_linear.pngzmagnitude_spectrum_freqs_dB.pngzangle_spectrum_freqs.pngzphase_spectrum_freqs.pngz#magnitude_spectrum_noise_linear.pngzmagnitude_spectrum_noise_dB.pngzangle_spectrum_noise.pngzphase_spectrum_noise.pngc                  C   s  d} d}|d |d |d g}t d| t| }t dtt| }td| d	| }tdtj t|| d
td  j	d	d}tj
d ttj
| tj
| gd }dddg}||d}	||fD ]0}
tt d|D ]2\}}|j|
fd|i|	\}}}|jddd qtt d|D ]:\}}|j|
fd|i|	ddi\}}}|jddd q:tt d|D ]4\}}|j|
fd|i|	\}}}|jddd qtt d|D ]4\}}|j|
fd|i|	\}}}|jddd qqd S )Nr  rf  r   r   r  r  r    r   r   ra   ry   r4  r   r	  rD  rE  )rG  rI  rJ  r   rh  r   r\  )rK  r  rL   rN  rO  rQ   r   r   rM  r  rM   rN   r$  r  r   r;  r   r   r   Zmagnitude_spectrumrn   Zangle_spectrumZphase_spectrum)r  rG  Zfstims1rF  rI  r0   rT  rV  rW  r?  r-   r   rJ  r_  r`  r-  r   r   r   test_spectrum  s8    *"

rl  ztwin_spines.pngc            	      C   s  dd } t jdd}|jdd | }| }| }|jjd | | |jjd |	d	d
dgd	d
dgd\}|	d	d
dgd	ddgd\}|	d	d
dgdddgd\}|
d	d |d	d |d	d |d
d |jj|  |jj|  |jj|  tddd}|jf d| d| |jf d| d| |jf d| d| |jf ddi| d S )Nc                 S   s.   |  d | jd | jd d  d d S )NTF)Zset_frame_onr   set_visiblespinesr  r   r   r   make_patch_spines_invisible:  s    
z5test_twin_spines.<locals>.make_patch_spines_invisible)r   ry   r  r  )r*   )r  r  Tr   r   r    zb-ry   zr-r  r   r   zg-r   A   r   )r  r6  r-   )r  r$  r  r0   )r   r   r7  r   r   rn  r*   set_positionrm  rm   r<  r=  r   r$   rB  r  r  tick_params)	ro  r   hostZpar1Zpar2r=  r>  Zp3Ztkwr   r   r   test_twin_spines7  s0    rt  ztwin_spines_on_top.pngc                  C   sH  dt jd< dt jd< t } | ddd}tddddgd	d
ddgg}| }|j|d |d d dd |j	|d |d d ddd |j|d |d d dd |j	|d |d d ddd |d |d d d}t } | ddd}| }|jddd|d |j	dddd|d |jddd|d |j	dddd|d d S )Ng      H@r   r  r   r  iL  i  i  r  i-  rY  r  r   g     @@z#BEAED4rl  rF  )r   r  z#7FC97Fr   )r   r  r   r  )r   r$  )r   r  r$  )
r@   r   r   r   r   rL   r   r   rm   r  )r   r   r$  r   r   r   r   test_twin_spines_on_topd  s(    


ru  z(grid_which, major_visible, minor_visible)re   TT)majorTF)r7  FTc                    sh   t jd| d t \}}|j  t fdd|jj	D sFt
tfdd|jjD sdt
d S )NT)rq  zaxes.grid.whichc                 3   s   | ]}|j   kV  qd S r   gridliner   r   tick)major_visibler   r   r    s   z*test_rcparam_grid_minor.<locals>.<genexpr>c                 3   s   | ]}|j   kV  qd S r   rw  ry  )minor_visibler   r   r    s   )r   r   rz  r   r   r  r   r	  rk   
majorTicksr   
minorTicks)Z
grid_whichr{  r|  r   r   r   )r{  r|  r   test_rcparam_grid_minor  s    
r  c                  C   s   t  \} }|  | j  |jjd j s4t	|jdd | j  |jjd j r`t	|jdd | j  |jjd j st	|  | j  |jjd j rt	d S )Nr   FZvisibleT)
r   r   r  r  r   rk   r}  rx  r   r   r   r   r   r   	test_grid  s    



r  c               	   C   s   t  \} }|jdddd |jjd j r2t|jdd |jjd j sTtt 	ddi4 |
  |jdddd |jjd j stW 5 Q R X d S )	NTrv  ra   )resetr9  	labelsizer   rY  rl  rq  )r   r   rr  rk   r}  rx  r   r   r  r   clearr   r   r   r   test_reset_grid  s    r  c                  C   s>   t  } |  }|d |ddddg t| d d S )Nr   r  r   r   r   )r  r   )r   r   r   r  rm   r   rp   r   r   r   r   test_vline_limit  s
    
r  zfv, fh, args)r   r  c              	   C   s   t jd}tjtdd | ||dd W 5 Q R X tjtdd | |d|d W 5 Q R X tjtdd |||dd W 5 Q R X tjtdd ||d|d W 5 Q R X d S )	Nr   z"ymin must be a single scalar valuer/  )yminymaxz"ymax must be a single scalar valuez"xmin must be a single scalar value)rJ   rK   z"xmax must be a single scalar value)r@   r  Znum2daterz   r{   r  )ZfvfhargsZbad_limr   r   r   test_axline_minmax  s    r  c                  C   s   t jddddd\} }|d dddgdddg |d  \}}|d  \}}|dks^t|dksjt|dksvt|dkstd S )	Nr   r    T)r  r  r  r   r   ry   r   r  )r   r   rm   ro   rp   r   )r   r  r  r  r  r  r   r   r   test_empty_shared_subplots  s    r  c                  C   s   dD ]} t jddd\}}|d jd| dd |d  dksBt|d  | ksVtt jddd\}}|d jd| d |d  d	kstqd S )
Nboxdatalimr    T)r  r  r   )
adjustablesharer   r  rE  )r   r   
set_aspect
get_aspectr   Zget_adjustable)r  r   r  r   r   r   test_shared_with_aspect_1  s    r  c                  C   s   t jdddd\} }|d jddd |d ddgddg |d ddgddg t   |d  |d  kszt|d  |d  kstd S )	Nr    T)r  r  r   r   )r  r   ry   r   )r   r   r  rm   r   ro   r   rp   r  r   r   r   test_shared_with_aspect_2  s    r  c            	      C   s  dD ]} t jddd\}}|d jd| d |d jd| d |d ddgd	d
g |d d	d
gddg t   |d  |d  kst|d  |d  kst|jj	|jj
 }|D ]P}| }|j	|j
 }|jj	|jj
 }|| | }t|d
t| d
kstqqd S )Nr  r    T)r  r   r   r  r   r   ry   r   )r   r   r  rm   r   ro   r   rp   Zbbox_inchesrd  r6  get_positionviewLimr  r  )	r  r   r  Z
fig_aspectr   r   
box_aspectZ
lim_aspectr  r   r   r   test_shared_with_aspect_3  s     
r  c                 C   sH   t  \}}t|d|  }|d |d t|jj|jj d S )Nztwin{}r   r    )r   r   r   ry  r  r   bboxextents)r   r   r   r   r   r   r   test_twin_with_aspect  s    

r  c                  C   s   d} d}d}d}t j }| }|| | | | ks>t| |ksNt|||\}| |kslt| |ks|t|d | |kst| |kst|j	dd |
  | | kst| |kstd S )N)r  rV  )      $r  )r  r  FT)Zvisible_only)r@   r   r   r   rm   ro   r   rp   rm  Zrelimr   )r  r  r   r   r   r   r-  r   r   r   test_relim_visible_only
  s&    

r  c                  C   s,   t  } |  }|jdd |jdd dS )z
    tests for issue #1172
    Zlarge)r  out	directionN)r   r   r   rr  r   r   r   r   test_text_labelsize#  s    r  zpie_default.pngc               	   C   sL   d} ddddg}dddd	g}d
}t jdd\}}|j||| |dddd d S )NFrogsZHogsDogsLogsr   r   rZ  ra   yellowgreengoldlightskyblue
lightcoralr   r   r   r   )r  r  r  %1.1f%%Tr[  )exploder  r$  autopctshadow
startangle)r   r   pie)r  sizesr$  r  r  r   r   r   r   test_pie_default-  s      r  Zpie_linewidth_0c                  C   s   d} ddddg}dddd	g}d
}t j||| |dddddid t d | |||d}t  }| }|jdddddddddi|d	 |d t   t jdddddddddi|d	 t d d S )Nr  r   r   rZ  ra   r  r  r  r  r  r  Tr[  r   r   r  r  r$  r  r  r  
wedgepropsrc  )lr,  r#   exr,  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   test_pie_linewidth_09  s>      
   
   r  zpie_center_radius.pngc                  C   st   d} ddddg}dddd	g}d
}t j||| |dddddiddd
 t jdddtdddtdddd t d d S )Nr  r   r   rZ  ra   r  r  r  r  r  r  Tr[  r   r   r   r   )	r  r  r$  r  r  r  r  r  r;  zCenter point)r   r  ->Zarc3)
arrowstyleZconnectionstylesquareZ	lightgrey)Zboxstyler   )r&  r(  rK  r  rc  )r   r  r*  r  r  r  r  r$  r  r   r   r   test_pie_center_radiusZ  s&        

r  zpie_linewidth_2.pngc               
   C   sL   d} ddddg}dddd	g}d
}t j||| |dddddid t d d S )Nr  r   r   rZ  ra   r  r  r  r  r  r  Tr[  r   r    r  rc  r   r  r  r  r   r   r   test_pie_linewidth_2n  s      r  zpie_ccw_true.pngc               
   C   sH   d} ddddg}dddd	g}d
}t j||| |ddddd t d d S )Nr  r   r   rZ  ra   r  r  r  r  r  r  Tr[  )r  r  r$  r  r  r  Zcounterclockrc  r  r  r   r   r   test_pie_ccw_true}  s      r  zpie_frame_grid.pngc                  C   s   d} ddddg}dddd	g}d
}t j||| |dddddiddd
 t j|d d d || |dddddiddd
 t j||d d d | |dddddiddd
 t d d S )Nr  r   r   rZ  ra   r  r  r  r  r  r  Tr[  r   r   r  )	r  r  r$  r  r  r  r  framer  r_   )r   r    )ry   r   rc  r  r  r   r   r   test_pie_frame_grid  s:             r  zpie_rotatelabels_true.pngc               
   C   sH   d} ddddg}dddd	g}d
}t j||| |ddddd t d d S )N)ZHogwartsr  r  r  r   r   rZ  ra   r  r  r  r  r  r  Tr[  )r  r  r$  r  r  r  rotatelabelsrc  r  r  r   r   r   test_pie_rotatelabels_true  s      r  zpie_no_label.pngc                  C   s^   d} ddddg}dddd	g}d
}t j||| |dddd dd	 t d t dd t   d S )Nr  r   r   rZ  ra   r  r  r  r  r  r  Tr[  )r  r  r$  r  r  r  Zlabeldistancer  rc  g333333r  )r   r  r  rd   r2   r  r   r   r   test_pie_nolabel_but_legend  s       
r  c                  C   s   dddg} dddg}t ddd	d
ddd}t j| |d|d\}}}||fD ]}|D ]|}| |d kslt| |d kst| |d kst| |d kst|	 |d kst|
 |d ksTtqTqLd S )Nr  "   rZ  zLong name 1zLong name 2zLong name 3r  r&   r[  anchorr5  rY  )horizontalalignmentverticalalignmentr\  rotation_moder  r   %.2f)r  r  	textpropsr  r  r\  r  r  r   )r  r   r   r  get_har   get_vaget_rotationZget_rotation_modeget_sizer  )r$  r  r  rD  Ztextsr  Ztxr   r   r   test_pie_textprops  s(    

 r  c               	   C   s@   t  \} }tt  |jdddgdddgd W 5 Q R X d S )Nr   r   r   r   r   )r  )r   r   rz   r{   r  r  r   r   r   r   test_pie_get_negative_values  s    r  c               	   C   s6   t  \} }tt |jdgd d W 5 Q R X d S )Nr   r0   	normalize)r   r   rz   r2  r   r  r   r   r   r   test_normalize_kwarg_warn_pie  s    r  c                  C   sr   t  \} }dddg}|j|dd}t|d d jd dk sBt|j|d	d}t|d d jd dksntd S )
Nr   r   Tr  r   r_   g     v@r  F)r   r   r  r  r\  r   )r   r   r0   t1t2r   r   r   test_normalize_kwarg_pie  s    
r  zset_get_ticklabels.pngc                  C   s"  t d\} }ddg}|d td |d |d  |d td |d |d  |d td |d td |d 	ddd	d
gddg   |d 
ddddgddg   |d |d   |d |d   |d 	|d   |d 
|d   d S )Nr    rO   zset_x/yticklabelsr   ra   r   rr   rZ  r#   r/  r  r   Z11Z12Z13Z14)r   r   rm   rL   rQ   r  
set_xticksr   
set_yticksset_xticklabelsZset_yticklabelsru  Z
get_yticksr;  get_yticklabels)r   r   r.   r   r   r   test_set_get_ticklabels  s      r  c                  C   s   t  \} }|td |jtdd  |jdd |jdd dD  t 	  dd |j
 D }|d	d
dddgkstd S )Nra   r   r   r  c                 S   s   g | ]}|qS r   r   r   r   r   r   r     s     z.test_subsampled_ticklabels.<locals>.<listcomp>Z
bcdefghijkc                 S   s   g | ]}|  qS r   rr  r  r   r   r   r     s     rZ  r/  r]  r  r  )r   r   rm   rL   rQ   rk   	set_ticksr  set_ticklabelsr   get_ticklabelsr   )r   r   r  r   r   r   test_subsampled_ticklabels
  s    r  c               	   C   sX   t  \} }|td |jddg tt	 |j
dddg W 5 Q R X d S )Nra   r   r  rr   rZ  r#   )r   r   rm   rL   rQ   rk   r  rz   r{   r  r  r   r   r   r   test_mismatched_ticklabels  s
    r  c                  C   s<   t  \} }|ddgddg |ddg |g  d S )Nr   r    )r   r   r  r  r  r   r   r   r   test_empty_ticks_fixed_loc  s    r  zretain_tick_visibility.pngc                  C   sJ   t  \} }t dddgdddg t j| dd |jdd	dd
 d S )Nr   r   r    r_   r   Fr  r-   re   r  r9  length)r   r   rm   Zsetpr  rr  r   r   r   r   test_retain_tick_visibility&  s    r  c                  C   s   t  \} }dd }|jt | |dddddg |dd	 |jj	  d
d |j
 D }|dddddgks|td S )Nc                 S   s   | dkrdS dS )Nr   
unit valuer   r   r   r   r   r   formatter_func4  s    z.test_tick_label_update.<locals>.formatter_funcr_   r   r   r    ry   r  r  c                 S   s   g | ]}|  qS r   rr  ry  r   r   r   r   =  s     z*test_tick_label_update.<locals>.<listcomp>r   r  )r   r   rk   r   r   r  r<  r   r  r   r  r   )r   r   r  Z
tick_textsr   r   r   test_tick_label_update.  s    r  zo_marker_path_snap.pngH   c                  C   s~   t  \} }|d tddD ]$}|jddgtd| d|d q tdddD ]$}|jd	d
gtd| d|d qTd S )Nr   r   r   r    rv   )r  ra   rT  ry   r   )r   r   r   r   rm   rL   rf   r   )r   r   r  r   r   r   test_o_marker_path_snapA  s    
"r  c                  C   s  ddg} d}t | d }t| }t| }tdd\}}||  |d | dks\t| ||| d  ||| d  fkst|	 ||| d  ||| d  fksttdd\}}||  |dd | dkst| ||| d  ||| d  fkst|	 ||| d  ||| d  fksFttdd\}	}
|
|  |
jd	dd
 |
 dkst|
 ||| d	  ||| d	  fkst|
	 ||| d  ||| d  fkstd S )Nr   ra   r  r   r  r   r    )r   r    皙ɿr   )r  r   )
r  r  r  r   r   rm   r   r   ro   rp   )r$  rJ   rK   r  r  r  r   r  r   r+  r   r   r   r   test_marginsL  sF    





r  c                  C   sN   t jd t \} }|ddgddg |jddd | dksJtd S )Nr	  r   r    r   r   )r  Zxmarginr   )	r   r   r   r   r   rm   rn   ro   r   r   r   r   r   test_set_margin_updates_limitsp  s
    r  c                  C   s&   t  \} }|d |dg d S Nr   )r   r   r  r   r   r   r   test_length_one_histx  s    
r  c                  C   s8   dgd } t dd\}}|| |  |t  d S )Nra   r   r   )r   r   r  r}  r{  r|  )Zmylistr   r   r   r   r   test_pathological_hexbin~  s    
r  c                  C   s(   t  \} }|jddgddgd d d S )Nr   r    rl  rW  r   r   r   r   test_color_None  s    r  c                  C   s6   t  \} }|jddgddd }d| ks2td S )Nr   r   rq  r  )r   r   rm   r  r   )r   r   r-  r   r   r   test_color_alias  s    r  c                  C   s4   t  \} }|jtdgd tdd |  d S )Nr   r   ro  )r   r   r  r   r2   r   r   r   r   test_numerical_hist_label  s    r  c                  C   sN   t  \} }d}d}|dd|dg}|jtdgd |d |  d S )Ns    很漂亮, römän chäráctèrss   שלוםzutf-8zhi aardvarkr   ry   ro  )r   r   decoder  r   r2   )r   r   rr   rZ  r  r   r   r   test_unicode_hist_label  s    r  c                  C   sJ  t jdd } t \}}||  |j  |jj	 }|jj
 dksPt|j  |j  |jj	 }|d |d kr|d |d kst|jj
 dkstt \}}||  |j  |jj	 }|jj dkst|j  |j  |jj	 }|d |d kr,|d |d ks0t|jj dksFtd S )	Nra   g^ 9^;r;   r   r   r*   r&   r:   )rL   rM   r   r   rm   r  r   r   Z
offsetTextr  Zget_horizontalalignmentr   Z
tick_rightrk   Zget_verticalalignmentrl   )r$  r   r   beforeafterr   r   r   test_move_offsetlabel  s*    



$



(r  zrc_spines.pngc               	   C   s0   ddddd} t |  t  W 5 Q R X d S )NF)zaxes.spines.leftzaxes.spines.rightzaxes.spines.topzaxes.spines.bottom)r@   r   r   r   )r+  r   r   r   test_rc_spines  s    r  zrc_grid.pngc               
   C   sl   t  } ddd}ddd}ddd}|||g}t|dD ],\}}t| | dd| W 5 Q R X q:d S )NTre   )rq  zaxes.grid.axisr0   r-   r   ry   )r   r   r  r@   r   r   )r   Zrc_dict0Zrc_dict1Zrc_dict2r0  r   r+  r   r   r   test_rc_grid  s    
r  c               	   C   s   ddddd} t j| d t  }|ddd}|j}|j}|jd rLt|jd sZt|jd rht|jd svt|jd st|jd rt|jd st|jd rtW 5 Q R X d S )NFT)xtick.bottom	xtick.top
ytick.leftytick.rightr  r   tick1Ontick2On	r   r   r   r   rk   r   Z_major_tick_kwr   Z_minor_tick_kwr/  r   r   ZxaxZyaxr   r   r   test_rc_tick  s"     r  c               	   C   s   ddddddddd} t j| d t  }|ddd}|j}|j}|jd rTt|jd sbt|jd rpt|jd s~t|jd rt|jd st|jd rt|jd stW 5 Q R X d S )NTF)r  r   r  r  zxtick.minor.bottomzxtick.major.bottomzytick.major.leftzytick.minor.leftr  r   r  r  r  r  r   r   r   test_rc_major_minor_tick  s*       r  c                  C   s   t d} t ddddg}t \}}|| |d |d | |  }}t 	|t 	|ksjt
| dkszt
t|jd	d
jd t|jdd
jd d S )Nr   r   r  r  r%  mor  r   T)original)      ?r   rS  rS  F)g333333?r   g      ?rS  )rL   rQ   r   r   r   rm   r  ro   rp   rL  r   r  r   r  r  )r0   r-   r   r   rc   rd   r   r   r   test_square_plot  s     

  r  c                	   C   s   t t td  W 5 Q R X t t td d  W 5 Q R X t t ttdtd W 5 Q R X t t. ttddtdddf W 5 Q R X d S )Nr  rJ  r   r|  r_   r   )	rz   r{   r  r   rm   rL   rH  rQ   rh   r   r   r   r   test_bad_plot_args  s    "r  zxy, clsr   ))ry   rv  )r    r  r  r  )r   r   r5  )ry   r   c                 C   s,   t  \}}t|j| |f |ks(td S r   )r   r   r  
pcolorfastr   )r&  r$  clsr   r   r   r   r   test_pcolorfast'  s    r  c                  C   s   t jddddd\} }|d d |d d |jD ]$}| dksLt| dks8tq8|d d |d d |jD ]$}| dkst| dkstqd S )Nr    Tr  r   r  r   r  r  )r   r   r   r  r  Z
get_yscaler   Z
get_xscaler   r  r   r   r   r   test_shared_scale:  s    

r  c                	   C   sH   t t tjdd W 5 Q R X t t tjdd W 5 Q R X d S )NTr  r   )rz   r{   r|   r   r   r   r   r   r   test_shared_boolL  s    r  c                   C   s   t tddg dS )z4Violin plot should handle point mass pdf gracefully.r   N)r   rL  rL   r   r   r   r   r   test_violin_point_massS  s    r  c               
   C   s   t dtdgt dtdg } t dddddddgdddddgdddddggtdtdd g}t d|}t d|}t dg gt dg g t dg d g t dg d g }| | }| | }| | | }||||S )	Nr0   r   r-   errr   )r    r   r  r  )r
   rL   rQ   rf   )Zbase_xyZ
err_cyclerZxerr_cyZyerr_cyemptyZ	xerr_onlyZ	yerr_onlyZboth_errr   r   r   generate_errorbar_inputsX  s*    $

r  r?  c                 C   s    t  }|jf | }|  d S r   )r   r   rn  remove)r?  r   Zebr   r   r   test_errorbar_inputs_shotgunn  s    r  Zdash_offsetc                  C   sT   t  \} }tdd}t|}tdddD ] }|j||| |dfddd q.d S )	Nr   ra   r   r    ra   ra   r   r  )r  r   r   )r   r   rL   r   Z	ones_liker   rm   )r   r   r0   r-   r  r   r   r   test_dash_offsetu  s
    
r  c                  C   s   t  \} }|jddd |j }|d d| j ks:t|jddd |j }|d dksbt|jdd d |j }|d tjd d | j kstd S )	Naardvarkr  )padr|  g?r  zaxes.titlepadg      R@)	r   r   r  ZtitleOffsetTransZ
get_matrixrN  r   r@   r   )r   r   rl  r   r   r   test_title_pad~  s    


r  c               	   C   s   t  \} }dt jd< |d |jddd |jddd d|jddksPtd|jddksdtd|jddksxttt |jdd W 5 Q R X tt |jddd W 5 Q R X d S )	Nr  zaxes.titlelocationr  r;   r'   r*   rI  Zfail)	r   r   r   r  Z	get_titler   rz   r{   r  r   r   r   r   test_title_location_roundtrip  s    

r  z
loglog.pngc                  C   sN   t  \} }tdd}|j||d dd |jddd |jd	dd
d d S )Nr   r  ry   r   r   rT  r    )r  r6  r   r7  )r  r6  r9  )r   r   rL   rQ   r  rr  )r   r   r0   r   r   r   test_loglog  s
    r   new_apiztest_loglog_nonpos.pngc              
   C   s>  t dd\}}tdd}|d }d|d< d|d< t|D ]\\}}}dd	d
g| }dd	d
g| }	| r||	kr|r|j||d d|d q|j||d dd n8|j||d dd |r|jd|d |	r|jd|	d q>i }
|r||
d< |	r|	|
d< |
r
t	t
nt " |j||d fddi|
 W 5 Q R X q>d S )Nry   r   r  g      rv  r  r   rD  Zclipr   r    )r   nonpositiver   r   )r"  ZnonposxZnonposyr   )r   r   rL   rQ   Zndenumerater  r   r  rz   r2  r   r   )r!  r   r  r0   r-   r   r  r   ZmcxZmcykwsr   r   r   test_loglog_nonpos  s6    r$  c                  C   s  t  \} }|ddddg | d dks2tt  \} }|ddddgddddg | d dksntt  \} }|ddddgddddg | d dkstt  \} }|t	
d | dkst| dkstt  \} }|t	
d | dkst| dks&tt  \} }|t	d | d dksXtt  \} }|t	
d | dkst| dkstd S )	Nr   r   r    ry   r  r  ra   )r  g      #@)r   r   rm   Z
get_yboundr   r  r  Z
get_xboundr  rL   rH  r  r  rQ   rj   r   r   r   r   test_axes_margins  s0    r%  r0   r-   )r  c                 C   s    dd }dd }||d| j  S )Nc                 S   s<   |   }|  | dd | j  }|d dks8td S Nr   r   r_   r"  )r   r  r<  rk   get_major_locatorr   r   r   rk  r   r   r   	_helper_x  s
    z&shared_axis_remover.<locals>._helper_xc                 S   s<   |   }|  | dd | j  }|d dks8td S r&  )r   r  r=  r   r'  r   r(  r   r   r   	_helper_y  s
    z&shared_axis_remover.<locals>._helper_yr   )param)requestr)  r*  r   r   r   shared_axis_remover  s    r-  r   r   subplots_sharedr   c                 C   s   | j dkrt }| }nj| j dkr4t \}}nR| j dkrbtjddddd\}}|d d }n$| j dkrt }|d	d	d
d
g}||fS )Nr   r   r.  r    r	  r  r   r   r   rF  )r+  r   r   r   r   r   )r,  r   r   r9  r   r   r   shared_axes_generator   s    




r/  c                 C   s   | \}}|| d S r   r   )r/  r-  r   r   r   r   r   test_remove_shared_axes  s    r0  c                  C   s`   t jddddd\} }|d d }|d d  }|  |dd t|d d  | d S )Nr    r	  r  r   r   r   )r   r   ro   r  r<  r   )r   r9  r   Z	orig_xlimr   r   r   test_remove_shared_axes_relim  s    r1  c                  C   s   t ddd} t j| j| jf}tjddddd\}\}}|dd	 |dd	 |	| | | |	| | | |
 s|
 rt| s| rt| |   krd
ksn t| |   krd
ksn td S )Nir[  r  r    r   Tr  r  )r2  r  )rL   rQ   rM   Zrandom_sampler  r   r   r<  r=  r  r   r   r   ro   rp   )r  r+  r   r   r   r   r   r   test_shared_axes_autoscale   s    "r3  c                  C   s   t  \} }|j jdd |dd |d | j  t	|j  dksVt
|dd | j  t	|j  dkst
d S )NrE  r  r   r  rc  r    )r   r   r   r'  Z
set_paramsr<  r  r  r   r  r   r=  r   r   r   r   test_adjust_numtick_aspect1  s    


r4  zauto_numticks.pngc                   C   s   t dd d S )Nr   )r   r   r   r   r   r   test_auto_numticks=  s    r5  zauto_numticks_log.pngc                  C   s.   t  \} }dtjd< |ddgddg d S )NZround_numbersaxes.autolimit_modeg#B;g     j@gؗҜ<ra   )r   r   r@   r   r  r   r   r   r   test_auto_numticks_logC  s    
r7  c                  C   s   t  \} }|g d d S )N)r   r   )r   r   r  r   r   r   r   test_broken_barh_emptyK  s    r8  c                  C   s   t  \} }tdddddd}||tjddfgddg}| d jd t|ks^t	| d jd	 t|d
 kst	dS )z9Check that timedelta works as x, dx pair for this method.r  r  r  r   r   r  r    r  r    r   gUUUUUU?N)
r   r   r]  r  r-  r  Zverticesr_  r`  r   )r   r   Zd0ppr   r   r   test_broken_barh_timedeltaP  s
     r;  c                 C   sD   | j ddd}td}tjdd}t \}}|||| d S )Nz
2000-01-01ra   )r  r  rr  r  )r  rL   rQ   rM   r   r   r   r  )r  timedepthr$  r   r   r   r   r   test_pandas_pcolormeshY  s
    
r>  c                 C   sp   t jdddd}t t tt|}| ||d}t }|t |j	d dk 
 }|jdd	|d
 d S )Nz2005-02z2005-03rW  r  )r  rm  r    r   r  rm  rs  )rL   rQ   r   r   r   r  r  r   r   r  rX  rm   )r  r  rm  r  r   Zwithout_zero_indexr   r   r   test_pandas_indexing_datesb  s    r?  c                 C   sP   | j tjjddddddgddd	d
dgd}t \}}|jdddd|d d S )N)r   r   rF  r0   r-   ZxeZyer   r    ry   r   r   )columnsr  r  )r  rL   rM   uniformr   r   rn  r  r   r   r   test_pandas_errorbar_indexingm  s    
rB  c                 C   s>   |  dddgdddgd}t \}}||j|d  d S )	Nr   r   r  rv  r   r    )ZXXYYrC  )r  r   r   rm   r  r  r   r   r   test_pandas_index_shapeu  s    rD  c                 C   sH   | j ddddddddddg
d}|jdd  }t \}}|| d S )Nr   r    ry   r   r   rs  )r  Zilocr   r   r  )r  Zser_1Zser_2r   r   r   r   r   test_pandas_indexing_hist{  s     rE  c                 C   sh   |  tdtdd}td\}}|j|j|d dkdf |j|d dkdf dd |j  d S )Nr    rr  r   rr   rZ  r  r  )r  r   r   r   r  r(   r  r   r  r   r   r   test_pandas_bar_align_center  s    rF  c                  C   s   t  } | jjdddd | jjd jdks0t| jjd j dksJt| jjd j	
 dksdt| jjd j	 dks~td S )	Nr   rY  r  )r  
labelcolorr  r   r  r  r  )r   r   r   set_tick_paramsr}  _sizer   	tick1liner  label1r  )Zaxis_1r   r   r   .test_axis_set_tick_params_labelsize_labelcolor  s    
rL  c                  C   s   t  } | jddddd | j| jfD ]d}|jd j dksBt|jd j	 dksZt|jd j
 dksrt|jd j dks&tq&d S )NrZ  r   r   r  )Z
grid_colorZgrid_linewidthZ
grid_alphaZgrid_linestyler   r/  )r   r   rr  rk   r   r}  rx  r  r   Zget_linewidthZ	get_alphaget_linestyle)r   r  r   r   r   test_axes_tick_params_gridlines  s    
rN  c                  C   s   t  } | jdddd | jdddd | jjd j dksBt| jjd j dks\t| jj	d j dksvt| jj	d j dkstd S )NFTrv  )Z	labelleftZ
labelrightr9  r7  r   )
r   r   rr  r   r}  rK  r   r   label2r~  r  r   r   r    test_axes_tick_params_ylabelside  s    rP  c                  C   s   t  } | jdddd | jdddd | jjd j dksBt| jjd j dks\t| jj	d j dksvt| jj	d j dkstd S )NTFrv  )labeltoplabelbottomr9  r7  r   )
r   r   rr  rk   r}  rK  r   r   rO  r~  r  r   r   r    test_axes_tick_params_xlabelside  s    rS  c                  C   s4   t   } | jtdd d\}| dks0td S )NrW   rj  rh  )r   r   r   rm   r   rM  r   )r   lnr   r   r   test_none_kwargs  s    rU  c                  C   s\   ddddg} t jtj| tjdddddgdd	}t|j| D ]\}}|jd |ks<tq<d S )
Nr   r   r    ry   r  r   r   r  r  )	r   r  rL   r   Zuint8r;  r   r&  r   )r  rZ  r   r0   r   r   r   test_bar_uint8  s    $rV  zdate_timezone_x.pngr   c                  C   sj   dd t dD } tjdd tddd tj| dgd dd	 tddd tj| dgd d
d	 d S )Nc              
   S   s(   g | ] }t j d dd|tjddqS   r       Canada/Easternr   tzinfor]  r  tzZgettzr   r   r   r   r     s   
z(test_date_timezone_x.<locals>.<listcomp>ry   r  r5  r  r    r   rZ  )r^  UTCr   r   r   r   ry  Z
time_indexr   r   r   test_date_timezone_x  s    rc  zdate_timezone_y.pngc                  C   sr   dd t dD } tjdd tddd tjdgd | dd	d
d tddd tjdgd | dd	d
d d S )Nc              
   S   s(   g | ] }t j d dd|tjddqS rW  r]  r   r   r   r   r     s   
z(test_date_timezone_y.<locals>.<listcomp>ry   r_  r  r    r   rZ  FT)r^  Zxdateydater`  ra  rb  r   r   r   test_date_timezone_y  s       re  zdate_timezone_x_and_y.pngc                     sn   t jj  fddtdD } tjdd tddd tj| | dd	d
 tddd tj| | dd	d
 d S )Nc              	      s    g | ]}t j d dd| dqS )rX  r    rY  r[  r]  r   r`  r   r   r     s   z.test_date_timezone_x_and_y.<locals>.<listcomp>ry   r_  r  r    r   r`  T)r^  rd  z
US/Eastern)r]  timezoneutcr   r   r   r   ry  rb  r   rg  r   test_date_timezone_x_and_y  s    
rj  zaxisbelow.pngc                  C   s   t  jdddd} d}t| |D ]r\}}|jddddd tjd	d
d}|| |jdddd |j	ddddd |j
d d  d || q"d S )Nry   T)r  r  r   )Fr-  Tr  ra   rl  r"  r%  rk  rl  r#   rh  )r   rx   r   F)r&   r:   r;   r*   )r   r   r   r;  rm   r"  r<  r!  r  rr  rn  rm  Zset_axisbelow)r  settingsr   Zsettingcircr   r   r   test_axisbelow  s    
 rm  c            	      C   s   t jd t jdd\} }| }|d}|d}| j  | j	 }|
|j}|
|j}|| }t|ds|td S )Nr~   r  )rN  Xlabel2Titlery   )r   r   r   r   r   r   r  r  r   get_rendererget_window_extentr  r  rL   iscloser   )	r   r   r   Zxlabel2r  rendererZbbox_y0_titleZbbox_y1_xlabel2Zy_diffr   r   r   test_titletwiny  s    



rt  c                  C   sx   t  \} }| jdd | }|d |d |d d}|j| | j	 }|
| |j |ksttd S )NrF  )r&   ZXlabelrn  ro  )r   g(\?)r   r   r7  r   r   r  r  rq  r  rp  Z_update_title_positionr  r   )r   r   r   r   rs  r   r   r   test_titlesetpos)  s    




ru  c                  C   sP   d t jd< t \} }|jd |d | j  |j	
 d dksLtd S )Naxes.titleyr&   
xlabel topr   p=
ף?)r   r   r   r   rk   rq   r  r  r   r  r  r   r   r   r   r   test_title_xticks_top8  s    


ry  c                  C   sX   d t jd< t \} }|jdddddd |d | j  |j	 d dksTt
d S )Nrv  r0   Tr  r:   r&   rR  rQ  rw  r   rx  )r   r   r   r   rr  r  r  r   r  r  r   r   r   r   r   test_title_xticks_top_bothB  s    
   

r{  c                  C   sd   d t jd< t } | ddddg}|jdddddd |d	}| j  |	 d
 dks`t
d S )Nrv  r   r  rF  r   r0   Trz  Boor   r   )r   r   r   r   r   rr  r  r  r   r  r   )r   r   ttr   r   r   test_title_no_move_off_pageM  s    
   

r~  c                  C   sD   t  \} }|dddg |jjdd |j  dks@td S )N   @A   eA   FArY  )rG  )r   r   rm   r   rH  get_offset_textr  r   r   r   r   r   test_offset_label_colorZ  s    r  c                  C   sb   t  \} }|dddg |jjddd |j  s>t|jjdd |j  r^td S )Nr  r  r  FT)Zlabel1Onlabel2On)r  )r   r   rm   r   rH  r  r   r   r   r   r   r   test_offset_text_visibleb  s    r  c                  C   s6   t  \} }|dtddg d  | j  d S )Nr   r   g-q=gqىE)r   r   rm   rL   r   r  r   r   r   r   r   test_large_offsetk  s    r  c                  C   s^   t  \} }dd tdddD }tddt|}tddt| }}||||| d S )Nc              	   S   s   g | ]}t  d ddd|qS r  rv  r   r  rf  r  r   r   r   r   s  s     z#test_barb_units.<locals>.<listcomp>r   rO  ra   r   r  )r   r   r   rL   r   r  Zbarbsr   r   r  r-   uvr   r   r   test_barb_unitsq  s
    r  c                  C   s^   t  \} }dd tdddD }tddt|}tddt| }}||||| d S )Nc              	   S   s   g | ]}t  d ddd|qS r  rf  r  r   r   r   r   {  s     z%test_quiver_units.<locals>.<listcomp>r   rO  ra   r   r  )r   r   r   rL   r   r  Zquiverr  r   r   r   test_quiver_unitsy  s
    r  c                  C   sn   t j} t \}}tdD ]N}|td\}|tdtd}|D ] }| | | | ksFt	qFqd S )Nr   ry   )
r  to_rgbr   r   r   rm   r  r  r  r   )r  r   r   r  rT  Zbrsbrr   r   r   test_bar_color_cycle  s    r  c                  C   s  t dd\} \}}|ddgddg |ddgddg |jjddd |jjddd |jddD ]}| dkshtqh|j	ddD ]}| dkstq|j
d	d
d |j
ddd |jddD ]}| d
kstq|j	ddD ]}| dkstqd S )Nr   r    r   re   r   )r9  r\  r[  r8  r0   5   )r  Zlabelrotationr-   r   )r  r\  rv  )r   r   rm   rk   rH  r   r;  r  r   r  rr  )rk  r   r   textr   r   r   test_tick_param_label_rotation  s    r  c            	      C   s  t  \} }tdD ]D}|tdtd}td|}t| 	 t|kst
qtddD ]D}|tdtd}td|}t| 	 t|ksdt
qdtd}dD ]<}|jtdtdf|di}t| 	 t|kst
qtd}tddgddD ]r\}}|jtdtdf|di}td|}t| 	 t|ksbt
t| 	 t|kst
qd S )	Nry   zC{}r  r  )r   Z
facecolorsr   r   r  )start)r   r   r   r  r  r  ry  tupler  Zsqueezer   r  r  r  )	r   r   r  cctargetalZedge_targetelZface_targetr   r   r   test_fillbetween_cycle  s&    

r  c                  C   s   dt jd< t  \} }d}|| |ddgddg | \}}|j }|||g\}}|ddg\}}	|	| | }
t	||
 ||
 g||	g d S )Nr$  r6  r  ra   r   )
r   r   r   Zset_xmarginr  ro   rk   r  r   r   )r   r   marginZxlim0Zxlim1r   Zxlim0tZxlim1tZx0tZx1tr  r   r   r   test_log_margins  s    


r  c               	   C   s   d} t | t |  }}t | d }t \}}tt |j|||d W 5 Q R X d}|j|||d |j|||g|  d d S )Nr   r   r  )r   r   r   )rL   rQ   r   r   rz   r{   r  r!   )r  r0   r-   r$  r   r   Zc_rgbr   r   r   test_color_length_mismatch  s    r  c                   C   s   t jdgdd t   d S )Nr   ZLabelro  )r   r  r2   r   r   r   r   test_eventplot_legend  s    r  c                  C   st   t  \} }|tdd |jddtddd |jddgddgdd\}}| |   krjdkspn td S )Nr   r   r   )r;   rd  )r   r   r   r  r  )r   r   r  r   r  r  r   )r   r   Zrect1rect2r   r   r   test_bar_broadcast_args  s
    r  c                	   C   s   t ddgddg tt t tj W 5 Q R X tt t tj W 5 Q R X tt t 	tj W 5 Q R X tt t 	tj W 5 Q R X d S )Nr   r   )
r   rm   rz   r{   r  rc   rL   r  r  rd   r   r   r   r   test_invalid_axis_limits  s    r  r  r  r   r  c                 C   s:   t  }|ddddg ||  || |  d S )Nr   r    ry   r   )r   r   rm   r   r  r   )r  r  r   r   r   r   test_minorticks_on  s
    

r  c                  C   sv   t  \} }|dd | }|ddgddg t  \}}|dd |ddgddg t|jj|jj d S )Nr   r    r   r   )r   r   r  r   rm   r   r  Z	intervalx)r   r   Zxtwinr  r   r   r   r   test_twinx_knows_limits  s    r  c                   C   s   t jddgddgddd d S )Nr   r   ri  )r  r   )r   rm   r   r   r   r   test_zero_linewidth
  s    r  c                  C   s<   t  \} }|jg g g dd |jg g g dd |  d S )Nzempty y)r  r$   zempty x)r  r$   )r   r   rn  r2   r   r   r   r   test_empty_errorbar_legend  s    r  c                 C   s\   t ddd}dd |D }dd |D }dd |D }|  || | || d S )Nr  ra   r   c                 S   s0   g | ](}d |d  d|d   d|  d qS )g@ry   r  r    g\(\@      @r   r   r   r   r   r     s     z%test_plot_decimal.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   r   r  r   r   r   r     s     c                 S   s   g | ]}t |qS r   r   r  r   r   r   r     s     )rL   rQ   r   rm   )r6   r7   r  r  r0   r-   r   r   r   test_plot_decimal  s    r  c                 C   s0   |   jddddd |  jddddd d S )Nr   rv   r   r   )r  r  r  )r   rm   )r6   r7   r   r   r   test_markerfacecolor_none_alpha#  s    r  c                  C   sn   dt jd< dt jd< t  \} }|| j }|d || j }|j|jk sZt|j	|j	k sjtdS )z5Test that tick padding gets turned off if axis is offr  zxtick.directionzytick.directionoffN)
r   r   r   get_tightbboxr  rp  r  r  r   r  r   r   bbbb2r   r   r   test_tick_padding_tightbbox)  s    


r  c                  C   s0  d\} }t jtdd| |tdd|  | f \}}t |d t d||  t |  }t \}}||||ddddf  |d |	  dd	g}d
dg}|d |d |d |d  |d |d  g}	|j
|	d\}
}|dkst|j  t ddgd	dgg}t |
  |ks,tdS )z:
    Ensure that inset_ax argument is indeed optional
    r  r  r   r   ra   Nr_   r   r   333333@r    r  r   )boundsr   )rL   mgridr  r   r   r   r   r  r  apply_aspectindicate_insetr   r  r   r   r	  get_bbox
get_points)dxdyr-   r0   r?  r   r   rc   rd   r  rec
connectorsxxr   r   r   
test_inset5  s&    
*
,

r  c                  C   s  d\} }t jtdd| |tdd|  | f \}}t |d t d||  t |  }t \}}||||d dd df  |d |	  |
ddddg}||||d dd df  |d	d
g |ddg ||  ||\}}	t|	dkst|j  t d	dgd
dgg}
t |  |
ksNtt ddgddgg}
t jj|  |
dd d S )Nr  r   r   ra   r_   r   r  gffffff?r   r  r    r  r   r   g=
ףp=?gKXc'?g(\?g?g-C6?Zrtol)rL   r  r  r   r   r   r   r  r  r  
inset_axesr<  r=  r  Zindicate_inset_zoomr  r   r  r   r   r	  r  r  r   r   r  )r  r  r-   r0   r?  r   r   Zaxin1r  r  r  r   r   r   test_zoom_insetR  s:    
*




  r  
x_inverted
y_invertedc                 C   s  t dd\}\}}td}|||d | r8|  |rD|  |ddddg|\}}|\}}	}
}| rpdnd}|r|dnd}||
jd |jd   dkst	||jd |	jd   dkst	||	jd |jd   dkst	||jd |
jd   dkst	d	S )
zR
    Test that the inset lines are correctly located with inverted data axes.
    r   r    ra   rv   r   r   r_   r   N)
r   r   rL   rQ   rm   r  r  r  r  r   )r  r  r   r   r   r0   r  r  Z
lower_leftZ
upper_leftZlower_rightZupper_rightZsign_xZsign_yr   r   r   test_indicate_inset_inverteds  s    
   r  c                  C   s   t  \} }|d |jddddgdd t| jdsBt|d |jddddgdd t| jdsxt|d |jddddgd	d t| jdstd S )
Nr  r   r  re   r8  r   r	  r'  active)	r   r   r  rq  rL   r<  r  r6  r   r   r   r   r   test_set_position  s    


r  c                  C   sd   t  \} }|jj| j }|ddd dd |jj| j }tj	j
| | dd d S )N)r  r  r  r  inFgư>r  )r   r   rn  r:   rq  r  rp  Z_set_view_from_bboxrL   r   r   r  r  r   r   r   !test_spines_properbbox_after_zoom  s      r  c                     sX   G dd dt jj G  fdddt jj } | t jjj < t j }| |ksTtd S )Nc                   @   s   e Zd ZdS )z&test_cartopy_backcompat.<locals>.DummyN)r  r  r  r   r   r   r   Dummy  s   r  c                       s   e Zd Z ZdS )z-test_cartopy_backcompat.<locals>.DummySubplotN)r  r  r  Z_axes_classr   r  r   r   DummySubplot  s   r  )r@   r  r  ZSubplotBaser  Z_subplot_classesr  r   )r  ZFactoryDummySubplotr   r  r   test_cartopy_backcompat  s
    r  c                  C   sH   t  \} }t|  |tjdd | j }tj	|
|jd d S )Nr   r|  i  )r   r   r   r  rL   rG  r  rp  r   r   r  r6  )r   r   rs  r   r   r   test_gettightbbox_ignore_nan  s
    
r  c              	   C   sj   t dd}| jtjjdd|d}| jtjjdd|d}| jddddddddg|d}t||| d S )Nra   r  r  rF  r  r   r   )r   r  rL   rM   rA  r   r!   )r  r  r0   r-   r#   r   r   r   "test_scatter_series_non_zero_index  s
    
r  c                   C   s"   t g g  t jg g g g d d S )N)r,  r#   )r   r!   r   r   r   r   test_scatter_empty_data  s    r  zannotate_across_transforms.pngc               	   C   s   t ddd} t |  t |  }tjdd\}}|| | |ddddg}|d	 |j	
d
 |j
d
 |jd| d |d f|jd|jtddd d S )Nr   ra   r  )gQ@ry   r  r  r   r   r   Fr   r_  r  r  )r  )r&  r'  r(  r)  rK  )rL   r   r  r   r   r   rm   r  r  rk   rm  r   r*  Z	transDatar   r  )r0   r-   r   r   Zaxinsr   r   r   test_annotate_across_transforms  s    
 r  zsecondary_xy.pngc                  C   s   t jddddd\} }dd }t|D ]\}}|tddtdd |d	krZ|j}n|j}|d
||fd |ddd dd fd |ddd dd fd |d q&d S )Nr   r    ra   r   T)r  rZ  c              
   S   s,   t jdd d|  W  5 Q R  S Q R X d S Nr  r  r   rL   r  r  r   r   r   invert  s    z!test_secondary_xy.<locals>.invertr  r   r   Z	functionsr  c                 S   s   d|  S Nr    r   r  r   r   r   r    r  z#test_secondary_xy.<locals>.<lambda>c                 S   s   | d S r  r   r  r   r   r   r    r  r  c                 S   s   | d S r  r   r  r   r   r   r    r  c                 S   s   | d S )Nr   r   r  r   r   r   r    r  rF  )r   r   r  rm   rL   rQ   secondary_xaxissecondary_yaxis)r   r  r  nnr   secaxr   r   r   test_secondary_xy  s    r  c               	   C   s   t  \} }|tddtdd tt |jddd d W 5 Q R X tt |d W 5 Q R X tt |	d W 5 Q R X d S )	Nr    r  r   c                 S   s   d|  S r  r   r  r   r   r   r    r  z%test_secondary_fail.<locals>.<lambda>r  r*   r:   )
r   r   rm   rL   rQ   rz   r{   r  r  r  r   r   r   r   test_secondary_fail  s    r  c                  C   sv   t jdd\} }|tddtdd dd }|jd||fd | j  | d	 t	|
 jd
dddg d S )Nr  r  r    r  c              
   S   s,   t jdd d|  W  5 Q R  S Q R X d S r  r  r  r   r   r   r    s    z%test_secondary_resize.<locals>.invertr&   r  )rv  r   r
  r   rS  )r   r   rm   rL   rQ   r  r  r   r!  r   r  r  )r   r   r  r   r   r   test_secondary_resize  s    

r  c                  C   s   t jdd\} }|tddtdd dd }|jd||fd}t|j t	j
s\t|  t|j t	jszt|d	 t   t|j t	jst|d
 t   t|j t	j
std S )Nr  r  r    r  c              
   S   s,   t jdd d|  W  5 Q R  S Q R X d S r  r  r  r   r   r   r    s    z'test_secondary_minorloc.<locals>.invertr&   r  r   r  )r   r   rm   rL   rQ   r  r   Z_axisZget_minor_locatorr   ZNullLocatorr   r   ZAutoMinorLocatorr   r   Z
LogLocator)r   r   r  r  r   r   r   test_secondary_minorloc	  s*    





r  c                  C   sT   t  \} }|d |d}|jt  | j	  t
|j tjsPtd S )Nr   r&   )r   r   r   r  rk   r   r   ZScalarFormatterr  r   r   r   r   )r   r   r  r   r   r   test_secondary_formatter!  s    


 r  c                 C   sh  | j   | j  }g }t|j|jgD ]P\}}||}|rntj|j	|j
f|j|jdddddd}| | ||g7 }q(g }tddd	d
gD ]R\}}	|j|	 |}tj|j	|j
f|j|jdddddd}
| |
 ||g7 }q| }tj|j	|j
f|j|jdddddd}| | |}||}tj|j	|j
f|j|jdddddd}| | |}||||fS )zS
    Helper for the tests below that test the extents of various axes elements
    r  r-   r   Nry   )r6  rd  r   r   r   r   r  r:   r&   r;   r*   r   r   r  r    rY  r   )r  r   rp  r  rk   r   r  r   r#  r  r  r6  rd  r   rn  rq  )r   r  rs  bbaxisr  Zaxxr  Zaxisrbbspinesrr   Zspinerr  bbaxr  bbtbr   r   r   color_boxes+  sx    



     

     

     


     
r  c               	   C   sz  t ddi> tjddd\} }| j  t|  t| |\}}}}W 5 Q R X dddd	gd
dddgg}t|D ]*\}}tj	j
||  }	t|j|	jdd qpddddgddddgddddgddddgg}t|D ]*\}}tj	j
||  }	t|j|	jdd qddddg}tj	j
| }	t|j|	jdd ddddg}tj	j
| }	t|j|	jdd | | jj}
t|
| jdd d S )N_internal.classic_modeFr  r  r  rN  r  g     ^@g8R@g     @g     @@g8`U@gX@g     J@g     @r    )decimal     b@-]@     @F8&@     @r  Nё\]@      @R!@]@g+e`U@gbhR@g{G@g{Gȏ@)r   r   r   r  r   r   r  r  r  Bboxfrom_boundsr   r  r  ZtransformedtransFigurerq  )r   r   r  r  r  r  r  r  rZ  targetbbZaxbbr   r   r   test_normal_axesY  s6    







r  c            
   	   C   s*  t ddiB tjddd\} }| j  |jg g d t| |\}}}}W 5 Q R X t|D ]\}}|d ks\tq\ddd	d
gddd	dgddd
dgddd
dgg}t|D ]*\}}t	j
j||  }	t|j|	jdd qddd	dg}t	j
j| }	t|j|	jdd ddd	dg}t	j
j| }	t|j|	jdd d S )Nr  Fr  r  r  ZxticklabelsZyticklabelsr  r  r  r  r  r  r  r  r  r  Zatolr        ^@)r   r   r   r  r   rn   r  r  r   r  r  r  r   r  )
r   r   r  r  r  r  r  rZ  r  r  r   r   r   test_nodecorator  s*    




r  c            
   	   C   s  t ddiP tjddd\} }|jg g d |jjd | j  t	| |\}}}}W 5 Q R X dd	d
dgddd
dgddddgddddgg}t
||D ]&\}}tjj| }	t|j|	jdd qddd
dg}tjj| }	t|j|	jdd dd	d
dg}tjj| }	t|j|	jdd d S )Nr  Fr  r  r  r  )r  r  r  g      8@r  gs~8&@r  r  r  r  r  r  r  r  r  g     @)r   r   r   rn   rn  r:   rq  r  r   r  r;  r  r  r  r   r  )
r   r   r  r  r  r  targetsr  Zbbspiner  r   r   r   test_displaced_spine  s(    




r  c               
   C   s   ddddgddddggddddgd	d
ddggddddgddddggg} t dddgD ]\}}tddi tjddd\}}|j|d |j  t||\}}}}t ddgD ]2\}	}
tj	j
| | |	  }t||
 j|jdd qW 5 Q R X qTdS )zG
    Switch the tickdirs and make sure the bboxes switch with them
    r  r  r  +e8&@r  r  gZӼ8[@88&@g r\a@r  gqq\@g88b@r  r  r  Zinoutr  Fr  r  r  r  r   r    r  r  N)r  r   r   r   rr  r  r   r  r  r  r  r   r  )r  Zdnumdirsr   r   r  r  r  r  r  r   r  r   r   r   test_tickdirs  s.    






  r  c            	   	   C   sl  t ddiT tjddd\} }| j  |jddd t| |\}}}}t| |\}}}}d	d
ddgddddgg}tdD ].}tj	j
||  }t||d  j|jdd q~tjddd\} }| j  |jddd |  |jdddd | j  t| |\}}}}d	dddgddddgg}tdD ]0}tj	j
||  }t||d  j|jdd q,W 5 Q R X d S )Nr  Fr  r  r  re   r  )r9  r  r  g88[@r  r  gCiq\a@r  r  r  r    r  r  r7  r   r  gPUUUUUB@gVUUUUT@gz6P@r  goTT@)r   r   r   r  r   rr  r  r   r  r  r  r   r  r   )	r   r   r  r  r  r  r  r  r  r   r   r   test_minor_accountedfor  sB    


  



  r  c                 C   sR   |  dd | dd |  d}|d |d | dd d S )Nr   Fr  r   Ton)r   r  r  r   r   r   test_axis_bool_arguments  s    


r   c                  C   sr   t  \} }d}d}d}d}|||||g}t|||||fksFt||f| ksZt||f| ksntd S )Nr   ra   r   r  )r   r   r  r  r   ro   rp   )r   r   rJ   rK   r  r  r  r   r   r   test_axis_extent_arg  s    r  c                  C   s   t dd tddD } t dddddg}t j|d	}t \}}|| | t	t 
d
}| d| d| fkstd S )Nc                 S   s   g | ]}t  d d|qS )r  r   rf  r  r   r   r   r     s     z(test_datetime_masked.<locals>.<listcomp>r   r  r    ry   r   r   r   rw  g    H&Ag    d&A)rL   r   r   r	   r  r   r   rm   r_  r`  rx  ro   r   )r0   r-   rl  r   r   rU  r   r   r   test_datetime_masked
  s    r  c                  C   sJ   t jdddgddddggdd\} }} |d	 dks6t|d
 dksFtd S )Nr   r    ry   r   r   r  rE  r  r   r_   )r   r  r   rD  r  r   r   r   test_hist_auto_bins  s    &r  c            
   	   C   s   t d\} \}}dddg}|tjg }||\}}}tjdd ||\}}	}W 5 Q R X tj|| tj||	 d S )Nr    r   ry   r  rB  )r   r   rL   r  r  r  r   r   )
r   r   r   r$  Znan_datar  r:  rD  ZnanbinsZnanedgesr   r   r   test_hist_nan_data  s    
r  c                  C   sD   t jtjddddd\} }} |d dks0t|d dks@td S )	Nra   rE  r1  T)r   r  r   r_   r   )r   r  rL   rM   r   r   r  r   r   r   test_hist_range_and_density+  s     r  c            
      C   s|   t  \} }dddg}|j|||ddd}|jj\}}}|jD ]8}|D ]}|j|jksFtqF|D ]}	|	j|jks`tq`q>d S )Nr   r    ry   r   )r0   rd  r  r  r  )r   r   r  rn  r/  r   r  r   )
r   r   r0   ZbarcontZ	data_lineZcaplinesZbarlinecolsr  ZcaplineZ
barlinecolr   r   r   test_bar_errbar_zorder2  s    

r  c                  C   s6   t  \} }|  |ddg | dks2td S )Nr   r  r  )r   r   r  r  ro   r   r   r   r   r   test_set_ticks_invertedA  s    r  c                  C   sv   t jdd} |  }|ddgddg |jddddd	d
d |d | j| }|j	|j
 tdksrtd S )Nr  r  r  r  r   r  logit)F]tE?g'^P?r   r  r  rc   r  rd   rb   r  r   r    )r   r   r   rm   rn   r   r  Ztransform_bboxr  rd  r6  rz   approxr   )r   r   r   r   r   r   $test_aspect_nonlinear_adjustable_boxH  s      
r  c                  C   s   t jdd} | ddddg}|ddgddg |jddd	d
ddd |d |  | t	ddgkstt
| d
kst
d S )Nr  r  r   rF  r  r  r   )r   r   r	  )gbeF?r
  r   r  r  r   gS[:XL	@g'In?@)r   r   r   rm   rn   r   r  ro   rz   r  r   rp   r   r   r   r   (test_aspect_nonlinear_adjustable_datalimU  s      
r  c                  C   s   t  \} }| }|ddg |d t  \}}|d |ddgddg |jdd	d
 | j  |j  |	 }|	 }|	 }t
|j|j t
|j|j d S )Nr5  iX  r   r   r    r  r  rc  r  r  )r   r   r   rm   set_box_aspectr   r  r  r   r  r   r  )r  r   Zaxtwinr  r   bb1Zbbtr  r   r   r   test_box_aspectd  s    



r  c                  C   s   t  \} }|ddddg | j  |d t  \}}|d |j  |ddddg | j  |j  | }| }t|j|j d S )Nr   rS  r   r   )	r   r   rq  r  r   r  r  r   r  )r  r   r  r   r  r  r   r   r   test_box_aspect_custom_position~  s    





r  c                  C   sn   t jddtdddd\} }| j  | j }g }|jD ] }||}||j	|j
g q:t||d  d S )Nr    ry   r   )r  T)r  rZ  r   )r   r   r  r  r   rp  r  rq  rb  r6  rd  r   )r   r  rs  r  r   r  r   r   r   test_bbox_aspect_axes_init  s    




r  c                  C   s6   t dd\} }|dddg | j  |  d S rV  )r   r   rm   r  r   Zredraw_in_framer   r   r   r   test_redraw_in_frame  s    
r  c                  C   sB   t  \} }| jdd k	s t|d | jdd ks>td S )N)r  r  F)r   r   r  Zinaxesr   rm  r   r   r   r   test_invisible_axes  s    
r  c                  C   s<   dt jd< t  } | j }|D ]}|j dks tq d S Nr  zlines.markeredgecolor)r   r   r  rk   get_major_ticksrJ  get_markeredgecolorr   r   Zticksrz  r   r   r   "test_xtickcolor_is_not_markercolor  s
    

r  c                  C   s<   dt jd< t  } | j }|D ]}|j dks tq d S r  )r   r   r  r   r  rJ  r  r   r  r   r   r   "test_ytickcolor_is_not_markercolor  s
    

r  r  rE  )TFNc           
      C   s   t  \}}td}tddd}||| t|d|  d}t|d|  d}t|d|  d}|d krt| n|}	|d	|d
 |	| kst|j	  t
| d	 d S )Nr   r  r   Zget_autoscaleZ_onr   Zlimget_)r  r   )rE  )r   r   rL   rQ   r   r!   r   r   r  r   r   )
r  rE  r   r   r0   r-   Zget_autoscale_onZset_limZget_limZ	post_autor   r   r   test_unautoscale  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  r  r   r    r   r   e   )r   rm   rL   r   get_pathZ_interpolation_stepsr   )r6   r7   r  r   r   r   )test_polar_interpolation_steps_variable_r  s    $
 r   c                  C   s6   t  \} }|dd | j  | dks2td S )Nr   g&.>)r   g	>)r   r   r  r  r   rp   r   r   r   r   r   test_autoscale_tiny_sticky  s    
r!  c                  C   sX   dt jd< dt jd< t  } | j }|D ](}|j dks@t|j dks*tq*d S )Nra  zxtick.colorr   zxtick.labelcolor)	r   r   r  rk   r  rJ  r  r   rK  r  r   r   r   &test_xtickcolor_is_not_xticklabelcolor  s    


r"  c                  C   sX   dt jd< dt jd< t  } | j }|D ](}|j dks@t|j dks*tq*d S )Nra  zytick.colorr   zytick.labelcolor)	r   r   r  r   r  rJ  r  r   rK  r  r   r   r   &test_ytickcolor_is_not_yticklabelcolor  s    


r#  r  c                 C   s   g | ]}|d k	r|qS r   r   )r   r  r   r   r   r     s    r   ra   c                 C   st   | t jd< | t jd< t \}}|j  tddg|j|jgD ].\}}|	 D ]}|j
 ||ksPtqPq@d S )Nzxtick.labelsizezytick.labelsizer0   r-   )r   r   r   r   r  r   r;  rk   r   r  rK  r  Z_get_tick_label_sizer   )r  r   r   namer  rz  r   r   r   test_relative_ticklabel_sizes  s    


r%  c                  C   sd   t  } | jdddd\}}|ddddgddddg |dd | }t|d	d
gs`td S )Nr    r   r	  r  ry   r   r  r   r   r  )	r   r   r   r!   r  ro   rL   r<  r   )r   r   r   rc   r   r   r   test_multiplot_autoscale	  s    r&  c                  C   s\   t  } | d}| jddddg|d}| }| jdd |  | k sXtd S )Nr2  r  r   r  r   )r;   )	r   r   r   r   r  r7  r  r	  r   )r   r   r   Zinit_posr   r   r   $test_sharing_does_not_link_positions  s    
r'  c                 C   s|  t dddg}| d}|d jddgddg|dd	 |d jddgddg|dd	 |d jddgddg|dd	 |d
 jt d|dd |d j	t dt d|dd |d}|d jddgddg|dd	 |d jddgddg|dd	 |d jddgddg|dd	 |d
 jt d|dd |d j	t dt d|dd d S )Nr   r   r   r   r   r   r    r_   r  ry   ra   rl  r   r|  )
rL   r   r   rm   rh   r!   r  r  rQ   r  )r6   r7   r   r  r   r   r   test_2dcolor_plot  s    
"""&
"""r(  c                 C   s~   t ddt j d}t |}|jddddd}|jD ]}||| q6| jddddd}|jD ]}|  ||| q`d S )Nr  r    r  Tr  )rL   rQ   r   r   r   r  rm   r  )r6   r7   r0   r-   r  r   r   r   r   test_shared_axes_clear.  s    


r)  c                  C   s   t jddddd\} }|jD ]}|ddgd q|d dddd	g |jD ]}| |d  ksNtqN|d dddd
g |jD ]}| |d  kstqd S )Nr    r	  r  r   zo-r  r  r   r   r  )	r   r   r  rm   r  ro   r   r  rp   r  r   r   r   test_shared_axes_retick=  s    


r*  r.   r;   r  r*   c                 C   sD   t  }| }|jdd| d |jd |j  | ks@td S )Ntestr   r,   r*   )r   r   r   r   Zset_label_positionr  r  r   )r.   r   r   r   r   r   test_ylabel_ha_with_positionL  s
    r,  c                  C   s   t  } ddgddg }}| ||}| |}|d j|d |d fksNt|d  dksbt|d  dksvt|d j|d |d fkst|d  dkst|d  dkstd S )	Nr   r    ry   r   r  r:   r&   r   r   r  	bar_labelr&  r   r  r  r   r  Zheightsr  r  r   r   r    test_bar_label_location_verticalU  s    
r1  c                  C   s   t  } ddgddg }}| ||}| |}|d j|d |d fksNt|d  dksbt|d  dksvt|d j|d |d fkst|d  dkst|d  dkstd S )	Nr   r    ry   r-  r   r;   r  r*   r   r   r  r/  r&  r   r  r  r   r  r  r  r  r   r   r   "test_bar_label_location_horizontalb  s    
r4  c                  C   s   t  } ddgddg }}| ||}| j|dd}|d j|d d |d fksVt|d  dksjt|d  dks~t|d j|d d |d fkst|d  dkst|d  dkstd S )Nr   r    ry   r-  r  )Z
label_typer   r2  r3  r   r   r   test_bar_label_location_centero  s    ""r5  c                  C   s   t  } ddgddg }}| j||dd}| |}|d j|d |d d fksVt|d  dksjt|d  dks~t|d j|d |d d fkst|d  dkst|d  d	kstd S )
Nr   r    ry   r-  )r  r   r  r:   r&   r.  r0  r   r   r   !test_bar_label_location_errorbars|  s    
""r6  c                  C   sV   t  } | ddgddg}| j|dd}|d  dks>t|d  d	ksRtd S )
Nr   r    ry   r-  r  )r   r   z3.00z-4.00r   r   r  r/  rs  r   r   r  r  r   r   r   test_bar_label_fmt  s
    r9  c                  C   sZ   t  } | ddgddg}| j|ddgd}|d  dksBt|d  dksVtd S )	Nr   r    ry   r-  rL  rM  )r  r   r7  r8  r   r   r   test_bar_label_labels  s
    r:  c                  C   sl   t  } | ddgtjdg}| |}dd |D ddgksBt|d jd	ksTt|d  d
kshtd S )Nr    ry   r   c                 S   s   g | ]}|  qS r   rr  )r   r  r   r   r   r     s     z,test_bar_label_nan_ydata.<locals>.<listcomp>r   1r   r9  r:   )	r   r   r  rL   r  r/  r   r&  r  )r   r  r  r   r   r   test_bar_label_nan_ydata  s    
r<  c               	   C   sp   t  \} }|tddddd dtdtj d d	  }tj	t
d
|d  d|d f|jjd d S )N)r   r_   ri  rO  r  r   gffffff?r   r  r    gr  r  )r   r   r!  r"  ZWedgerL   r   r   r   Zassert_array_almost_equal_nulpr   ZdataLimr  )r   r   Zbotr   r   r   test_patch_bounds  s      r=  c               	   C   s8   t jtdd  tjdgdgddddd} W 5 Q R X d S )	Nz!You passed a edgecolor/edgecolorsr/  r   rs  r  rk  rZ  )rZ   r,  r   r   )rz   r2  rm  r   r!   r  r   r   r    test_warn_ignored_scatter_kwargs  s         r>  )Nr    (  r  r   r]  r  r   r{  	itertoolsr   platformr
  r   
contextlibr   ImportErrorr   Zdateutil.tzr  ZnumpyrL   r	   r
   rz   r@   r   Zmatplotlib.testing.decoratorsr   r   r   Zmatplotlib.colorsr$  r  Zmatplotlib.datesr  r_  Zmatplotlib.figurer   Zmatplotlib.font_managerZfont_managerZmfont_managerZmatplotlib.markersr  ri  Zmatplotlib.patchesr   r"  Zmatplotlib.pyplotZpyplotr   Zmatplotlib.tickerZtickerr   Zmatplotlib.transformsZ
transformsr  Znumpy.testingr   r   r   r   Zmatplotlib.cbookr   r   r9   r?   rA   rV   ru   r}   r   r   r   r   r   r   r  r  r   r   r   r   r  r  r   r  r  r  r  r.  r3  rB  rE  rH  rM  rf  ro  rt  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rH  rQ   r  r  r  r  r  r  r  r  r%  r@  rA  rI  rN  rR  rS  rT  rX  r_  rh  rm  rw  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  r  r  r   r  r  r  r  r`  r  r  ZPatchr  r/  r2  r!  r5  r8  r@  rA  rD  rF  rH  rJ  rK  rY  r^  r`  rd  rh  rl  rm  ro  rp  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  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r%  r'  r)  r*  r,  r1  r5  r:  r<  r=  r@  rA  rD  rM  rP  rQ  rR  rU  rX  rY  r[  r\  r]  r^  r_  ra  rb  rd  re  rh  rj  rl  rp  rq  rv  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  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  machiner  r  r  r   r"  r#  r-  r0  r2  r3  r  r'  r4  r:  r?  r@  rX  rZ  r]  ra  rd  re  rk  rl  rt  ru  r  r  r  r  r  rS   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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  imageZ	AxesImager   ZPcolorImagerM   ZQuadMeshrh   r   r  r  r  r  r  r  r  r  r  r   r$  r%  Zfixturer-  r/  r0  r1  r3  r4  r5  r7  r8  r;  r>  r?  rB  rD  rE  rF  rL  rN  rP  rS  rU  rV  rc  re  rj  rm  rt  ru  ry  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  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  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  Zfont_scalingsr%  r&  r'  r(  r)  r*  r,  r1  r4  r5  r6  r9  r:  r<  r=  r>  r   r   r   r   <module>   s  










'
*
2





	







	
!






 



















 




! 
 
!









!
$















	
	











+



  """"6	;

 
 		
	  >    


  	
	
	
	


	
	
	
	
	
	


	
			

	
	2
.
+
		




	




+
* 

	&& 
       !   "
	 
 ,










	


$
""
" * 
!			

	



!
	 
.'





		

	
