B
    Jd                @   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
 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l,m-Z. d dl/m0Z1 d d
l2m3Z3m4Z4m5Z5 d dlm6Z6 d dl7m8Z8 dd Z9e dd Z:e dd Z;e dd Z<dd Z=edgddd Z>edgddd Z?dd Z@edgddd  ZAed!d"d#d$d%gd&d' ZBd(d) ZCd*d+ ZDed,gd-d. ZEd/d0 ZFejGHd1d2edgd3d4d5d6 ZIed7gd8d9 ZJd:d; ZKd<d= ZLedgdd>d? ZMed@gdAdBdCdD ZNejOPdEdFdG ZQejOPdEdHdI ZRejOPdEdJdK ZSedgddLdM ZTedNgdAdBdOdP ZUedQgdAdBdRdS ZVdTdU ZWdVdW ZXdXdY ZYedZgd[d\id]d^d_ ZZd`da Z[edgddbdc Z\eddddgdedf Z]edggdhdidjdk Z^edgddldm Z_dndo Z`edpgdgdAdhdqdrds Zaedtgdudv Zbedwgdxdydzd{ Zced|d|gdAdBd}d~ ZdedgdAdBdd Zedd Zfedgdhdidd Zgdd Zhdd Ziedgdd ZjejOPdEejGHddddgedgddd ZkeddgdAdhddd Zledgdhdidd Zmdd ZnedgdAdBdd ZoejGjHdepdddfeqdddxepddfeqdddxdepdfgdddgddd ZrejGjHdepdddfeqdddxepddfeqdddxdepdfgdddgddd ZsedgdAdBdd ZtedgdhdAddd ZuedgdAdB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ׄ Zddل ZejGHdddAgedgddd܄ Zedgdd߄ ZedgdAdEddd ZedgdAdBdd Zdd ZedgdAdBdd ZedgdAdddd ZedgdAdddd ZedgdAdBdd ZedgdAdBdd ZedgdEdAddd ZedgdAdBdd Zed d gdd Zdd Zdd 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jOPdEe d&d' Zd(d) Zed*gdAdBd+d, Zedgdd-d. Zd/d0 Zed1gdAdBd2d3 Zed4gdAdBd5d6 Zed7gdAdBd8d9 Zed:gd;d< Zd=d> Zd?d@ ZejGjHdAejjdBdC dDdC gdEdFdGgddHdI ZejGHdJg dKfg gdKfg g gdfgdLdM ZejGHdNdOej'jjfdPejjjfdQej'jjfgdRdS ZedgddTdU ZedgddVdW ZedgddXdY ZedgddZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde ZedfgdAdBdgdh Zedigdjdk Zedgddldm Zdndo ZedpgdAdhddqdr Zedsgdhdidtdu ZedvdvgdAdhddwdx ZedygdAdhddzd{ Zd|d} ZG d~d dZĐdddddZeddZejGHdeŃ eƐded d dKdKggdfeŐddeƐdeǐdKd d dKggdfeŐdddeƐdeǐdKd d dKggdfeŐddeƐded d dKdKggdfeŐddgdeƐddged d dKdKgd dd dKggdfgdd Z[[ejGHdeɃ dfeɐdddfeɐdddfeɐddgdddgfeɐdddfeɐdddfeɐdddfeɐddddfeɐdddddfeɐdddf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dC 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dgdAdEddd ZedgdAd[didEdƍdd Zed	d
gdEdidd Zdd Zedgd[didAdKdE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d0gd1d2 Zed3gd4d5 Ze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edEgdFdG ZedHgdIdJ ZedKgdLdM ZdNdO ZdPdQ Z	dRdS Z
dTdU ZedgddVdW ZedgddXdY ZdZd[ Zd\d] Zd^d_ Zed`dad`gdbdc Zddde Ze dfdg Zdhdi Zedjgdkdl Zdmdn Zdodp Zedgddqdr Zdsdt Ze dudv ZejGHdwdKddgeǐdKddgdKgdxdy Zedgddzd{ Zed|d|gd}d~ Zedgdd ZedgdAdBdd Zedgdd Z edgdd Z!ejGjHddAdgddgdedgdhdAddd Z"dd Z#dd Z$ejGjH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 Z0dd Z1edgdd Z2dd Z3dd Z4dd Z5edgdAdBdd Z6edgdAdBdd Z7edgdAdBdĐdń Z8dƐdǄ Z9dȐdɄ Z:edgdAdBdːdʄ Z;ed̐dgdAdBd͐d΄ Z<edgdAdBdАdф Z=ejGHdҐdӐdԐdgd֐dׄ Z>edgdAdBdِdڄ Z?dېd܄ Z@ejGHdg gg d dKggd dKgg ggejGHdddߐdgdd ZAedgddd ZBedgdAdBdd ZCedgdd ZDedgdAdBdd ZEeddgeF dkr\d ndxdydd ZGe dd ZHe dd ZIe dd ZJe dd ZKdd ZLedddgdgdd d ZMdd ZNedddgdgddd ZOd	d
 ZPejGHdݐdKddejQdgejRdKddddgdgedgddd ZSeddgdAdBdd ZTedgdAdBdd ZUdd ZVeddddgdAddEddd ZWedd d!d"gdAddEdd#d$ ZXed%d&d'd(gdAddEdd)d* ZYd+d, ZZedgdd-d. Z[d/d0 Z\ed1d2d3d4gdAd5dd6d7 Z]ed8d9d:d;d<d=d>d?gdAdBd@dA Z^dBdC Z_edgddDdE Z`edFgdAdBdGdH ZaedIdIgdAdBdJdK ZbejGHdLdMdNdOgdPdQ ZcdRdS ZddTdU ZeedgddVdW ZfdXdY ZgejGHdZe+jhe+jid[ge+jje+jkd\ggd]d^ Zld_d` Zmdadb Zndcdd Zodedf ZpejGHdgeqdhi diferdji dkfeqdKdgfi dlfeqes dmdidnffdodp ZtejGHd1d2dqdr Zudsdt Zvdudv Zwedwgdxdy Zxedzdzdzgdgdd{d| Zyed}gd~d Zzedgdd Z{edgdd Z|edgdd Z}edgdd Z~edgdd Zdd Zdd Zdd Zedgdd Zedgddd Zdd Zdd Zdd Zedgdd Zdd Zedgd[did]dd Zdd Zdd ZejGHdgerdi dferdi dferes ddidferes ddidfeqd[dKdKd2dfeqdi dff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jGHd֐dejjfdejjfededfejjfdKdddِdgd dKddgfejjfejdۡejdۡfej jfgejGHdeqdܡdݡejdddgdސd߄ Zdd Zdd Zdd Zdd ZejGHde dd ZedgdAdBdd Zdd Zdd ZedgdAdxddd ZedgdAdhddd ZejOPdEdd Zejddgddd Zejdddd gddd Zdd Zdd Zdd Zd	d
 ZedgdEdidd Zedg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, ZƐd-d. Zed/gd0dyd1d2 Zed3gd4d5 Zed6gd0dyd7d8 Zed9gdAdBd:d; Zːd<d= Z̐d>d? Z͐d@dA Zΐ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 ZejOPdEdTdU ZؐdVdW ZِdXdY ZڐdZd[ Zېd\d] Zܐd^d_ ZejGHd`dadbgejGHdcdadbgddde Zސdfdg Zߐdhdi Zdjdk Zedgddldm Zedgddndo Zdpdq Zdrds Zdtdu ZejGHdvddAgejGHdwddAgdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd ZedgdhdAddd Zedgdhdi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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 Zdd Z	dd Z
ddÄ ZejGHdd2ejGHdŐdơdǐdȄ Zedgddɐdʄ ZejOPdEdːd̄ Zd͐d΄ ZdϐdЄ ZejGHdѐdҐdӄ e"jD dِdԐdg ejOPdE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jGH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jOPdEdd Z!dd Z"dd Z#dd Z$dS (       )
namedtupleN)Decimal)product)SimpleNamespace)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   L/var/www/html/venv/lib/python3.7/site-packages/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labelzY Labeltop)loczX LabelrightzZ Label)yha)xr$   )r   r   legendr   r   colorbar	set_label)fig_testfig_refr   sccbarr   r   r   test_label_loc_vertical0   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}|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   zY Labelbottom)r!   zX Labelleft
horizontal)orientationzZ Labelr   )r#   r$   )r%   r$   )r   r   r&   r   r   r'   r(   )r)   r*   r   r+   r,   r   r   r   test_label_loc_horizontalC   s    r2   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 d 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   zY LabelzX Labelr0   )r1   zZ Label)r#   r$   )r%   r$   )	
matplotlibr   r   r   r&   r   r   r'   r(   )r)   r*   r   r+   r,   r   r   r   test_label_loc_rcV   s     

r4   c              C   s  t  \} }|jddd |jddd |j  dks>t|jddd |j  dksbt|jddd |j  dkst|jddd |jddd |j  dkst|jddd |j  dkst|jddd |j  dkstd S )Nz
Test labelr/   )r!   centerr"   r    r.   )	r   r   r   xaxis	get_labelget_horizontalalignmentr   r   yaxis)r   r   r   r   r   test_label_shiftk   s    r:   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 )	Ni!N,i   r   r   )maxlagsfull)mode)r#   xminxmax)nprandomseednormalZcumsumr   ZacorrZ	correlatedotarangevlinesaxhline)	r)   r*   ZNxr%   r=   ax_testax_refZnorm_auto_corrZlagsr   r   r   
test_acorr   s    rL   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 x|D ]}|j	d qW d S )Ni!N,i   r   i   )    rM   r   r   .lower)markeroriginZgray_rnearest)cmapinterpolation
markersize
   )aspectxlimylimboth)rN   )rB   rC   rD   onesshufflereshaper   spyimshowr6   tick_topplotZnonzerosetget_xlimget_ylimset_ticks_position)r)   r*   aaxs_testaxs_refr   r   r   r   test_spy   s     



(&
rj   c           
   C   sX   t  \} }xFddidddgD ]0}tt |jtddf| W d Q R X q W d S )NrT   rR   osolid)rP   	linestyle   )r   r   pytestraises	TypeErrorr_   rB   eye)r   r   Zunsupported_kwr   r   r   test_spy_invalid_kwargs   s
    rs   c             C   sT   t jd tjdd}|  | | }|| |j	
  |j	d d S )Nmpl20rM   r[   )mplstyleuserB   rC   randadd_subplotZmatshowr`   r6   ra   rf   )r)   r*   rg   rK   r   r   r   test_matshow   s    

rz   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).0r%   )unitsr   r   
<listcomp>   s    z)test_formatter_ticker.<locals>.<listcomp>rW   c                s   g | ]}d | d  j  qS )g      ?g      ?)km)r}   r#   )r~   r   r   r      s    c                s   g | ]}d | d  j  qS )g      ?g      ?)r   )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registerr3   rcParamsranger   figurer   r   rb   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   )r%   posr   r   r   	_formfunc   s    z4test_funcformatter_auto_formatter.<locals>._formfunc)r   r   r   r6   isDefault_majfmtr   isDefault_minfmtr9   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   r6   r   r   r   r9   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endpointg       @g?g?g333333?d   z%08.2lfZtricksZmindZjedi   #   7   K   z%05.2lfr   3prk   )rB   linspacesinpir   ZFixedLocatorr   ry   rb   r9   set_major_locatorZset_minor_locatorr   ZFormatStrFormatterr   ZFixedFormatterr6   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   drawr6   get_visibler   patchclar9   )r   r   ax2ax3r   r   r   test_twinx_cla6  s"    r   twin)r%   r#   gRQ?)r<   tolc             C   sJ  d| }d| d}t dd}| ddd}t|| }t||d ||| | ddd}t||d t|| }||| xd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 qW t|  t| d S )Nr   set_scaler   r   r   log)r   r   r      nonezaxes.edgecolorzaxes.linewidthZ
projecting)	transform	facecolor	edgecolor	linewidthZcapstyle)rB   rG   ry   getattrrb   r3   pathPath
add_artistpatches	PathPatchZMOVETOZLINETO	transAxesru   r   r
   )r)   r*   r   Z	twin_funcZ	set_scaler%   rJ   ax_twinirK   r   r   r   r   test_twin_logscaleM  s<    

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   g      ?r   r   )r   r   r   r   F)Zautoscalex_onZautoscaley_onr   rW   )r   lwzr--r   )r   )rB   arrayr   r   add_axesrb   r   margins)r%   r#   x2y2r   r   r   r   r   r   test_twinx_axis_scalesy  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_setting  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_invertedrB   rC   r`   r   r   r   rb   cos	autoscalesubplotr9   Zset_invertedclose)r   r   Zimgr%   ax0r   r   r   r   test_inverted_cla  s>    




r   c          	   C   s`   t ddd" |  }|ddgddg W d Q R X | }|ddgddg |  d S )NT)zxtick.minor.visiblezytick.minor.visibler   r   )r3   r   r   rb   minorticks_on)r)   r*   rJ   rK   r   r   r    test_minorticks_on_rcParams_both  s    r   Zautoscale_tiny_rangeT)remove_textc              C   sP   t dd\} }x:t|jD ],\}}dd|  }|ddgdd| g qW d S )Nr   rW   ir   r   )r   r   	enumerateflatrb   )r   axsr   r   y1r   r   r   test_autoscale_tiny_range  s    r   defaultc              C   s   t dd\} }|ddddg |jdddd |jdd	dd t| d
 t| d | sjt|	 svt|
 st|jd d t| d
 t| d | st|	 st|
 std S )Nr   r   rn   r   Tr%   F)enableaxistightr#   )g333333ÿg333333	@)g      ?g      @)r   )r   r   rb   r   r   rd   re   r   r   r   get_autoscale_on)r   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   )dtyper   r   T)sharex)r   rU   r   )rB   rG   floatr   r   loglogsemilogxr   r   r   rd   re   )r%   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   rn   rO   )rQ   )g      g      ?Fg      g      ?T)
r   r   r`   r   rd   re   Zuse_sticky_edgesr   Z_xmarginZ_ymargin)r   r   rY   rZ   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   rn   r   r   r   )r   )rB   rG   r^   ry   
pcolormesh)r)   r*   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 )Ng        g      @g{Gz?g       @F)rU   r   )r   )Zautoscale_onrY   rZ   rn   purple)r   r   z	local max)rn   r   data)rn   rn   zoffset points)xyxycoordsxytext
textcoords)	rB   rG   r   r   r   r   ry   rb   annotate)tsr   r   liner   r   r   test_basic_annotate.  s    
r  zarrow_simple.pngc        
      C   s   d} d}d}t | ||}tdd\}}xtt|j|D ]v\}\}}|dd |dd |\} }}dtj	 | d }	|j
ddt|	t|	|	d	 | |||	d
 |	d
 d
 q:W d S )N)TF)r>   r/   r"   rn   r   r      r   r   rW   )widthlength_includes_headshapehead_starts_at_zeroZ
head_widthhead_length)r   r   r   r   zipr   set_xlimset_ylimrB   r   arrowr   r   )
r  r  r  kwargsr   r   r   r   kwargthetar   r   r   test_arrow_simple>  s"    
r  c              C   s$   t  \} }|jdddddd d S )Nr   )r	  )r   r   r  )_r   r   r   r   test_arrow_emptyY  s    r  c              C   s@   t  \} }|dddd | dks,t| dks<td S )Nr   )g?g@)r   r   r  rd   r   re   )r  r   r   r   r   test_arrow_in_view_  s    r  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foo)r   r   )r   rn   )r   )r   
arrowprops)r   r   r   Zarrow_patchr   )r   r   annr   r   r   test_annotate_default_arrowf  s
    r  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   ETi  r      )dtg      $@g     @z
2009-04-27z
2009-04-29zdatetime64[D])r   r   degred)Zyunitsr   r   g        g     V@bZ   r   )r   )r   r   r   r   Epochdatetimer  DurationrB   rG   mdatesdate2numr   r   rb   fillZautofmt_xdate)r~   r   valuedayr  Zdtnr   r   r   r   ax4indr   r   r   test_fill_unitso  s.    


""r-  c            	   C   s   t jtdd tjdgdgddd W d Q R X t jtdd tjdgdgdd	d
 W d Q R X t jtdd tjdgdgddd W d Q R X tjdgdgddd d S )Nzmarker .* redundantly defined)matchr   rk   r%   )rP   z linestyle .* redundantly defined-z--)rm   zcolor .* redundantly definedrr   )r   r   )r   r   )ro   warnsUserWarningr   rb   errorbarr   r   r   r    test_plot_format_kwarg_redundant  s       r4  c             C   s~   ddddg}t |}| }|  }|j||t |t |d^}}|ddg |j||t |t |ddgd d S )Nr   r   rn   r   )xerryerr)r5  r6  dashes)rB   r   r   r3  absZ
set_dashes)r)   r*   r%   r#   rK   rJ   r  r  r   r   r   test_errorbar_dashes  s    
"r9  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 )Nrk   zlines.markerTz	axes.gridr   r   r   )rg   r!  rg   )r   r!  )r3   r   r   r   rb   )r   r   r   r   r   r   r   test_single_point  s    

r:  zsingle_date.pngrt   )rv   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)i   zaxes.formatter.limitsz
0000-12-31g    X&Ag(\bPr   r   r   rk   r0  )r   )	r   r   r&  r'  rB   
datetime64r   	plot_daterb   )r  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 )NrW   )r   rU   r   r   )rU   r   r   r   )gQgQ?)r   	   )rY   rZ   )rB   rG   r^   r   rb   rc   Zravel)r)   r*   rowcolr   r   r   r   test_shaped_data  s    

rC  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   r\   Ztwos)r   r   r   )r   r   r0  )rB   r   r   r   r   r   rb   )Zptsr   r   r   r   test_structured_data  s    rD  Zaitoff_proj)r<   r   rv   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   )   g@Zaitoff)
projection)figsize
subplot_kwrk   r   )rV   N)
rB   r   r   meshgridr   r   dictgridrb   r   )r%   r#   XYr   r   r   r   r   test_aitoff_proj  s    rO  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   r  i  r   rE  )r     r|   r   g      ?)r   alphag      @)r   r   r   r   r#  r$  r%  r*  convertr   r   axvspanr  )r~   t0tfr  r   r   r   r   test_axvspan_epoch  s    rV  Zaxhspan_epochg{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 )Nr   r  i  r   rE  )r  rP  r|   r   g      ?)r   rQ  g      @)r   r   r   r   r#  r$  r%  r*  rR  r   r   axhspanr  )r~   rT  rU  r  r   r   r   r   test_axhspan_epoch  s    rX  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 )Ni  )r   i  g?g333333?g333333?gffffff?)extent)r%   r#   r%   r#   )rY  r   )r   r   rB   rG   r^   hexbin)r   r   r   r%   r#   r   r   r   test_hexbin_extent  s    
r[  zhexbin_empty.pngc              C   s   t  } | g g  d S )N)r   r   rZ  )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   g?g333333?g333333?gffffff?rU   )rY  Zpickeri  i,  )r%   r#   r   )	r   r   rB   rG   r^   rZ  r   containsr   )r   r   r   r%   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j	d}t 
| d S )NFzpcolormesh.snapi!N,i g       @g      @g      @r   g      ?r   T)yscalebinsZ	marginalsZreduce_C_function)r   r   rB   rC   rD   standard_normalpowerr   rZ  sumr'   )nr%   r#   r   r   hr   r   r   test_hexbin_log4  s    
rg  c              C   sH   t dd\} }t \}}|j| |dddd}| dksDtd S )Nr]  )r   r   r   r   r   )ra  vminvmax)rB   rG   r^   r   r   rZ  Zget_climr   )r%   r#   r   r   rf  r   r   r   test_hexbin_log_climG  s    rj  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   rk  )r   r   )rk  r   )r   r   r   rW   )rW   r   )r   r   invert_xaxisrb   rd   r   re   r   invert_yaxis
set_yscaler  )r   r   r   r   r   test_inverted_limitsN  s    
ro  Znonfinite_limitsc           	   C   s`   t dt jd} t jdd t | }W d Q R X t j| t| d < t \}}|	| | d S )Ng        g{Gz?ignore)divider   )
rB   rG   eerrstater   nanlenr   r   rb   )r%   r#   r   r   r   r   r   test_nonfinite_limitsh  s    rv  plot_funr   rb   fill_betweenc             C   sb   t jdddd}| }| }t|| g g  x,||gD ] }t|| |tt|dd q:W d S )Nz
2010-01-01z
2011-01-01zdatetime64[D])r   C0)r   )rB   rG   r   r   r   ru  )rw  r)   r*   r%   rJ   rK   r   r   r   r   test_limits_empty_datas  s    rz  r`   )r   rv   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 )NrR   zimage.interpolationr   r   r0  )r   )r3   r   rB   indicessqrtr   r   r`   )Nr%   r#   r0  r   r   r   r   r   r   test_imshow  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 )NrR   zimage.interpolationr   r   r   r   )	clip_path)r3   r   rB   r{  r|  r   r   contourcollections	get_pathsget_transformmtransformsZTransformedPathr`   )	r}  r%   r#   r0  r   r   r   r  Zclip_transformr   r   r   test_imshow_clip  s    

r  c           	   C   sP   ddgddgg} t  }tjtdd  |j| tddd	d
d W dQ R X dS )z4Parameters vmin, vmax should error if norm is given.r   r   rn   r   zFPassing parameters norm and vmin/vmax simultaneously is not supported.)r.  irW   r   r   )normrh  ri  N)r   axesro   rp   
ValueErrorr`   mcolors	Normalize)rg   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   rn   )
r   r   rB   r   ru   r  ZPolyCollectionadd_collection
set_xbound
set_ybound)r   r   vertsr   r   r   r   test_polycollection_joinstyle  s    "
r  z	x, y1, y2)r   r   rn   g        r   Z
2d_x_inputZ2d_y1_inputZ2d_y2_input)idsc          	   C   s4   t  \}}tt || || W d Q R X d S )N)r   r   ro   rp   r  rx  )r%   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 d Q R X d S )N)r   r   ro   rp   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 )Ng        r   g{Gz?g333333?r   r   T)r   black)r   white/)wherer   hatchinterpolater   )r  r   r  g      ?r   r   )rB   rG   r   r   r   r   rb   rx  r   masked_greaterZmasked)r%   r   r   r   r   r   r   r   r   test_fill_between_interpolate  s     r  Z#fill_between_interpolate_decreasing)rv   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"@r;  g@g@gffffff@gffffff@)r@  r@  )rH  ztab:redkr   Tg?)r  r   r  rQ  r   r   r{   i   iX  )rB   r   r   r   rb   r  r  r  )r   r   Zprofr   r   r   r   r   (test_fill_between_interpolate_decreasing  s    r  Zfill_between_interpolate_nanc              C   s   t d} t ddt jdddddddg
}t ddddddddt jt jg
}t jd	d
 ||k}||k}W d Q R X t \}}|j| |dd |j| |dd |j| |||dddd |j| |||dddd d S )NrW   rF              rM   r{   rp  )invalidr  )r   r!  r   Tg      ?)r  r   r  rQ  r   )	rB   rG   asarrayrt  rs  r   r   rb   rx  )r%   r   r   Zgreater2Zgreater1r   r   r   r   r   !test_fill_between_interpolate_nan  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@  r  r  i@B i  i r   r   symloglinearrU   i )rB   r   r   r   rb   rn  
set_xscaler  )r%   r#   r   r   r   r   r   test_symlog2  s    

r  zsymlog2.pdfc              C   sx   t ddd} tdd\}}xDt|dddd	d
gD ],\}}|| |  |jd|d |d q4W |d dd	 d S )Ni2   gMbP?r   r   g      4@g       @g      ?g?g{Gz?r  )	linthreshTrU   g)	rB   rG   r   r   r
  rb   r  rL  r  )r%   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 )Ng      g      g      g        g      ?g      ?g      ?g      g      g      пr   g      ?g      ?g      ?rU   )rB   rJ  hypotr   pcolorlist)r%   r#   rM  rN  r   r   r   r   test_pcolorargs_5205K  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 )NFzpcolormesh.snapr  g      g      ?r   g?r   g      ?r   rn   rU   r  )r   
edgecolorsr!  wgouraud)shading)r   r   rB   r   rJ  r   r   r  minptpr   Zmasked_wherer8  maxr   r   )re  r%   r#   rM  rN  QxZQzr   ZZmr   r   r   r   r   r   r   test_pcolormeshY  s    
 $(r  Zpcolormesh_alphaZpdf)r<   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\}	\\}
}\}}x6|
|||fD ]&}|tjddddddd
gdd qW |
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 )NFzpcolormesh.snapr  g      g      ?r   r   viridis   g      ?rn   )r   g      gffffff?g?r   )r   zorderrU   g?r   r   )rS   rQ  r  r  r  )rS   r  r  )r   r   rB   rJ  r   r   r  r  r  get_cmaprG   r  ZListedColormapr   	add_patchmpatches	Rectangler   )re  rM  rN  r  ZQyr   ZvircolorsrS   r   r   r   r   r+  r   r   r   r   test_pcolormesh_alphaq  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 ||| x:|  D ].}x&| D ]}|d |d qvW qhW d S )NFzpcolormesh.snapg?g\(\?g333333?)hspacer    r.   i  r   c                s   g | ]} t j|d  qS ))days)r$  	timedelta)r}   d)baser   r   r     s    z1test_pcolormesh_datetime_axis.<locals>.<listcomp>rP  rE     rU      r   )r         r"   r{   )r   r   r   subplots_adjustr$  rB   r   r   rG   rJ  r   r   repeatnewaxisget_axesget_xticklabelsset_haset_rotation)r   r%   r#   z1z2zr   r   r   )r  r   test_pcolormesh_datetime_axis  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 
||| x:|  D ].}x&| D ]}|d |d qlW q^W d S )Ng?g\(\?g333333?)r  r    r.   i  r   c                s   g | ]} t j|d  qS ))r  )r$  r  )r}   r  )r  r   r   r     s    z-test_pcolor_datetime_axis.<locals>.<listcomp>rP  rE  r  rU   r  r   )r   r  r  r"   r{   )r   r   r  r$  rB   r   r   rG   rJ  r   r  r  r  r  r  r  r  )r   r%   r#   r  r  r  r   r   r   )r  r   test_pcolor_datetime_axis  s*    

.

>

r  c           	   C   s  d} t dd| }t dd| d }t ||\}}t ||d }t \}}tt |	||| W d Q R X tt |	|||j
 W d Q R X tt( |j	|||d dd df dd W d Q R X tt( |j	|||d dd df dd W d Q R X t j|d	< tt$ |	|||d dd df  W d Q R X t jd
d t jj||d	k d}W d Q R X tt$ |	|||d dd df  W d Q R X dd	dg}ddg}t ||\}}t |j}tjtdd |j	|||dd W d Q R X d S )Nr  g      g      ?r   r   rU   r  )r  r   rp  )r  )maskig  r   irW   z.are not monotonically increasing or decreasing)r.  auto)rB   r   rJ  r  r   r   ro   rp   rq   r   TNaNr  rs  r   r   zerosr  r1  r2  )re  r%   r#   rM  rN  r   r  r   r   r   r   test_pcolorargs  s8    ,,
((

r  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   rW   rn   i!N,r   r@  r   )r  rU   rR   )r   rB   rG   rC   rD   randnr   diff)r)   r*   r   r%   r#   r   r   r   r   r   r   test_pcolornearest  s    r  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 )i  )r$  fromtimestamp)r}   r%   r   r   r   r     s    z+test_pcolornearestunits.<locals>.<listcomp>rW   r   rn   i!N,r   r@  r   )r  c             S   s    g | ]}t j |d  d qS )g      ?i  )r$  r  )r}   r%   r   r   r   r     s    rU   rR   )	r   r   rB   rG   rC   rD   r  r   r  )r)   r*   r   r%   r#   r   r   r   r   r   r   test_pcolornearestunits  s    r  c           	   C   sn   t  \} }tdd}tdd}tjd tjdd}tjt	dd |j
|||dd W d Q R X d S )	Nr   r@  rn   i!N,zDimensions of C)r.  r   )r  )r   r   rB   rG   rC   rD   r  ro   rp   rq   r   )r   r   r%   r#   r   r   r   r   test_pcolorflaterror  s    r  snapc       	      C   s   |   }tdd}tdd}tjd tjdd}|j||||d |  }|d d t|d	  }|d d t|d	  }|j||||d d S )
Nr   rW   r   i!N,rn   r@  )r  rU   r   )r   rB   rG   rC   rD   r  r   r  )	r)   r*   r  r   r%   r#   r   r   r   r   r   r   test_pcolorauto  s    r  	canonicalc              C   s    t  \} }|dddg d S )Nr   r   rn   )r   r   rb   )r   r   r   r   r   test_canonical)  s    r  zarc_angles.pngc        
      C   sR  d} d}d}d}t dd\}}x*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.W d S )Nr   r   )g?g      ?rn   ih  r@  -   g333333?)rQ  )theta1theta2r   rW   )r   r   r   r   r  r  ZEllipseArcrb   rB   r   deg2radr   r  r  )
r  rf  Zcentrer   r   r   r   r   r  r  r   r   r   test_arc_angles/  s,     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=
ף?)g?g333333?iih  g       @r   r  )rX   g?yellowr   )rQ  r   r   r   r  r   F)angler   r(  r  r   equalr   )rQ  r   r   r  )rB   r  rG   r   r   r   rF   r   r   ry   r(  r  r  r  )ZxcenterZycenterr  heightr  r  r%   r#   ZrthetaRr   r   e1e2r   r   r   test_arc_ellipseQ  s2    


r  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 )Nrk   r   r   rn   )rP   r   r   )r   r   mmarkersMarkerStylerb   r   r3  )fixr   mr   r   r   test_marker_as_markerstylev  s
    
r  	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   rW   r   g      ?rk   r   )r   r  zmark all)r  r   r   zmark every 10+)r   rE  zmark every 5 starting at 10)rB   r   r   r|  r   r   rb   r&   )r%   r#   r   r   r   r   r   test_markevery~  s    r  Zmarkevery_lineg{Gzt?)r   r   c              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   rW   r   g      ?z-or   )r   z-dzmark all)r  r   z-szmark every 10z-+)r   rE  zmark every 5 starting at 10)rB   r   r   r|  r   r   rb   r&   )r%   r#   r   r   r   r   r   test_markevery_line  s    r  Zmarkevery_linear_scalesgMbP?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 | }x^t| D ]R\}}|| }|| }	t	
|||	f  t	dt|  t	j||ddd|d qW d S )NrF  )r{   rF  r  r  r{   r   rU   r   r]  rn   g?g333333?g      ?)g        g?)g?g?r   g)\(?rW   r   g      ?zmarkevery=%srk   r/  r   )lsmsr  )slicer3   gridspecGridSpecru  rB   r   r   r   r   r   titlestrrb   )
casescolsgsdeltar%   r#   r   caserA  rB  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 | }xrt| D ]f\}}|| }|| }	t	
|||	f  t	dt|  t	j||ddd|d t	d t	d qW d S )NrF  )r{   rF  r  r  r{   r   rU   r   r]  rn   g?g333333?g      ?)g        g?)g?g?r   g)\(?rW   r   g      ?zmarkevery=%srk   r/  r   )r  r  r  )r  g@)g?g333333?)r  r3   r  r  ru  rB   r   r   r   r   r   r  r	  rb   rY   rZ   )
r
  r  r  r  r%   r#   r   r  rA  rB  r   r   r   #test_markevery_linear_scales_zoomed  s(    

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 | }xrt| D ]f\}}|| }|| }	t	
|||	f  t	dt|  t	d t	d t	j||ddd|d qW d S )NrF  )r{   rF  r  r  r{   r   rU   r   r]  rn   g?g333333?g      ?)g        g?)g?g?r   g)\(?rW   r   g      ?zmarkevery=%sr   rk   r/  r   )r  r  r  )r  r3   r  r  ru  rB   r   r   r   r   r   r  r	  xscaler`  rb   )
r
  r  r  r  r%   r#   r   r  rA  rB  r   r   r   test_markevery_log_scales  s(    


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 | }xbt| D ]V\}}|| }|| }t	j
|||f dd t	dt|  t	j||ddd|d qpW d S )NrF  )r{   rF  r  r  r{   r   rU   r   r]  rn   g?g333333?g      ?)g        g?)g?g?r   g      @r   T)polarzmarkevery=%srk   r/  r   )r  r  r  )r  r3   r  r  ru  rB   r   r   r   r   r   r  r	  rb   )	r
  r  r  r0  r  r   r  rA  rB  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   rW   zy.g      >@r0  )r  mewmecg?g?r   r!  )rB   r   r   r   rb   r   )r%   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_label)rg   r!  rg   r!  )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  rB   rt  )r   r   r   r   r   test_nan_bar_values  s    r  c              C   s   t  \} }|g g  d S )N)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   g      @r   g?g      ?rg   r!  r5   )r  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 )Nr5   zytick.alignmentr   g      @r   g?g      ?rg   r!  )r  r  r  )r3   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 )Ng      ?g @g333333@g@g?g@gffffff
@g@c             S   s   g | ]}t |qS r   )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   r   <  s    r5   )r  )r   r  )r)   r*   r   x0y0r%   r#   r   r   r   test_bar_decimal_center6  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 )Ng      ?g @g333333@g@g?g@gffffff
@g@c             S   s   g | ]}t |qS r   )r   )r}   r%   r   r   r   r   I  s    z,test_barh_decimal_center.<locals>.<listcomp>c             S   s   g | ]}t |qS r   )r   )r}   r#   r   r   r   r   J  s    g      ?r   r5   )r  r  )r   barh)r)   r*   r   r"  r#  r%   r#   r   r   r   test_barh_decimal_centerD  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 )Ng      ?g @g333333@g@g?g@gffffff
@g@gffffff?g333333?r   r   c             S   s   g | ]}t |qS r   )r   )r}   r   r   r   r   r   W  s    z*test_bar_decimal_width.<locals>.<listcomp>r5   )r  r  )r   r  )r)   r*   r%   r#   Zw0r  r   r   r   r   test_bar_decimal_widthR  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 )Ng      ?g @g333333@g@g?g@gffffff
@g@gffffff?g333333?r   r   c             S   s   g | ]}t |qS r   )r   )r}   r   r   r   r   r   e  s    z,test_barh_decimal_height.<locals>.<listcomp>r5   )r  r  )r   r%  )r)   r*   r%   r#   Zh0rf  r   r   r   r   test_barh_decimal_height`  s    r(  c              C   sV   t  } | jddgddgdddd}x,|D ]$}| dks>t| d	ks*tq*W d S )
Nr   r   r   g333333?r   r0  )rQ  r   r   )r   r   r   r   )r   r   r   g333333?)r   r   r  get_facecolorr   get_edgecolor)r   rectsrectr   r   r   test_bar_color_none_alphan  s
    
r-  c              C   sV   t  } | jddgddgdddd}x,|D ]$}| dks>t| d	ks*tq*W d S )
Nr   r   r   g333333?r0  r   )rQ  r   r   )r   r   r   g333333?)r   r   r   r   )r   r   r  r)  r   r*  )r   r+  r,  r   r   r   test_bar_edgecolor_none_alphav  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   g      @r   g?g      ?rg   r!  r5   )r  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.i  r   g      ?rn   )hours)r  r   )r5  r  )r  )r  r6  g      ?c             S   s   g | ]}t j|d qS ))r0  )r$  r  )r}   r   r   r   r   r     s    z&test_bar_timedelta.<locals>.<listcomp>)r   r   )rW   rE  N)	r   r   r  r$  r  r%  rB   r   broken_barh)r   r   r   r   r   test_bar_timedelta  s,    

r2  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)	rB   rC   rx   
date_rangeZ
DateOffsetyearr   r   boxplot)pdr   r3  r   r   r   test_boxplot_dates_pandas  s
    r;  c             C   s   ddl m}m} t }|d}tdddg}x*t|dk r\||d tj	dd	  q4W t
d
}t
||\}}t|d t|d f}	t
|	d |	d  }
|	|
_z"|  ||||
}|j  W d |  X d S )Nr   )register_matplotlib_converters deregister_matplotlib_converterso   i  r   r;  rU   x   )secondsr   )Zpandas.plottingr<  r=  r   r   ry   r$  ru  appendr  rB   rG   rJ  r  r   canvasr   )r:  r<  r=  r   r   timesZy_valsZ	time_axisZy_axisr  Zz_dataimr   r   r   test_pcolor_regression  s     

rE  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 )Ni  r   r   rn   )r8  monthr*  r)  r8  rF  r*  dater)  rW   r5   )r  r  oranger   )r   r   )		DataFrameto_datetimegroupbyrd  indexr   r   r  rb   )r:  dfZmonthlydatesZforecastbaseliner   r   r   r   r   test_bar_pandas  s    rP  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 )Ng      ?g       @g      @g?g?g333333?)r%   r  r   r   rn   )rL  )r  )rI  r   r   r  r%   r  )r:  rM  r   r   r   r   r   test_bar_pandas_indexed  s    rQ  c             C   sl   |   }|  }ddg}ddg}ddg}x.tdD ]"}|j|| || d|| d q2W |j|||d d S )	Nr   r   rn   r%   rk   ry  )r   r  )r  )r   r   r  )r)   r*   rJ   rK   r%   r#   hatchesr   r   r   r   test_bar_hatches  s    "rS  c             C   s   x\| j ddgdd| j ddgddgD ]4}t|| t|j| t| t|j q&W | ddddgi}t| t|| d S )Nr   r   float64)r   ZFloat64rB  rn   )Seriesr   rb   rL  rI  )r:  r%   rM  r   r   r   test_pandas_minimal_plot  s    

rV  Zhist_logc              C   sH   t dddd } t d|  d|  g}t \}}|j|ddd d S )Nr   r   r]  rn   FT)r(  r   )rB   r   concatenater   r   hist)Zdata0r   r   r   r   r   r   test_hist_log  s    rY  c             C   s   |  dd}| dd}xtdddgD ]\}}|d|f d |d|f jdd|d	 |d|f jdd|d	 |d|f d x*|d d |f D ]}|jddd
|d qW q(W d S )Nr   rn   r  step
stepfilledr   r   r   )histtypeT)r   r\  )r   r   rn  rX  )r)   r*   rh   ri   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   
barstacked)r\  r   )r   r   rX  rn  rB  r   re   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   rX  )r   r   r   r   test_hist_bar_empty   s    r`  zhist_step_empty.pngc              C   s   t  } | jg dd d S )NrZ  )r\  )r   r   rX  )r   r   r   r   test_hist_step_empty'  s    ra  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\}}xTt|||jD ]B\}}}|j| |f|dd| |	d||f  |j
dd qpW |d j}	tdd |	D std S )Nr   i  rn   rW   r(  TFr   rZ  r   r[  )nrowsncols)r\  stackedz%s/%si)r.   )r   r   c             s   s   | ]}|  | kV  qd S )N)r)  r*  )r}   r   r   r   r   	<genexpr>>  s    z(test_hist_step_filled.<locals>.<genexpr>)rB   rC   rD   r  r   r   r
  r   rX  	set_titler  r   allr   )
r%   Zn_binsr  typesr   r   Zkg_typer   r   r   r   r   test_hist_step_filled.  s    
rj  zhist_density.pngc              C   s6   t jd t jd} t \}}|j| dd d S )Ni!N,i  T)density)rB   rC   rD   rb  r   r   rX  )r   r   r   r   r   r   test_hist_densityA  s    rl  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   rU   g      r   r   r   T)ra  rk  )rB   rC   ZRandomStater  r   rX  Z	histogramr   )rngr   ra  Zmpl_heightsr  Z
np_heightsr   r   r   test_hist_unequal_bins_densityI  s    
rn  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 )Ni  r   r   T)rd  F)r$  r   r   rX  )r   r   r   r   r   r   test_hist_datetime_datasetsT  s
    ro  bins_preprocessc             C   s   | S )Nr   )ra  r   r   r   <lambda>^      rq  c             C   s   t | dS )Nr<  )rB   r  astype)ra  r   r   r   rq  _  rr  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  r   rn   r  T)ra  rd  F)
r$  r   r   rX  rB   r   r   ru   rN  r'  )rp  r   Z
date_edgesr   r   r  ra  r   r   r    test_hist_datetime_datasets_bins\  s    rt  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   rX  rB   r  ndimr   r  )r   Zexpected_number_of_histsZhistsr  r   r   r   test_hist_with_empty_inputs  s
    

rv  zhisttype, zorderr  rZ  r[  c             C   sL   t   }|jddg| d |js(tx|jD ]}| |ks0tq0W d S )Nr   r   )r\  )r   r   ry   rX  r   r   
get_zorder)r\  r  r   r   r   r   r   test_hist_zorder  s
    
rx  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     rM   %   0   rP  r   g      ?g       @g      @g      @g      @g      @g      @g       @g      "@rn   r   )rO  r   r0   )rO  r1   )r1   r   miterbutt)solid_joinstylesolid_capstylerU   	drawstylez
steps-post)Zmatplotlib.lineslinesrB   r   r   flattenstairsZsemilogyr   rb   rA  add_lineLine2Dr  r  )r)   r*   Zmlinesr#   r%   	test_axesrv   ref_axesr   r   r   test_stairs  s@    
(((..(..(..(..r  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   rn   r   r   r   r  T)r(  r0   )r1   r(  )rO  r(  )rO  r1   r(  rU   post)rZ  r   )r   r  r  rx  rB   rA  r  r  r  r\   ru  )r)   r*   rf  ra  bsr  r  r   r   r   test_stairs_fill  s&     ""r  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   rn   r   )edgesr   r  )rO  )
ry   r  r  set_datarB   rG   allcloseget_datar   rO  )r)   r*   rZ   test_axrf  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  r;  )rO  r|  r}  )r~  r  r   r  z
steps-postr   )ry   r  rb   r   r  )r)   r*   r  r  rv   r   r   r   test_stairs_baseline_0  s    
$r  c              C   s>   t   } | g dg |  dks*t|  dks:td S )N*   )'   r  )gQgQ?)r   r   ry   r  rd   r   re   )r   r   r   r   test_stairs_empty  s    r  c            	   C   s6   t jtdd tddgdtjdg W d Q R X d S )NzNan values in "edges")r.  r   r   r   )ro   rp   r  r   r  rB   rt  r   r   r   r   test_stairs_invalid_nan  s    r  c            	   C   s2   t jtdd tddgddg W d Q R X d S )NzSize mismatch)r.  r   r   r   )ro   rp   r  r   r  r   r   r   r   test_stairs_invalid_mismatch  s    r  c           	   C   sH   t ddgdddg} tjtdd | jdtjdgd W d Q R X d S )Nr   r   r   zNan values in "edges")r.  )r  )r   r  ro   rp   r  r  rB   rt  )rf  r   r   r   test_stairs_invalid_update	  s    r  c           	   C   sF   t ddgdddg} tjtdd | jtdd W d Q R X d S )Nr   r   r   zSize mismatch)r.  r   )r  )r   r  ro   rp   r  r  rB   rG   )rf  r   r   r   test_stairs_invalid_update2  s    r  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# |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   rn   r   r   r   TA)r   r(  r   r   r0   B)r   r(  r1   r   rH  z--C)r   r  r   r   g      ?D)r  r   rO  r1   r   rU      E)r   r  r   rO  r   ry  r  r   F)rO  r   r  r   r   r   r     r   G)rO  r   r  r   r(  r  r  r  z//H)r   r  r   rO  r  r   r   )r!   )rB   r   rs  r   copyrt  r   r   r  r   ru  r&   )r%   r#   Zynr   r   r   r   r   test_stairs_options  s&    .


&.4r  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   r  rB   rG   r<  Zxticks)fr   r   r   r   test_stairs_datetime-  s
    r  c             C   sH   |   }|jdddgddd |  }|jdddgdd}|d d S )Nr   r   rn   r   T)r   r(  )r(  )ry   r  	set_color)r)   r*   r  r  str   r   r   test_stairs_edge_handling6  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?  )rB   r   r   r   r  )r%   r#   r  r   r   r   contour_datB  s    "r  Zcontour_hatchingc           
   C   sD   t  \} }}t \}}|j| ||dddddgtdddd	 d S )
Nr;  r  \z//r/  grayr[   g      ?)rR  rS   extendrQ  )r  r   r   contourfr  )r%   r#   r  r   r   r   r   r   test_contour_hatchingI  s
    r  Zcontour_colorbarc        	   
   C   s   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 )Ngg7A`?g?ZRdBug333333g333333?r[   )levelsrS   rh  ri  r  gg^I+r#   rl   r   )r  r  
linestylesr  g@r   )r  r  r  )r   F)Zerase)
r  r   r   r  rB   rG   r  r  r'   Z	add_lines)	r%   r#   r  r   r   csZcs1Zcs2r,   r   r   r   test_contour_colorbarR  s"    
r  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 )NFzpcolormesh.snapr   r   r   r   rW   T)ra  
rasterized)r%   r#   r%   r#   )ra  r   r  )r   r   rB   rC   rD   r  r   r  )r%   r#   r   r   r   r   r   r   test_hist2dh  s    

r  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 )
NFzpcolormesh.snapr   r   r   r   rW   T)ra  r  )	r   r   rB   rC   rD   r   r  r   r  )r%   r#   r   r   r   r   r   test_hist2d_transposez  s    
r  c              C   sB   t jd\} }t  }x |tgD ]}|j| |dd q&W d S )N)r   r   T)rk  )rB   rC   r   r   r   r  )r%   r#   r   objr   r   r   test_hist2d_density  s    r  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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   rt   T)rv   r   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 )Nrn   r   r   r  r   r0  r#   r!  limer  r         z0.5z0.6z0.7z0.8)r%   r#   r   r   c2r%   g      ?r   r   )r   r   r  )r   r   r   )rB   r   r   r   r   )selfr   r   r   r   r   r   test_scatter_plot  s     **zTestScatter.test_scatter_plotzscatter_marker.png)r   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 )Nrn   )rc  r   r   r  r   )r   r   r   r#   r!  r  r  r  r  r{   r  r0  gr   )r   r   r  rP   rk   r    )	fillstyle)rn   r   r   rP  )r   r   r   r  r  rB   r   r   Zcolumn_stackr   r   )
r  r   r   r   r   rxZryZarear  r  r   r   r   test_scatter_marker  s*    








zTestScatter.test_scatter_markerZ
scatter_2Dr;   )r   r<   c             C   sP   t d}t d}t ||\}}|| }t \}}|j|||ddd d S )Nrn   r   r]  face)r   r   r  )rB   rG   rJ  r   r   r   )r  r%   r#   r  r   r   r   r   r   test_scatter_2D  s    

zTestScatter.test_scatter_2D)r<   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 )Ng      ?g @g333333@g@g?g@gffffff
@g@c             S   s   g | ]}t |qS r   )r   )r}   r   r   r   r   r     s    z4TestScatter.test_scatter_decimal.<locals>.<listcomp>c             S   s   g | ]}t |qS r   )r   )r}   r   r   r   r   r     s    r0  r#   r!  r  r  r   r  r  )r   r   )rB   r   r   r   )
r  r)   r*   r"  r#  r%   r#   r   r   r   r   r   r   test_scatter_decimal  s    z TestScatter.test_scatter_decimalc          	   C   sn   t t" tjddgddgddgd W d Q R X t t( tjdddgdddgdddgd W d Q R X d S )Nr   r   g?g?)r   rn   )ro   rp   r  r   r   )r  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   rn   z0.1z0.3z0.5rk   r   )r  g?g333333?g?)r   rP   r  )r   r   g?g333333?g      ?)
r   r   r  r  get_facecolorsr  r   r   get_edgecolorsget_linewidths)r  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   rn   z0.1z0.3z0.5r%   g?g333333?g?)r   rP   r  g?g333333?g      ?)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 d Q R X tjtdd$ t|dd  |dd  | W d Q R X tjtdd t||d W d Q R X d S )Nr   zsame size as x and y)r.  r   zfloat array-liker  )rB   rG   ro   rp   r  r   r   )r  r%   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   rn   )r   r   r   )r   r   )r   r   r   r   )r   r   rB   rt  r  
same_colorr*  r   )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   rn   T)r   r   rS   plotnonfiniter   )r   r   rS   )r   r   )r   r   r  set_badr   r   rB   rt  )r  r)   r*   r   rS   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   rn   F)r   r   rS   r  r   )r   r   rS   )r   r   r  r  r   r   rB   rt  )r  r)   r*   r   rS   r   r   r   test_scatter_no_invalid_color
	  s    
z)TestScatter.test_scatter_no_invalid_colorc          	   C   sN   dddg}t  }tjtdd$ |j|||tdddd	d
 W dQ R X dS )z4Parameters vmin, vmax should error if norm is given.r   r   rn   zFPassing parameters norm and vmin/vmax simultaneously is not supported.)r.  irW   r   r   )r   r  rh  ri  N)r   r  ro   rp   r  r   r  r  )r  r%   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   )r  r)   r*   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 )NrW   r   r   )r   )rB   rG   r   r   r^   )r  r)   r*   r%   r   r   r   r   test_scatter_different_shapes'	  s
    
 z)TestScatter.test_scatter_different_shapes)z0.5NZrgby
conversion)r   N)r   N)NNr0  r  r!  r   N)jauner  r  r   g      ?rn   r   r  z0.5z0.4z0.6z0.7r   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 d 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)r  r  r  )r   r  r  xsizeget_next_color_func)r.  )ru   r  Axes_parse_scatter_color_argsro   rp   r  )r  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   g      ?g?rn   )r   r   r   )r   )r   r   rB   r\   r   )r  r)   r*   rgbZrgbarK   rJ   r   r   r   test_scatter_single_color_cs	  s    z'TestScatter.test_scatter_single_color_cc          	   C   s   t d}t \}}xLtdD ]@}|j|t d|d| dd|d d}| |d ks tq W |j|t dddddtddd
d}t	| tddt
jd	 f d S )Nr   rn   r  r%   r   r   )r   rP   r   r  C3zlines.linewidth)N)rB   rG   r   r   r   r   r>   r  r   r   ru   r   )r  r%   r   r   r   Zpcr   r   r   test_scatter_linewidths	  s    
z#TestScatter.test_scatter_linewidths)__name__
__module____qualname__r   r  r  r  r	   r  r  r  ru   rv   contextr  r  r  r  r  r  r  r  Zparams_test_scatter_cro   markparametrizer  r  r  r   r   r   r   r    s`   	
		
 
r  )r  c            K   s   | ||d k	r|ni |fS )Nr   )r   r  r  r  r   r   r   _params	  s    r  _resultz	c, colorszparams, expected_resultr!  )r   r  r0  )r   )r   r  g      ?c             C   s@   dd }t jjj| d|i\}}}||jks0tt||j d S )Nc               S   s   dS )Nr   r   r   r   r   r   r  	  s    z5test_parse_scatter_color_args.<locals>.get_next_colorr  )ru   r  r  r  r   r   r   r  )paramsZexpected_resultr  r   r  Z_edgecolorsr   r   r   test_parse_scatter_color_args	  s
    r  zkwargs, expected_edgecolors)r   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 )Nr   r   r   r   r   r   r  	  s    z@test_parse_scatter_color_args_edgecolors.<locals>.get_next_colorr   r  r   )r  r  )popru   r  r  r  r   )r  Zexpected_edgecolorsr  r   r  r  Zresult_edgecolorsr   r   r   (test_parse_scatter_color_args_edgecolors	  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 d Q R X d S )Nc               S   s   dS )Nr   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 range)r.  g?g?gffffff?g?gffffff?r   )r  r  r  )	ro   rp   r  rB   r   ru   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 d Q R X ||kstt  t	j
tdd tj|d}W d Q R X t|tjj kstt	j
tdd tj|d}W d Q R X ||kstt	j
tdd tj|d}W d Q R X ||ks@t| dksRtt	j
tdd tj|d}W d 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_offset)r  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   )rG  z5Calling gca\(\) with keyword arguments was deprecated)r.  y   )Zmatplotlib.projections.polarr  rB   r   r  r   r  typer   ro   r1  r   r   r   ru   Z	_subplotsZsubplot_class_factoryZget_theta_offsetr   )r  ZprjZprj2Zprj3r   Z
ax_via_gcar   )r  r   test_as_mpl_axes_api	  sN    




r  c              C   sZ   t  \} }t  \}}t | |t  ks2t| t  ksBtt |  t | d S )N)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 )Ng?r   r   g      @)r  g      "@)	r   r   rb   rB   r   r   rn  rm  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   rW   )
r   r   rc   r6   r   r   ZMultipleLocatorrd   re   r   )r  r   r   r   r   test_log_scales_no_data&
  s    r  c           	   C   sp   t  \} }|d tjtdd |dd W d Q R X |d tjtdd |dd W d Q R X d S )Nr   zAttempted to set non-positive)r.  rU   rW   )	r   r   r  ro   r1  r2  r  rn  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   rW   g      ?g       @r   g      @r   )r   rW   )r   F   )r%   r   r   y3r%   r   r   r	  )r   )	r   r   rB   r   ry   	stackplotr  r  r   )r   r%   r   r   r	  r   r   r   r   r   test_stackplot7
  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}xt| D ]}xtdD ]t}ddt j   }dt j  d }ddt j   }|d d |f  |t t || | | d   7  < q&W qW |S )Nr   r   g?r   g      ?rW   )rB   r  r   rC   exprG   )re  r  rg   r   jr%   r#   r  r   r   r   layersO
  s    Bz'test_stackplot_baseline.<locals>.layersrn   r   r  r   )r   r   zero)rO  )r   r   sym)r   r   Zwiggle)r   r   Zweighted_wiggle)rB   rC   rD   r   r   r
  r   r  )r  r  r   r   r   r   r   test_stackplot_baselineK
  s    

r  c             C   s   | S )Nr   )r   r   r   r   rq  e
  rr  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 )Ni  g      ?g      ?)rz  r   )ZmeansigmasizevertTr   patch_artistFzlines.linewidthzboxplot.boxprops.linewidth)rB   rC   rD   ru   ZcbookZboxplot_statsZ	lognormalr   r   getrn  r  r   Zbxp)stats_kwargstransform_stats
bxp_kwargsZlogstatsr   r   r   r   r   _bxp_test_helperd
  s    
r  zbxp_baseline.pngr  )r  rv   c               C   s
   t   d S )N)r  r   r   r   r   test_bxp_baselinev
  s    r  zbxp_rangewhis.pngc               C   s   t tddgdd d S )Nr   r   )whis)r  )r  rK  r   r   r   r   test_bxp_rangewhis}
  s    r  zbxp_percentilewhis.pngc               C   s   t tddgdd d S )Nr   _   )r  )r  )r  rK  r   r   r   r   test_bxp_percentilewhis
  s    r  zbxp_with_xlabels.pngc              C   s   dd } t | d d S )Nc             S   s(   x"t | tdD ]\}}||d< qW | S )NABCDr   )r
  r  )statsr   r   r   r   r   r   
  s    z(test_bxp_with_xlabels.<locals>.transform)r  )r  )r   r   r   r   test_bxp_with_xlabels
  s    r"  zbxp_horizontal.pngg?)r   r  rv   r   c               C   s   t tddd d S )NF)r  )r  )r  rK  r   r   r   r   test_bxp_horizontal
  s    r#  zbxp_with_ylabels.png)r  rv   r   c              C   s   dd } t | tddd d S )Nc             S   s(   x"t | tdD ]\}}||d< qW | S )Nr   r   )r
  r  )r!  r   r   r   r   r   r   
  s    z(test_bxp_with_ylabels.<locals>.transformF)r  )r  r  )r  rK  )r   r   r   r   test_bxp_with_ylabels
  s    r$  zbxp_patchartist.png)r   r  rv   c               C   s   t tddd d S )NT)r  )r  )r  rK  r   r   r   r   test_bxp_patchartist
  s    r%  zbxp_custompatchartist.pngr   c               C   s    t tdtdddddd d S )NTr  r   :)r   r   r  )r  boxprops)r  )r  rK  r   r   r   r   test_bxp_custompatchartist
  s    r(  zbxp_customoutlier.pngc               C   s   t ttdddddd d S )Nr   r  r  )rm   rP   mfc)Z
flierprops)r  )r  rK  r   r   r   r   test_bxp_customoutlier
  s    r*  zbxp_withmean_custompoint.pngc               C   s    t tdtdddddd d S )NTr   r  r   )rm   rP   r)  )	showmeansZ	meanprops)r  )r  rK  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 )Nz--r!  rn   )rm   r   r   )r'  )r  )r  rK  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 )Nz--r!  rn   )rm   r   r   )Zmedianprops)r  )r  rK  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 )Nz--r  rn   )rm   r   r   )Zcapprops)r  )r  rK  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 )Nr/  r  rn   )rm   r   r   )Zwhiskerprops)r  )r  rK  r   r   r   r   test_bxp_customwhisker
  s    r0  zbxp_withnotch.pngc               C   s   t tddd d S )NT)Zshownotches)r  )r  rK  r   r   r   r   test_bxp_shownotches
  s    r1  zbxp_nocaps.pngc               C   s   t tddd d S )NF)Zshowcaps)r  )r  rK  r   r   r   r   test_bxp_nocaps
  s    r2  zbxp_nobox.pngc               C   s   t tddd d S )NF)Zshowbox)r  )r  rK  r   r   r   r   test_bxp_nobox  s    r3  zbxp_no_flier_stats.pngc              C   s   dd } t | tddd d S )Nc             S   s   x| D ]}| dd  qW | S )Nfliers)r  )r!  r   r   r   r   r     s    
z*test_bxp_no_flier_stats.<locals>.transformF)Z
showfliers)r  r  )r  rK  )r   r   r   r   test_bxp_no_flier_stats  s    r5  zbxp_withmean_point.pngc               C   s   t tdddd d S )NTF)r+  meanline)r  )r  rK  r   r   r   r   test_bxp_showmean  s    r7  zbxp_withmean_line.pngc               C   s   t tdddd d S )NT)r+  r6  )r  )r  rK  r   r   r   r   test_bxp_showmeanasline%  s    r8  zbxp_scalarwidth.pngc               C   s   t tddd d S )Ng      ?)widths)r  )r  rK  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 )Ng?g      ?g?g333333?)r9  )r  )r  rK  r   r   r   r   test_bxp_customwidths5  s    r;  zbxp_custompositions.pngc               C   s   t tddddgdd d S )Nr   r   r  r;  )r6  )r  )r  rK  r   r   r   r   test_bxp_custompositions=  s    r<  c            	   C   s,   t t ttdgdd W d Q R X d S )Nr   )r9  )r  )ro   rp   r  r  rK  r   r   r   r   test_bxp_bad_widthsE  s    r=  c            	   C   s.   t t ttddgdd W d Q R X d S )Nr   rn   )r6  )r  )ro   rp   r  r  rK  r   r   r   r   test_bxp_bad_positionsJ  s    r>  r9  g{Gz?)r   rv   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 )Ni  ir;     ir  i'  r   )	bootstrapnotch)ir{   r%   )r@  rA  r   )	rB   rC   rD   r   hstackr   r   r9  r  )r%   r   r   r   r   r   r   test_boxplotO  s    
rC  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 )Ni  ir;  r?  ir  r   r   i'  ^)r@  r  )ir{   r  )	rB   rC   rD   r   rB  r   r   r9  r  )r%   r   r   r   r   r   r   test_boxplot_sym2b  s    
rE  zboxplot_sym.pngc              C   sJ   t ddd} t d| dg} t \}}|j| | gdd |d d S )	Nir;  r?  ir  r  )r  )ir{   )rB   r   rB  r   r   r9  r  )r%   r   r   r   r   r   test_boxplot_symr  s
    rF  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 )Ni  r?  r   r   i'  r   )r@  rA  )rk  r   T)r@  rA  Z	autorange)	rB   rC   rD   r\   rB  r   r   r9  r  )r%   r  r   r  r   r   r   r   test_boxplot_autorange_whiskers  s    

rG  c          	   C   sF   t ddd}t d|dg}t| | ||g W d Q R X | S )Nir;  r?  ir  )rB   r   rB  r3   r   r9  )r   rc_dictr%   r   r   r   _rc_test_bxp_helper  s
    rI  Zboxplot_rc_parameters)r  r   r   rv   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}x t||D ]\}}t|| qW tjj	dd |d 
 D kstd S )Ni  rn   Tr   r  i'  r!  rk   r  z--g       @r0  r   r  )zboxplot.notchzboxplot.whiskerszboxplot.bootstrapzboxplot.flierprops.colorzboxplot.flierprops.markerz"boxplot.flierprops.markerfacecolorz"boxplot.flierprops.markeredgecolorzboxplot.flierprops.markersizezboxplot.flierprops.linestylezboxplot.flierprops.linewidthzboxplot.boxprops.colorzboxplot.boxprops.linewidthzboxplot.boxprops.linestylezboxplot.capprops.colorzboxplot.capprops.linewidthzboxplot.capprops.linestylezboxplot.medianprops.colorzboxplot.medianprops.linewidthzboxplot.medianprops.linestyleFr   r   )zboxplot.verticalzboxplot.whiskerszboxplot.patchartistz-.)zboxplot.whiskersz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   r     s    z.test_boxplot_rc_parameters.<locals>.<listcomp>r   )rB   rC   rD   r   r   r
  rI  r3   r   r   Zget_childrenr   )r   r   Zrc_axis0Zrc_axis1Zrc_axis2	dict_listr   Zrc_axisr   r   r   test_boxplot_rc_parameters  sR    
rK  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 )Ni  ir;  r?  ir  g      g      @g      g      @i'  g      ?r   )r@  usermediansconf_intervalsrA  )ir{   )
rB   rC   rD   r   rB  r   r   r   r9  r  )r%   r   r   ZCIsr   r   r   test_boxplot_with_CIarray  s    
rN  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 )Nrn   i(#  r  X   i^  i@ ix  i  )r   r   Fminor)which)
rB   r   rT  r   r  r9  rn  r9   rL  r6   )r%   r   r   r   r   test_boxplot_no_weird_whisker  s    


rR  c           	   C   s   t ddd} t d| dg} t \}}tt |j| ddgd W d Q R X tt$ |j| | gddgddggd W d Q R X d S )	Nir;  r?  ir  r   r   )rL  )	rB   r   rB  r   r   ro   rp   r  r9  )r%   r   r   r   r   r   test_boxplot_bad_medians  s    rS  c           	   C   s   t ddd} t d| dg} t \}}tt |j| | gddggd W d Q R X tt" |j| | gddgdggd W d Q R X d S )	Nir;  r?  ir  r   r   )rM  )	rB   r   rB  r   r   ro   rp   r  r9  )r%   r   r   r   r   r   test_boxplot_bad_ci  s    "rT  c              C   sZ   t d} t \}}|| d d  dks4t|j| ddd d  dksVtd S )NrW   boxesr   r   )r  )rB   rG   r   r   r9  rw  r   )r%   r  r   r   r   r   test_boxplot_zorder  s    
rV  c              C   s   dt jd< dt jd< dt jd< t  \} }td}d|d	< |j|d
d}x.dD ]&}x || D ]}| dks^tq^W qPW |d d  dkst|d d  dkstd S )Nr   zlines.markerrk   zboxplot.flierprops.markerrD  zboxplot.meanprops.markerr   r  rU   T)r+  )ZwhiskersZcapsrU  Zmediansr   r4  r   Zmeans)r   r   r   rB   rG   r9  Z
get_markerr   )r   r   Z	test_dataZ
bxp_handleZ	bxp_linesZ	each_liner   r   r   test_boxplot_marker_behavior  s    




rW  z&boxplot_mod_artists_after_plotting.pngc              C   sZ   dddddddg} t  \}}|j| dd}x(|D ] }x|| D ]}|d	 q@W q2W d S )
Ng333333?g)\(?gQ?gQ?gQ?gQrk   )r  r   )r   r   r9  r  )r%   r   r   bpkeyr  r   r   r   &test_boxplot_mod_artist_after_plotting&  s    
rZ  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  )rB   rC   rE   )r}   r  r   r   r   r   6  s    z1test_vert_violinplot_baseline.<locals>.<listcomp>r   r   )r6  r+  showextremashowmediansr  )r6  r+  r[  r\  r   )rB   rC   rD   r   r   r  
violinplotr   )r   r   r   r   r   r   test_vert_violinplot_baseline1  s    r^  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r   G  s    z2test_vert_violinplot_showmeans.<locals>.<listcomp>r   r   r   )r6  r+  r[  r\  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   test_vert_violinplot_showmeansB  s
    r_  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r   Q  s    z4test_vert_violinplot_showextrema.<locals>.<listcomp>r   r   r   )r6  r+  r[  r\  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r    test_vert_violinplot_showextremaL  s
    r`  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r   [  s    z4test_vert_violinplot_showmedians.<locals>.<listcomp>r   r   r   )r6  r+  r[  r\  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r    test_vert_violinplot_showmediansV  s
    ra  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r   e  s    z0test_vert_violinplot_showall.<locals>.<listcomp>r   r   g?g?g?g?g333333?gffffff?g?g333333?)r6  r+  r[  r\  	quantiles)r   r  rB   rC   rD   r   r]  )r   r   r   r   r   test_vert_violinplot_showall`  s    rc  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r   p  s    z8test_vert_violinplot_custompoints_10.<locals>.<listcomp>r   r   rW   )r6  r+  r[  r\  points)r   r  rB   rC   rD   r   r]  )r   r   r   r   r   $test_vert_violinplot_custompoints_10k  s
    re  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r   z  s    z9test_vert_violinplot_custompoints_200.<locals>.<listcomp>r   r   r]  )r6  r+  r[  r\  rd  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   %test_vert_violinplot_custompoints_200u  s
    rf  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z2test_horiz_violinplot_baseline.<locals>.<listcomp>r   Fr   )r6  r  r+  r[  r\  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   test_horiz_violinplot_baseline  s
    rg  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z5test_horiz_violinplot_showmedians.<locals>.<listcomp>r   Fr   r   )r6  r  r+  r[  r\  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   !test_horiz_violinplot_showmedians  s
    rh  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z3test_horiz_violinplot_showmeans.<locals>.<listcomp>r   Fr   r   )r6  r  r+  r[  r\  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   test_horiz_violinplot_showmeans  s
    ri  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z5test_horiz_violinplot_showextrema.<locals>.<listcomp>r   Fr   r   )r6  r  r+  r[  r\  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   !test_horiz_violinplot_showextrema  s
    rj  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z1test_horiz_violinplot_showall.<locals>.<listcomp>r   Fr   g?g?g?g?g333333?gffffff?g?g333333?)r6  r  r+  r[  r\  rb  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   test_horiz_violinplot_showall  s    rk  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z9test_horiz_violinplot_custompoints_10.<locals>.<listcomp>r   Fr   rW   )r6  r  r+  r[  r\  rd  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   %test_horiz_violinplot_custompoints_10  s
    rl  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 )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z:test_horiz_violinplot_custompoints_200.<locals>.<listcomp>r   Fr   r]  )r6  r  r+  r[  r\  rd  )r   r  rB   rC   rD   r   r]  )r   r   r   r   r   &test_horiz_violinplot_custompoints_200  s
    rm  c           	   C   sR   t  } tjd dd tdD }tt | j	|tdd W d Q R X d S )Ni@ 3c             S   s   g | ]}t jjd dqS )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z1test_violinplot_bad_positions.<locals>.<listcomp>r   r   )r6  )
r   r  rB   rC   rD   r   ro   rp   r  r]  )r   r   r   r   r   test_violinplot_bad_positions  s
    rn  c           	   C   sZ   t  } tjd dd tdD }tt  | j	|tddddgd W d Q R X d S )	NiA#c             S   s   g | ]}t jjd dqS )r   )r  )rB   rC   rE   )r}   r  r   r   r   r     s    z.test_violinplot_bad_widths.<locals>.<listcomp>r   r   r   rn   )r6  r9  )
r   r  rB   rC   rD   r   ro   rp   r  r]  )r   r   r   r   r   test_violinplot_bad_widths  s
    ro  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 d Q R X d S )	Nil r   )r  g?g?g      ?gffffff?)rb  )
r   r  rB   rC   rD   rE   ro   rp   r  r]  )r   r   r   r   r   test_violinplot_bad_quantiles  s
    rp  c           	   C   s   t  } tjd tjjddg}tt | j	|ddddggd W d Q R X tt | j	|d	ddd
ggd W d Q R X d S )Niq4r   )r  g?g?g333333?g?)rb  gg      ?)
r   r  rB   rC   rD   rE   ro   rp   r  r]  )r   r   r   r   r   $test_violinplot_outofrange_quantiles  s    "rq  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 )Ni+r   )r  g?g333333?g?)rb  )rB   rC   rD   rE   r   r]  )r)   r*   r   r   r   r   r   %test_violinplot_single_list_quantiles  s    rr  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 )Ni+r;  )r  r@  rF  r  r   r   rn   )rL  Z	ABCDEFGHIr  )	rB   rC   rD   rU  rE   r  r   r]  values)r)   r*   r:  s1s2Zs3r   r   r   test_violinplot_pandas_series  s    &rv  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   rW   rn   rE  r   r   F)r6  Zmanage_ticks)
r   r   r  rd   rB   rC   rD   rE   r9  r   )r  r   Zold_xlimr   r   Znew_xlimr   r   r   test_manage_xticks  s    rw  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   rn   )r6  r   )g      @g      @c             S   s   g | ]}|  qS r   )get_text)r}   r   r   r   r   r     s    z+test_boxplot_not_single.<locals>.<listcomp>r   5)r   r   r9  rB   rC   rx   rB  r   rd   r   r  
get_xticksr  )r   r   r   r   r   test_boxplot_not_single  s    
r{  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)r  format)r   rb   r3   r   updateioBytesIOsavefig)r!  r   r   r   test_tick_space_size_0"  s    r  Zerrorbar_basicZerrorbar_mixedc        
   	   C   s  t jdddt j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 )#Ng?r   g      ?)r   g?g?)r5  r6  z&Simplest errorbars, 0.2 in x, 0.4 in yr   T)rb  rc  r   )r   r   rk   )r6  r   zVert. symmetric)nbins)r   r   )r5  r   rQ  zHor. symmetric w/ alpha)r   r   z--o)r6  r5  r   zH, V asymmetric)r   r   r   g{Gz?r  )r6  r5  r   ecolorZcapthickzMixed sym., log yzVariable errorbars)r%   r#   r%   r#   )r5  r6  r   )rB   rG   Z
longdoubler  r|  r   r   r   r3  rf  r   locator_paramsrn  maximumZsuptitle)
r%   r#   r6  r5  r   r   r   ZylowerZ
yerr_lowerr   r   r   r   test_errorbar+  s@    


$




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 )NrW   r   )r   r   ry  C1C2)
r   r   rB   rG   r3  rb   r  to_rgba	get_colorr   )r  r   r%   r#   r  r  r  Zln1r   r   r   test_errorbar_colorcycle`  s    
r  c          
      s   t ddd  fddtdD }|  }| }xTt|dddd	gD ]>\}}|j ||d
 dddd |j ||d
 dd|dd qHW d S )Ng?r   g      ?c                s   g | ]}t   | qS r   )rB   r  )r}   re  )r%   r   r   r   r  s    z.test_errorbar_cycle_ecolor.<locals>.<listcomp>ry  r  r  r  g      ?r/  rk   r  )r6  rm   rP   r  )r6  rm   rP   r   r  )rB   rG   r   r   r
  r3  )r)   r*   r#   ZaxtZaxryir   r   )r%   r   test_errorbar_cycle_ecoloro  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 d Q R X t	
t |j|||dd W d Q R X t	
t |j||||dd	 W d Q R X d S )
Ng?r   g      ?g?r   rk   )r6  r   )r5  r   )r6  r5  r   )r   r   r   rB   rG   r  r|  vstackr  ro   rp   r  r3  )r   r   r%   r#   Zyerr1r6  r5  r   r   r   test_errorbar_shape~  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 )"Ng      ?g      @g?g?dottedr   )r5  r6  r  r   Tr   r   r@  r   )r5  r6  uplimsr  r   r   r   rF  g      ?r   )r5  r6  lolimsr  r   g      ?rk   magenta)rP   r  r5  r6  r  r  r  r   g333333?rn   r  g @r   r   cyan)rP   r  r5  r6  xlolimsxuplimsr  r  r  r  capsizer   )r   g      @zErrorbar upper and lower limits)
rB   rG   r  r   r   r3  Z
zeros_likeZ	full_liker  rf  )r%   r#   r5  r6  r  r   r   r  r  r  r  r   r   r   test_errorbar_limits  s@    






r  c              C   sh   t d} t d}tj| |dddd\}}}|d ks:tx(|D ] }t | tdks@tq@W d S )Nr   r   r   )r5  r6  r   ry  )	rB   rG   r   r3  r   rg  r  r  r  )r%   r#   plotliner  ZbarlinesZerrbarr   r   r   test_errobar_nonefmt  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   r>   z	steps-midroundr|  r}  Zbevel)
r5  r6  r  rP   r  r  Zdash_capstyleZdash_joinstyler  r~  )rB   rG   r   r3  Zget_fillstyler   Zget_drawstyle)r%   r#   r  r  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   rW   r   r   g      ?z--r   r  )r%   r#   r6  r  rP   r)  rn   z	tab:greenr&  r#   )r%   r#   r6  r   r  rP   r)  r   r  ztab:bluez-.rk   r   )r%   r#   r6  r   r  rP   r)  r  r!  r  r0  )r  rP   r)  r   r  )Z
prop_cycle)r%   r#   r6  )r%   r#   r6  r   )r%   r#   r6  r   )r   r3  r  r   r   rc)r)   r*   r   Z_cycler   r   r   test_errorbar_with_prop_cycle  s     r  c           	   C   s   t ddd} | d|   }|d }t  }tjtdd |j| ||dd W d Q R X tjtdd |j| ||d	d W d Q R X tjtd
d |j| ||ddgd W d Q R X tjtdd |j| ||dd W d Q R X d S )Nr   r   r   r  znot a tuple of two integers)r.  )r   r   rn   )
errorevery)g?rn   znot a valid NumPy fancy indexFTznot a recognized valueZfoobar)	rB   r   r   r   r   ro   rp   r  r3  )r%   r#   r6  r   r   r   r   test_errorbar_every_invalid  s     r  c       	   
   C   sB  t ddd}|d|  }|d }| }|  }xt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 qFW |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   r;  g{Gz?r   )r  r  r   g @)r   r  r   )r  r   r   g?)r   r   rk   )r  r  r   )r  )r  r   g?rn   ry  )r  r  r  r   r   FTr   r  )rB   r   r   r
  r3  rb   r  )	r)   r*   r%   r#   r6  rK   rJ   r   shiftr   r   r   test_errorbar_every  s6    
(*
,,,,r  
elinewidthc             C   s(   t jdddgdddgdddg| d d S )Nr   r   rn   )r6  r  )r   r3  )r  r   r   r   test_errorbar_linewidth_type-  s    r  c             C   s   |   }td}tddtjtjdg}tddtjtjdg}|||| |  }tddtjtjdg}tddtjtjdg}|ddgddgddg |jdgdgdgdd	 d S )
Nr   r   r   rn   r   r  r   ry  )r   )ry   r   rB   r   rt  r3  )r)   r*   r   xsysesr   r   r   test_errorbar_nan4  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   rn   rE  r   rW   r  r[  T)r\  rd  r%   )r\  rd  r   )rB   r   r   r   rX  )d1d2r   r   r   r   r   r   test_hist_stacked_stepfilledB  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   rW   r  r   rn   rE  r   )r.   r   )rB   r   r   r   rX  )r  r  r   r   r   r   r   test_hist_offsetP  s
    r  zhist_step.pngc              C   sD   t ddd} t \}}|j| dd |dd |dd	 d S )
Nr   rn   rE  rZ  )r\  r   rW   rU   r   )rB   r   r   r   rX  r  r  )r  r   r   r   r   r   test_hist_stepZ  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   rW   r  r   rn   rE  rZ  r0   )r\  r1   )rB   r   r   r   rX  )r  r  r   r   r   r   r   test_hist_step_horizd  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   rW   r  r   rn   rE  g{Gz?g      @g?g       @r[  T)weightsr\  rd  )rB   r   r   r   rX  )r  r  Zw1Zw2r   r   r   r   r   test_hist_stacked_weightedm  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 )	Ng?r   r   zC2-.zk+zC1-. )linefmt	markerfmtbasefmtr   r  )rB   r   r   r   r   stemr   r&   )r  r%   r   r   r   r   r   	test_stemx  s    r  c              C   s   dd } t  \}}dddg}dddg}| ||d	dd
g|fd | |||||fd | |j||dd||fd | |||d||fd | |j||ddd||fd | |j|ddd	dd
g|fd | ||dd	dd
g|fd d S )Nc             S   s8   t t| j \}}||d ks$t||d ks4td S )Nr   r   )mapr  Z
markerliner  r   )Zstem_containerexpectedr%   r#   r   r   r   _assert_equal  s    z%test_stem_args.<locals>._assert_equalr   rn   r   r@  rF  r;  r   r   )r  zr--)r  zb--)r  r  )r   r   r  )r  r   r   r%   r#   r   r   r   test_stem_args  s    

 r  c              C   s@   t dd\} }tjdtjdg}ddg}||| d S )Nr   z2013-9-28 11:00:00z2013-9-28 12:00:00r   r]  )r   r   dateutilparserparser  )r   r   r  r  r   r   r   test_stem_dates  s
    
r  zstem_orientation.pngc          	   C   sB   t ddt j d}t \}}|j|t |ddd| dd d S )	Ng?r   r  zC2-.ZkxzC1-.r0   )r  r  r  r  r1   )rB   r   r   r   r   r  r   )r  r%   r   r   r   r   r   test_stem_orientation  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   rn   rE  r   rW   r  r[  Tg      ?)r\  rd  rQ  )rB   r   r   r   rX  )r  r  r   r   r   r   r   "test_hist_stacked_stepfilled_alpha  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   rn   rE  r   rW   r  rZ  T)r\  rd  )rB   r   r   r   rX  )r  r  r   r   r   r   r   test_hist_stacked_step  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   rn   rE  r   rW   r  T)rd  rk  )rB   r   r   r   rX  )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   rn   rE  rW   r[  )r.   r\  )rB   r   r   r   rX  rG   )r  r   r   r   r   r   test_hist_step_bottom  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   rn   r[  )ra  r\  )r   rX  r   get_xy)ra  r   r  polygonr   r   r   r   test_hist_stepfilled_geometry  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   rn   rZ  )ra  r\  )r   rX  r   r  )ra  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   rn   g      ?r[  )ra  r.   r\  r   g      @)r   rX  r   r  )ra  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   rn   g      ?rZ  )ra  r.   r\  r   g      @)r   rX  r   r  )ra  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   rn   Tr[  )ra  rd  r\  r   )r   rX  ru  r   r   r  )ra  data_1data_2r  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   rn   TrZ  )ra  rd  r\  r   )r   rX  ru  r   r   r  )ra  r  r  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   rn   Tg      ?r[  )ra  rd  r.   r\  r   g      @r   r  g      @)r   rX  ru  r   r   r  )ra  r  r  r  r   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   rn   Tg      ?rZ  )ra  rd  r.   r\  r   g      @r   r  g      @)r   rX  ru  r   r   r  )ra  r  r  r  r   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@  i  r|  rE  iX  i6  i      r  r  i  r?  r?  r     r  i,  r   rW   i+  r{   i  )gXxn?g      ?g        )g        g      ?g `p?)g        g      ?gǟ?)g        gˢ`?g      ?)gC?g        g      ?)gK?g        g      ?r   rH  z yellowr  r  r^  mid)ra  r\  r  r   r   zupper right)g      ?g      ?r   )r!   Zbbox_to_anchorZncol)r   r   rX  r&   )r  r  labelsr   r   r   r   r   test_hist_stacked_barU  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 )NrW   rE  r   r   r   r^  )r\  r.   )rB   r   r   rX  tolistr   )r!  r   r   r   %test_hist_barstacked_bottom_unchangedg  s    r  c              C   s,   t  \} }|jg tdtdgdd d S )NrW   rZ  )r\  )r   r   rX  r   )r   r   r   r   r   test_hist_emptydatam  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   )r   r  Z
_nolegend_Z00)r   r   rX  r7   r   )r   r   r  barsr   r   r   test_hist_labelsr  s    r  Ztransparent_markersc              C   s:   t jd t jd} t \}}|j| dddd d S )Nr   r  r  r   r   )r)  rV   )rB   rC   rD   r   r   rb   )r   r   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
}xt|D ]\}}x|t|D ]p\}}	xft|D ]Z\}
}|| j|d |
d df||	|d| || j|d |
d df|	|d| qbW qPW q>W x|D ]}|ddddg qW d S )Nr   )rc  )r   r   r   r   )r   r   r   g      ?)r   r   r   r   )r   r   r   g      ?g?r   rE  )r  r  r   rk   )r)  r  rQ  rn   r%   )r  rQ  rU   r   r   r   )r   r   rK  r   rb   r   )r   r   ZrcolorsZbcolorsalphaskwr   rQ  r  Zrcolorr  Zbcolorr   r   r   r   test_rgba_markers  s    4
r  Zmollweide_gridc              C   s    t  } | jdd}|  d S )N	mollweide)rG  )r   r   ry   rL  )r   r   r   r   r   test_mollweide_grid  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  )rG  ih  g       @r  rn   )r   r   ry   rB   r   r   rJ  r  r  r  transProjectionr   invertedr   r   )r   r   ZlonZlatllr   Zll2r   r   r   &test_mollweide_forward_inverse_closure  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  )rG  r   r   i  rn   )r   r   ry   rB   r   rJ  r  r  r  r  r  r   r   r   )r   r   r%   r#   r   r  xy2r   r   r   &test_mollweide_inverse_forward_closure  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   g      ?rE  rW   )r   r)  rV   r   r   )r   r)  rV   r   rQ  r   r  rF  )rB   rC   rD   r   r   rb   )r   r   r   r   r   r   r    s    
  
	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   rM   rE  r  r   gffffff?g      ?r  gQ?ir   g      ?rW   r   r   rn   )r  lineoffsetslinelengths)r   r   lor  r   r   r  r  )r  r  r  r   )rB   rC   rD   r  ru  rG   r   r   ry   r  r   )r>  data2r   Znum_datasetsZcolors1Zcolors2r  Zlineoffsets1Zlineoffsets2r  Zlinelengths1Zlinelengths2r  r   axobjZcollsZnum_collectionsr   r   r   test_eventplot  s@    


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   rM   rE  r  N)rB   rC   rD   r  r   r   ry   r  )r>  r  r   r   r  r   r   r   test_eventplot_defaults  s    r  r  )z0.5)z
tab:orangeztab:pinkztab:cyanZbLacK)r   )r   r   r   N)r   r   r   g      ?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}x$t||D ]\}}t	|
 | qW d	S )
zBTest the *colors* parameter of eventplot. Inspired by issue #8193.r   r   r   rn   c             S   s   g | ]}|d k	r|ndqS )Nry  r   )r}   r   r   r   r   r   4  s    z)test_eventplot_colors.<locals>.<listcomp>r   )r  N)ru  rB   Zbroadcast_tor  Zto_rgba_arrayr   r   r  r
  r   r  )r  r   r  r   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
    MatplotlibDeprecationWarning rather than overriding the 'plural' versions
    (e.g., to prevent 'color' from overriding 'colors', see issue #4297)
    r   rE  rW   r0  r!  r   r  r   r   rl   Zdasheddashdotr  )r  r   r  r   r  rm   rn   c             s   s   | ]}t |jtV  qd S )N)
issubclasscategoryr   )r}   Zwir   r   r   re  ]  s   z0test_eventplot_problem_kwargs.<locals>.<genexpr>N)rB   rC   rD   r  r   r   ry   r  ru  r   rg  )Zrecwarnr>  r  r   r   r  r   r   r   test_eventplot_problem_kwargsD  s     r  c              C   s.   t dd\} }|jg gdgd t   d S )Nr   )g        g        g        g        )r  )r   r   r  r   )r   r   r   r   r   test_empty_eventplota  s    r  r   r1   verticalr0   c             C   s>   |dkri nd|i}t dd\}}|j| f| t   dS )z#Introduced when fixing issue #6412.Nr1   r   )r   r   r  r   )r   r1   optsr   r   r   r   r   test_eventplot_orientationg  s    r  c             C   s   t  dddt  dddt  dddg}t  dddt  dddg}| }|j|dd |j|dd |  }|||g d S )	Ni  r   r   rn   r   r  r   )r  )r$  r   r  )r)   r*   Zts_1Zts_2r   r   r   r   test_eventplot_units_listq  s    r  zmarker_styles.pngc           	   C   sz   t  \} }xhtttjjjdd dD ]J\}}|j|d d t	dd  t
dd | d|d|d  |d q(W d S )	Nc             S   s   t t| t |  S )N)r	  r   )r%   r   r   r   rq    rr  z$test_marker_styles.<locals>.<lambda>)rY  r   r   rW   r   )rm   rP   rV   r   )r   r   r   sortedr3   markersr  rb   rB   rG   r\   )r   r   r#   rP   r   r   r   test_marker_styles  s
    .r  zrc_markerfill.pngc              C   sV   t  \} }td}x:tdddgD ](\}\}}|tjd< |j|| |d q&W d S )Nr;  )r    r   )r.   rk   )r   rD  zmarkers.fillstyle)rP   )r   r   rB   rG   r   r3   r   rb   )r   r   r%   idxrv   rP   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 )NrW   ))rU   rU   )r   rU   )r   r   )rU   r   )rU   rU   )r   rU   )r   r   )rU   r   r   r  )rm   rP   r)  rU   r!  )r  r   r   r   rb   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 x6tdD ]*}|j|dd|d |j| dd|d qW |d d S )NrW   r   )r   r  r   r   )r   r   r  r   r;  r  r   r  rn   zaxvline and axhline zorder testr0  )r6  r  r   r   )r   r   r  zerrorbar zorder test)r  r   r   r   r   rb   rI   axvlinerf  rB   r  r3  )r%   r   r   r#   r6  r  r   r   r   test_eb_line_zorder  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)g?rW   )gMbP?r   )rY   rZ   g333333?g333333?z.-)r   gMbP?)rW   g{Gz?r  )r   r   rW   gMbP?g{Gz?)r   rc   r   axline)r)   r*   r   r   r   r   test_axline_loglog  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 )N)rU   r   )rY   rZ   )r   r   )r   r   )r   r   r  )r   )r   g      ?)r   g      ?r  )gffffffg      r   r  )sloper   )r   g      g      ZC4)g      r   infr  rU   r   g      ?)r   rc   r  r   rb   rI   r  )r)   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 )N)rU   r   )rY   rZ   )r   r   r   )r  r   )r   g      ?r  )r  r   r   )g      ?g      ?r   r  )g      ?r   )g      ?r   r  )r   r   rU   )r   )r   rc   r  r   rb   )r)   r*   r   r   r   r   test_axline_transaxes  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 )N)rU   r   )rY   rZ   )r   r   r   )r  r   )g      ?g      ?r   r  )r  r   r   r   r  )r   r   )r   rW   rn   r   rW   )r   )r   rc   r  r   set_size_inchesrb   )r)   r*   r   r   r   r   test_axline_transaxes_panzoom  s    r  c           	   C   s   t  \} }tt |d W dQ R X tt |jdddd W dQ R X |d tt |jddd W dQ R X |d |d tt |jddd W dQ R X |d tt |dd t 	  W dQ R X dS )z3Exactly one of *xy2* and *slope* must be specified.)r   r   N)r   r   r   )r  r   r  )
r   r   ro   rp   rq   r  r  rn  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
 x"||||	gD ]}|dd qW | | ks4t| | ksJt| |	 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   rn   r   r   r;  irF  r   r  )r  r   r  )r   rF  )rb  rH  r0  z--)r  r   rm   r  rW   r  r   rU   r  ry  r   r     r  )
r   r   rH   rB   rt  r  re   r   r   masked_equal)r  r   r  r   r   r   r  r   r   r+  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 d Q R X d S )Nzlines.colorr   g      ?r   r   )	r   r   ru   r   rH   r  r  r  r   )r   r   r  r   r   r   test_vlines_defaultB  s    r  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
 x"||||	gD ]}|dd qW | | ks4t| | ksJt| |	 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   rn   r   r   r;  irF  r   r  )r  r   r  )r   rF  )rb  rH  r0  z--)r  r   rm   r  rW   r  r   rU   r  ry  r   r  r  r  )
r   r   hlinesrB   rt  r  rd   r   r   r  )r   r  r  r   r   r   r  r   r   r+  r	  r  r  r  r   r  r  Zy5Zxmin5Zxmax5r   r   r   test_hlinesI  s2    r  c           	   C   sN   t  \} }tddi* |ddd}tj| ds@tW d Q R X d S )Nzlines.colorr   g      ?r   r   )	r   r   ru   r   r  r  r  r  r   )r   r   r  r   r   r   test_hlines_defaultq  s    r  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 )Nr   r   r   r   rH  r   r   r   r   )r  r   rn   )ry   rH   r  )r)   r*   r   Ztest_colorsZ	expect_xyZexpect_colorr   r   r   test_lines_with_colorsx  s    


r  Zstep_linestylec           	   C   s^  t d } }tdd\}}| }ddddg}xvt||D ]h\}}|j| |d|dd	 |j| |d
 d|dd	 |j| |d d|dd	 |ddg |ddg q>W | ||d
 |d d}tdd\}}| }ddddg}xtt||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 qW d S )NrW   r   r/  z--z-.r&  r   pre)r   rm   r  r   r  r  rU   r;  )rM  Y0Y1Y2rM  r  )r   rm   r  r   r  r  )	rB   rG   r   r   r  r
  rZ  r  r  )r%   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)rF  rF  r   r   r   )radiusr   r   T)Zmatch_originalr   r  r   r   r{  iig?g      ?g      ?z0.5r  )r   r   r  Circleru   r  ZPatchCollectionZset_offsetsZset_linewidthsZset_edgecolorsr   r  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   rB   Zint32Zint64r   Zget_subplotspecZget_geometryr   )r   r   r   r   test_subplot_key_hash  s    r'  zspecgram_freqs.pngzspecgram_freqs_linear.pngzspecgram_noise.pngzspecgram_noise_linear.pnggQ?)r   r   rv   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}x||f||fgD ]\}	}
|
d }tdtt|
 }x8tt d|D ] \}}|j|	|
||||d q&W xBtt d|D ]*\}}|j|	|
||||dt j d q`W qW dS )z)Test axes.specgram in default (psd) mode.rR   zimage.interpolationi  g      $@r   r   r  g@gffffff@g'@rW   r   r   r   )r   r   onesidedtwosidedrn   )NFFTFsnoverlappad_tosidesr  )r*  r+  r,  r-  r.  r   r  N)r3   r   intrB   r  rG   rW  r   r   multiplyouterrd  rC   rD   rb  rx   ceillog2r
  r   r   r   specgramr  LogNorm)re  r+  fstims
NFFT_freqsr%   y_freqs
NFFT_noisey_noise	all_sidesr#   r*  r,  r-  r   r.  r   r   r   test_specgram  s,    
,(
r<  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}	x||f||fgD ]\}}
|
d }tdtt|
 }x:tt d|	D ]"\}}|j||
||||dd q:W xDtt d|	D ],\}}|j||
||||ddt j d	 qvW qW dS )z%Test axes.specgram in magnitude mode.rR   zimage.interpolationi  g      $@r   r   r  g@gffffff@g'@r   r   r   r   )r   NrU   rW   r   r(  r)  rn   Z	magnitude)r*  r+  r,  r-  r.  r?   r  )r*  r+  r,  r-  r.  r?   r   r  )r3   r   r/  rB   r  rG   r   r   r0  r1  rd  rB  rC   rD   rW  rb  rx   r2  r3  r
  r   r   r   r4  r  r5  )re  r+  r6  r7  r%   r#   r8  r9  r:  r;  r*  r,  r-  r   r.  r   r   r   test_specgram_magnitude  s.    
,&

r=  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}	x||f||fgD ]\}}
|
d }tdtt|
 }xzdD ]r}xjtt d|	D ]R\}}|j||
|||||d tt  |j||
|||||dd W dQ R X qDW q*W qW dS )z,Test axes.specgram in angle and phase modes.rR   zimage.interpolationi  g      $@r   r   r  g@gffffff@g'@rW   r   r   r   )r   NrU   r   r(  r)  )r  Zphasern   )r*  r+  r,  r-  r.  r?   dB)r*  r+  r,  r-  r.  r?   r   )r3   r   r/  rB   r  rG   r   r   r0  r1  rd  rB  rC   rD   rW  rb  rx   r2  r3  r
  r   r   r   r4  ro   rp   r  )re  r+  r6  r7  r%   r#   r8  r9  r:  r;  r*  r,  r-  r?   r   r.  r   r   r   test_specgram_angle  s0    
,&


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.i,  Nr  )r+  r   rM   `   )r   r4  rB   r\   Z
get_extentr   )specfreqsr   rD  r@   rA   Zfreq0Zfreq1r   r   r   test_specgram_fs_none7  s    rC  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'.i  upperzimage.originrO   N)rB   rG   r   r   r   r   r4  )r)   r*   r   signalr   r   r   test_specgram_origin_rcparam>  s    



rF  c           	   C   s<   t d} t | }tt tj|dd W dQ R X dS )z4Ensure passing origin as a kwarg raises a TypeError.i  rO   )rQ   N)rB   rG   r   ro   rp   rq   r   r4  )r   rE  r   r   r   test_specgram_origin_kwargP  s    

rG  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}x||f||fgD ]\}	}
|
d }t dtt|
 }xptt d|D ]X\}}|jt|	f|
|||d|}t|d|dd kslt|jddd q$W xhtt d|D ]P\}}|j|	|
|||d|}t|d|dd kst|jddd qW qW d S )Ni'  g      Y@r   r   r  g@gffffff@g'@i  r   r   r   )r   r.  r   r(  F)r.  return_liner)  Trn   )r*  r+  r,  r-  rH  r   )xlabelylabel)r/  rB   r  rG   r   r   r0  r1  rd  rC   rD   rb  rx   r2  r3  r
  r   r   r   psdrW  ru  r  r   rc   csd)re  r+  r6  r7  r%   Zys_freqsr9  Zys_noiseZ
all_kwargsr  r*  r,  r-  r   r  retr   r   r   test_psd_csdY  s2    ,&
rN  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}	xN||gD ]@}
xJtt d|D ]2\}}|j|
fd|i|	\}}}|jddd qW xRtt d|D ]:\}}|j|
fd|i|	ddi\}}}|jddd qDW xLtt d|D ]4\}}|j|
fd|i|	\}}}|jddd qW xLtt d|D ]4\}}|j|
fd|i|	\}}}|jddd qW qW d S )Ni'  g      Y@r   r   r  i  r   r   r   rW   rn   )r   g      ?r   r(  r)  )r+  r-  r.  r   )rI  rJ  r   r>  )r/  r  rB   r2  r3  rG   r   r   r1  rd  rC   rD   rB  rb  rx   r
  r   r   r   Zmagnitude_spectrumrc   Zangle_spectrumZphase_spectrum)re  r+  Zfstims1r*  r-  r%   r8  r:  r;  r  r#   r   r.  rA  rB  r  r   r   r   test_spectrum{  s4    *"

rO  c           	   C   sv   t  d} x| D ]}|jjdd qW tjdd6 | d td | d 	tdtd W d Q R X d S )	Nr   T)r  rp  )rq  r   r   r   )
r   r   r   r9   rc   rB   rs  rK  r  rL  )r   r   r   r   r   test_psd_csd_edge_cases  s    
rP  c             C   sH   |   }| }| }|  |  |  }|j  |j  d S )N)ry   r   r   remover6   Ztick_bottomr9   Z	tick_left)r)   r*   rJ   Zax_twinxZax_twinyrK   r   r   r   test_twin_remove  s    
rR  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spines)r   r   r   r   make_patch_spines_invisible  s    
z5test_twin_spines.<locals>.make_patch_spines_invisible)r   rn   )rH  g      ?)r"   )r  g333333?Tr   r   r   zb-rn   zr-r  r{   r   zg-r   A   g      ?)r  r  r#   )r   r  r   r%   )r   r   r  ry   r   rT  r"   set_positionrS  rb   r  r  r9   r   r  r  rK  tick_params)	rU  r   hostZpar1Zpar2r$  r%  Zp3Ztkwr   r   r   test_twin_spines  s0    rZ  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@zaxes.linewidthzlines.linewidthr   i  iL  i  i  i6  i-  ih  i  r   g     @@z#BEAED4)r   g?)r   rQ  z#7FC97Fg      ?)r   r  r   r  )r   r   )r   rQ  r   )
r3   r   r   r   ry   rB   r   r   rb   rx  )r   r   r   r   r   r   r   test_twin_spines_on_top  s&    

r[  z(grid_which, major_visible, minor_visible)r[   TT)majorTF)rP  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)z	axes.gridzaxes.grid.whichc             3   s   | ]}|j   kV  qd S )N)gridliner   )r}   tick)major_visibler   r   re    s   z*test_rcparam_grid_minor.<locals>.<genexpr>c             3   s   | ]}|j   kV  qd S )N)r]  r   )r}   r^  )minor_visibler   r   re    s   )ru   r   r  r   r   rB  r   rg  r6   
majorTicksr   
minorTicks)Z
grid_whichr_  r`  r   r   r   )r_  r`  r   test_rcparam_grid_minor
  s    
rc  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)visibleT)
r   r   rL  rB  r   r6   ra  r]  r   r   )r   r   r   r   r   	test_grid  s    



re  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 d Q R X d S )	NTr\  rW   )resetrQ  	labelsizer   r   )r   z	axes.grid)r   r   rX  r6   ra  r]  r   r   rL  r   clear)r   r   r   r   r   test_reset_grid)  s    ri  c             C   sv   xL|| gD ]@}|  }|d |jdddddddd	d
dddd |  q
W x"| jD ]}|j  |j  qVW d S )NTinrW   r   ry  r  ry  r  r  r  g?rn   z--)	directionlengthr  r   padrg  
labelcolorlabelrotation
grid_color
grid_alphagrid_linewidthgrid_linestyle)ry   rL  rX  Zdraw_without_renderingr  r6   Zreset_ticksr9   )r)   r*   r   r   r   r   r   test_reset_ticks6  s    


rt  c              C   s>   t  } |  }|d |ddddg t| d d S )Ng      ?gr   g?g?)gg?)r   r   r   r  rb   r   re   )r   r   r   r   r   test_vline_limitJ  s
    
ru  zfv, fh, args)r   )r   r   c          	   C   s   t jd}tjtdd | ||dd W d Q R X tjtdd | |d|d W d Q R X tjtdd |||dd W d Q R X tjtdd ||d|d W d Q R X d S )	Nr   z"ymin must be a single scalar value)r.  )yminymaxz"ymax must be a single scalar valuez"xmin must be a single scalar value)r@   rA   z"xmax must be a single scalar value)r3   rN  Znum2datero   rp   r  )ZfvfhargsZbad_limr   r   r   test_axline_minmaxR  s    rz  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)rb  rc  r   r   r   rn   r   r  )r   r   rb   rd   re   r   )r   r   r"  r  r#  r   r   r   r   test_empty_shared_subplotsb  s    r{  c              C   s   xdD ]} t jddd\}}|d jd| dd |d  dksDt|d  | ksXtt jddd\}}|d jd| d |d  d	kstqW d S )
N)boxdatalimr   T)rb  r   r   )
adjustablesharer   )r~  r  )r   r   
set_aspect
get_aspectr   Zget_adjustable)r~  r   r   r   r   r   test_shared_with_aspect_1n  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)rb  r   r   r   )r  r   rn   r   )r   r   r  rb   r   rd   r   re   )r   r   r   r   r   test_shared_with_aspect_2{  s    r  c        	      C   s&  x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
 }xX|D ]P}| }|j	|j
 }|jj	|jj
 }|| | }t|d
t| d
kstqW qW d S )N)r|  r}  r   T)rb  r   r   )r~  r   g      ?rn   r   )r   r   r  rb   r   rd   r   re   Zbbox_inchesr  r  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  zerr, args, kwargs, match)r   r   z;axis\(\) takes 0 or 1 positional arguments but 2 were given)r  z.Unrecognized string foo to axis; try on or offzthe first argument to axis*r  z1axis\(\) got an unexpected keyword argument 'foo'c          	   C   s*   t j| |d tj|| W d Q R X d S )N)r.  )ro   rp   r   r   )errry  r  r.  r   r   r   test_axis_errors  s    r  c             C   sH   t  \}}t|d|  }|d |d t|jj|jj d S )Nztwin{}r   r   )r   r   r   r~  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)g        g      $@)g      $g      4@)g      $g      >@FT)Zvisible_only)r3   r   r   ry   rb   rd   r   re   rS  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)rg  out)rk  N)r   r   r   rX  )r   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)FrogsHogsDogsLogsr   r{   r  rW   yellowgreengoldlightskyblue
lightcoral)r   g?r   r   )rF  r  )rH  z%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 )N)r  r  r  r  r   r{   r  rW   r  r  r  r  )r   g?r   r   z%1.1f%%Tr"  r   r   )r  r  r  r  r  r  
wedgepropsr  )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_0  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 )N)r  r  r  r  r   r{   r  rW   r  r  r  r  )r   g?r   r   z%1.1f%%Tr"  r   r   )r   r   g      ?)	r  r  r  r  r  r  r  r5   r"  zCenter point)r   g?z->Zarc3)
arrowstyleZconnectionstylesquareZ	lightgrey)Zboxstyler   )r   r   r  r  r  )r   r  r   rK  r   )r  r  r  r  r   r   r   test_pie_center_radius  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 )N)r  r  r  r  r   r{   r  rW   r  r  r  r  )r   g?r   r   z%1.1f%%Tr"  r   r   )r  r  r  r  r  r  r  r  )r   r  r   )r  r  r  r  r   r   r   test_pie_linewidth_2  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 )N)r  r  r  r  r   r{   r  rW   r  r  r  r  )r   g?r   r   z%1.1f%%Tr"  )r  r  r  r  r  r  Zcounterclockr  )r   r  r   )r  r  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 )N)r  r  r  r  r   r{   r  rW   r  r  r  r  )r   g?r   r   z%1.1f%%Tr"  r   r   )r   r   )	r  r  r  r  r  r  r  framer5   rU   )r   r   )rn   r   r  )r   r  r   )r  r  r  r  r   r   r   test_pie_frame_grid8  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{   r  rW   r  r  r  r  )r   g?r   r   z%1.1f%%Tr"  )r  r  r  r  r  r  rotatelabelsr  )r   r  r   )r  r  r  r  r   r   r   test_pie_rotatelabels_trueS  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 )N)r  r  r  r  r   r{   r  rW   r  r  r  r  )r   g?r   r   z%1.1f%%Tr"  )r  r  r  r  r  r  Zlabeldistancer  r  g333333g333333?)r   r  r   rZ   r&   )r  r  r  r  r   r   r   test_pie_nolabel_but_legendb  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\}}}x||gD ]}x|D ]|}| |d kspt| |d kst| |d kst| |d kst|	 |d kst|
 |d ksXtqXW qNW d S )Nr  "   r  zLong name 1zLong name 2zLong name 3r5   r    r"  anchorr  r   )horizontalalignmentverticalalignmentr  rotation_moder  r   z%.2f)r  r  	textpropsr  r  r  r  r  r   )rK  r   r   r  get_har   get_vaget_rotationZget_rotation_modeget_sizer  )r   r  r  r  textsr  Ztxr   r   r   test_pie_textpropsp  s"    



r  c           	   C   s@   t  \} }tt  |jdddgdddgd W d Q R X d S )Nr   r   r   g?g?)r  )r   r   ro   rp   r  r  )r   r   r   r   r   test_pie_get_negative_values  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 )
Ng333333?g?T)r%   	normalizer   rU   g     v@gMbP?F)r   r   r  r8  r  r   )r   r   r%   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   rE   zset_x/yticklabelsr   rW   r   rg   r!  r   r  r  r   Z11Z12Z13Z14)r   r   rb   rB   rG   rf  
set_xticksr   
set_yticksset_xticklabelsset_yticklabelsrz  Z
get_yticksr  get_yticklabels)r   r   r$   r   r   r   test_set_get_ticklabels  s      r  c             C   s   |  }|ddddg |jddddgd	d
 |dddg |jddgdd |jddgdd |   }|jddddgddddgd	d
 |dddg |jddgddgdd dS )z
    Test that these two are identical::

        set_xticks(ticks); set_xticklabels(labels, **kwargs)
        set_xticks(ticks, labels, **kwargs)

    r   r   r   r  rg   r!  r   r  bold)Z
fontweightrn   r   T)rP  r  r  N)r   r  r  r  r  )r)   r*   r   r   r   r   test_set_ticks_with_labels  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 )NrW   g?r   )r  c             S   s   g | ]}|qS r   r   )r}   r   r   r   r   r     s    z.test_subsampled_ticklabels.<locals>.<listcomp>Z
bcdefghijkc             S   s   g | ]}|  qS r   )rx  )r}   r   r   r   r   r     s    r!  r  r  rf  r  )r   r   rb   rB   rG   r6   	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 d Q R X d S )NrW   g      ?g      @rg   r!  r   )r   r   rb   rB   rG   r6   r  ro   rp   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   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   rU   r   F)rd  r#   r[   )r   rQ  rl  )r   r   rb   Zsetpr  rX  )r   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   z
unit valuer   r   )r%   r   r   r   r   formatter_func  s    z.test_tick_label_update.<locals>.formatter_funcrU   r   r   r   rn   g      g      @c             S   s   g | ]}|  qS r   )rx  )r}   r^  r   r   r   r     s    z*test_tick_label_update.<locals>.<listcomp>r   z
unit value)r   r   r6   r   r   r  r  r   rB  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 x2tddD ]$}|jddgtd| d|d q"W x6tdddD ]$}|jd	d
gtd| d|d qZW d S )Ng?r   r   r   rk   )r  rW   r  rn   r   )r   r   r   r   rb   rB   r\   r   )r   r   r  r   r   r   test_o_marker_path_snap  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   rW   g        g      ?)r   r   g      ?r   )g      ?r   gɿ)r%   r#   )gɿg      ?)
ru  r  r  r   r   rb   r   r   rd   re   )r   r@   rA   rv  rw  r  r   r  r   r  r   r   r   r   test_margins  s:    



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xmargin)r   r   )	ru   rv   rw   r   r   rb   rc   rd   r   )r   r   r   r   r   test_set_margin_updates_limits,  s
    r  )rU   z margin must be greater than -0.5)r   rU   r%   rU   r#   zACannot pass both positional and keyword arguments for x and/or y.)r   r   r   z/Must pass a single positional argument for all*c          	   C   s:   t j| |d" t }| }|j|| W d Q R X d S )N)r.  )ro   rp   r   r   ry   r   )r  ry  r  r.  r   r   r   r   r   test_margins_errors4  s    r  c              C   s&   t  \} }|d |dg d S )Nr   )r   r   rX  )r   r   r   r   r   test_length_one_histJ  s    
r  c              C   s   t  } |  }|dd | dks,t| dks<t|jdd | dksXt| dksht|jdd | dkst| dkst|dd | dkst|	 dkst|jdd | dkst|	 dkst|jdd | dks
t|	 dkstd S )	Ng       @g      @)g       @g      @g      @)rD  )g       @g      @)rO   )g      @g      @)
r   r   ry   r  
get_xboundr   rd   r  
get_yboundre   )r   r   r   r   r   test_set_xy_boundP  s(    r  c              C   s8   dgd } t dd\}}|| |  |t  d S )NrW   r   r   )r   r   rZ  r  r  r  )Zmylistr   r   r   r   r   test_pathological_hexbinh  s    
r  c              C   s(   t  \} }|jddgddgd d d S )Nr   r   )r   )r   r   rb   )r   r   r   r   r   test_color_Nonep  s    r  c              C   s6   t  \} }|jddgddd }d| ks2td S )Nr   r   r  )r   )r   r   rb   r  r   )r   r   r  r   r   r   test_color_aliasv  s    r  c              C   s4   t  \} }|jtdgd tdd |  d S )Nr   r   )r   )r   r   rX  r   r&   )r   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   rn   )r   )r   r   decoderX  r   r&   )r   r   rg   r!  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 )	NrW   g^ 9^;r/   r   r   r"   r    r.   )rB   rC   r   r   rb   rB  r   r9   Z
offsetTextr  r8   r   Z
tick_rightr6   Zget_verticalalignmentra   )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 d Q R X d S )NF)zaxes.spines.leftzaxes.spines.rightzaxes.spines.topzaxes.spines.bottom)r3   r   r   r   )rH  r   r   r   test_rc_spines  s    r  zrc_grid.pngc           
   C   sp   t  } ddd}ddd}ddd}|||g}x:t|dD ],\}}t| | dd| W d Q R X q<W d S )NTr[   )z	axes.gridzaxes.grid.axisr%   r#   r   rn   )r   r   r   r3   r   ry   )r   Zrc_dict0Zrc_dict1Zrc_dict2rJ  r   rH  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 d Q R X d S )NFT)zxtick.bottomz	xtick.topz
ytick.leftzytick.right)r  r   tick1Ontick2On)	r   r   r   ry   r6   r9   _major_tick_kwr   _minor_tick_kw)r  r   r   xax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 d Q R X d S )NTF)z	xtick.topzytick.rightzxtick.bottomz
ytick.leftzxtick.minor.bottomzxtick.major.bottomzytick.major.leftzytick.minor.left)r  r   r  r  )	r   r   r   ry   r6   r9   r  r   r  )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   g      ?g      @g      @g      @mor  r   T)original)g      ?g?g?g?F)g333333?g?g      ?g?)rB   rG   r   r   r   rb   r   rd   re   r  r   r  r   r  r  )r%   r#   r   r   rY   rZ   r   r   r   test_square_plot  s    

r  c            	   C   s   t t td  W d Q R X t t td d  W d Q R X t t ttdtd W d Q R X t t. ttddtdddf W d Q R X d S )N)r   r   )r   rn   r   )r   rU   rU   r   )	ro   rp   r  r   rb   rB   r  rG   r^   r   r   r   r   test_bad_plot_args  s    "r  zxy, clsr   ))rn   r;  )r   r  rF  r  )r   r   r  )rn   r   c             C   s,   t  \}}t|j| |f |ks(td S )N)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 x.|jD ]$}| dksNt| dks:tq:W |d d |d d x.|jD ]$}| dkst| dkstqW d S )Nr   T)r   r   )r   r   r   )r   r   r  )r   r   r  rn  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 d Q R X t t tjdd W d Q R X d S )NT)r   )r   )ro   rp   rq   r   r   r   r   r   r   test_shared_bool6  s    r  c               C   s   t tddg dS )z4Violin plot should handle point mass pdf gracefully.r   N)r   r]  rB   r   r   r   r   r   test_violin_point_mass=  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 )	Nr%   r   r#   r  r   )r   r   r5  r6  )r   rB   rG   r\   )Zbase_xyZ
err_cyclerZxerr_cyZyerr_cyemptyZ	xerr_onlyZ	yerr_onlyZboth_errr   r   r   generate_errorbar_inputsB  s    $

4r  r  c             C   s    t  }|jf | }|  d S )N)r   r   r3  rQ  )r  r   Zebr   r   r   test_errorbar_inputs_shotgunX  s    r  Zdash_offsetc              C   sX   t  \} }tdd}t|}x0tdddD ] }|j||| |dfddd q0W d S )	Nr   rW   r   r   )rW   rW   r   r  )r  r   r   )r   r   rB   r   Z	ones_liker   rb   )r   r   r%   r#   r  r   r   r   test_dash_offset_  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aardvarkg      >@)rm  )r   rU   g?g        zaxes.titlepadg      R@)	r   r   rf  ZtitleOffsetTransZ
get_matrixr  r   r3   r   )r   r   r  r   r   r   test_title_padh  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 d Q R X tt |jddd W d Q R X d S )	Nr5   zaxes.titlelocationr  r/   )r!   r"   r  Zfail)	r   r   r   rf  Z	get_titler   ro   rp   r  )r   r   r   r   r   test_title_location_roundtripx  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  rn   r   )r   r  r   )rl  r  r   rP  )rl  r  rQ  )r   r   rB   rG   r   rX  )r   r   r%   r   r   r   test_loglog  s
    r  ztest_loglog_nonpos.pngc              C   s   t dd\} }tdd}|d }d|d< d|d< xttdd	d
gdd|jD ]~\\}}}||kr|r|j||d d|d q|j||d dd qP|j||d dd |r|jd|d |rP|j	d|d qPW d S )Nrn   r   r  g      r;  ir   r  Zclipr   r   )r  )r   nonpositive)r   r   )r  )
r   r   rB   rG   r
  r   r   r   r  rn  )r   r   r%   r#   ZmcyZmcxr   r   r   r   test_loglog_nonpos  s     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   rn   )rW   rW   )r   rW   rW   )g      g      #@)r   r   rb   r  r   r  r%  r  r  rB   r  r  rX  rG   r`   )r   r   r   r   r   test_axes_margins  s0    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   rU   ry  )r   rQ  r  r6   get_major_locatorr   )r   r   r0  r   r   r   	_helper_x  s
    z&shared_axis_remover.<locals>._helper_xc             S   s<   |   }|  | dd | j  }|d dks8td S )Nr   r   rU   ry  )r   rQ  r  r9   r   r   )r   r   r0  r   r   r   	_helper_y  s
    z&shared_axis_remover.<locals>._helper_y)r%   r#   )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   rg  )r   r   r   r   g?g?)r  r   r   r   r   r   )r  r   r   r   r   r   r   shared_axes_generator  s    




r  c             C   s   | \}}|| d S )Nr   )r  r  r   r   r   r   r   test_remove_shared_axes  s    r  c              C   s`   t jddddd\} }|d d }|d d  }|  |dd t|d d  | d S )Nr   rg  )r   r   r   r   r   )r   r   rd   rQ  r  r   )r   r   r   Z	orig_xlimr   r   r   test_remove_shared_axes_relim  s    r	  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   T)r   r   ii  )ii  )rB   rG   rC   Zrandom_sampler  r   r   r  r  r  r   r   r   rd   re   )r  r   r   r   r   r   r   r   test_shared_axes_autoscale  s    "r
  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 )Nr  )r  r   i  r  r   )r   r   r9   r   Z
set_paramsr  r  rB  r   ru  r   r  )r   r   r   r   r   test_adjust_numtick_aspect  s    


r  zauto_numticks.pngc               C   s   t dd d S )Nr   )r   r   r   r   r   r   test_auto_numticks  s    r  zauto_numticks_log.pngc              C   s.   t  \} }dtjd< |ddgddg d S )NZround_numberszaxes.autolimit_modeg#B;g     j@gؗҜ<rW   )r   r   r3   r   r   )r   r   r   r   r   test_auto_numticks_log!  s    
r  c              C   s   t  \} }|g d d S )N)g?g      ?)r   r   r1  )r   r   r   r   r   test_broken_barh_empty)  s    r  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.i  r  r@  r   r   )r0  r   )r   r   )r   r   gUUUUUU?N)
r   r   r$  r1  r  r  Zverticesr&  r'  r   )r   r   Zd0ppr   r   r   test_broken_barh_timedelta.  s
     r  c             C   sD   | j ddd}td}tjdd}t \}}|||| d S )Nz
2000-01-01rW   )r4  rE  r  r@  )r7  rB   rG   rC   rx   r   r   r   )r:  timedepthr   r   r   r   r   r   test_pandas_pcolormesh7  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-03zdatetime64[D])r   )rN  rs  r   r   rN  rs  )r   )rB   rG   r   r   r   ru  rI  r   r   rL  r  rb   )r:  rN  rs  rM  r   Zwithout_zero_indexr   r   r   test_pandas_indexing_dates@  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   )r  r%   r#   ZxeZyer   r   rn   r   r   )columnsrL  )r5  r6  r   )rI  rB   rC   uniformr   r   r3  )r:  rM  r   r   r   r   r   test_pandas_errorbar_indexingK  s
    
r  c             C   s>   |  dddgdddgd}t \}}||j|d  d S )	Nr   r   r  r;  r   r   )ZXXYYr  )rI  r   r   rb   rL  )r:  rM  r   r   r   r   r   test_pandas_index_shapeS  s    r  c             C   sH   | j ddddddddddg
d}|jdd  }t \}}|| d S )Nr   r   rn   r   r   )r   )rU  Zilocr   r   rX  )r:  Zser_1Zser_2r   r   r   r   r   test_pandas_indexing_histY  s     r  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   )rg   r!  r   rg   r!  r5   )r  )rI  r   r   r   r  r!   rB  r   )r:  rM  r   r   r   r   r   test_pandas_bar_align_center`  s    r  c           	   C   sx   dd l m}  t }| |d}tjtdd |d W d Q R X | 	|d}tjtdd |d W d Q R X d S )Nr   z;The apply_tickdir function was deprecated in Matplotlib 3.5)r.  r  )
Zmatplotlib.axisr   r   r  ZXTickro   r1  r   Zapply_tickdirZYTick)Zmaxisr   r^  r   r   r   #test_tick_apply_tickdir_deprecationm  s    

r  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{   r   r  )rg  rn  rk  r   g      @r  g      >@)r   r   r9   set_tick_paramsra  _sizer   	tick1liner  label1r  )Zaxis_1r   r   r   .test_axis_set_tick_params_labelsize_labelcolor  s    
r!  c              C   s   t  } | jddddd xt| j| jfD ]d}|jd j dksDt|jd j	 dks\t|jd j
 dkstt|jd j dks(tq(W d S )Nr!  r   g      ?r  )rp  rr  rq  rs  r   z-.)r   r   rX  r6   r9   ra  r]  r  r   Zget_linewidthZ	get_alphaget_linestyle)r   r   r   r   r   test_axes_tick_params_gridlines  s    
r#  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 )NFTr\  )Z	labelleftZ
labelrightrQ  rP  r   )
r   r   rX  r9   ra  r   r   r   label2rb  )r   r   r   r    test_axes_tick_params_ylabelside  s    r%  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 )NTFr\  )labeltoplabelbottomrQ  rP  r   )
r   r   rX  r6   ra  r   r   r   r$  rb  )r   r   r   r    test_axes_tick_params_xlabelside  s    r(  c              C   s4   t   } | jtdd d\}| dks0td S )NrM   )rm   r/  )r   r   r   rb   r   r"  r   )r   lnr   r   r   test_none_kwargs  s    r*  c              C   s`   ddddg} t jtj| tjdddddgdd	}x*t|j| D ]\}}|jd |ks>tq>W d S )
Nr   r   r   rn   )r   r   r   r  )r  )	r   r  rB   r   Zuint8r
  r   r   r   )r  r!  r   r%   r   r   r   test_bar_uint8  s    $r+  zdate_timezone_x.pngg      ?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 )i  r      zCanada/Eastern)r   tzinfo)r$  r  tzgettz)r}   r%   r   r   r   r     s   z(test_date_timezone_x.<locals>.<listcomp>rn   )rE  r  )rH  r   r   zCanada/Eastern)r.  UTC)r   r   r   r   r=  )
time_indexr   r   r   test_date_timezone_x  s    r2  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 )i  r   r,  zCanada/Eastern)r   r-  )r$  r  r.  r/  )r}   r%   r   r   r   r     s   z(test_date_timezone_y.<locals>.<listcomp>rn   )rE  r  )rH  r   r   zCanada/EasternFT)r.  Zxdateydater0  )r   r   r   r   r=  )r1  r   r   r   test_date_timezone_y  s    r4  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 )i  r   r,  )r   r-  )r$  )r}   r%   )r0  r   r   r     s   z.test_date_timezone_x_and_y.<locals>.<listcomp>rn   )rE  r  )rH  r   r   r0  T)r.  r3  z
US/Eastern)r$  timezoneutcr   r   r   r   r=  )r1  r   )r0  r   test_date_timezone_x_and_y  s    
r7  zaxisbelow.pngc              C   s   t  jdddd} d}xt| |D ]\}}|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 || | |ks$tq$W d S )Nrn   T)rc  r   r   )Fr  T)r   rW   rW   r  )r   r   )rn   rn   r0  )r   r   r/  )r   rm   r   F)r    r.   r/   r"   )r   r   r   r
  rb   r  r#  r  rL  rX  rT  rS  Zset_axisbelowZget_axisbelowr   )r   settingsr   Zsettingcircr   r   r   test_axisbelow  s    


r:  c        	      C   s   t jd t jdd\} }| }|d}|d}| j  | j	 }|
|j}|
|j}|| }t|ds|td S )Nrt   r  )r  Xlabel2Titlern   )r   rv   rw   r   r   r   rf  rB  r   get_rendererget_window_extentr#  r   rB   iscloser   )	r   r   r   Zxlabel2r  rendererZbbox_y0_titleZbbox_y1_xlabel2Zy_diffr   r   r   test_titletwiny  s    



rA  c              C   sx   t  \} }| jdd | }|d |d |d d}|j| | j	 }|
| |j |ksttd S )Ng?)r    ZXlabelr;  r<  )g      ?g(\?)r   r   r  r   r   rf  r  rW  rB  r=  Z_update_title_positionr  r   )r   r   r   r   r@  r   r   r   test_titlesetpos  s    




rB  c              C   sP   d t jd< t \} }|jd |d | j  |j	
 d dksLtd S )Nzaxes.titleyr    z
xlabel topr   gp=
ף?)ru   r   r   r   r6   rf   rf  rB  r   r  r  r   )r   r   r   r   r   test_title_xticks_top)  s    


rC  c              C   sX   d t jd< t \} }|jdddddd |d | j  |j	 d dksTt
d S )Nzaxes.titleyr%   T)r   r.   r    r'  r&  z
xlabel topr   gp=
ף?)ru   r   r   r   rX  rf  rB  r   r  r  r   )r   r   r   r   r   test_title_xticks_top_both3  s    


rD  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 )Nzaxes.titleyg?g      g?g?r%   T)r   r.   r    r'  r&  Boor   g      ?)ru   r   r   r   r   rX  rf  rB  r   r  r   )r   r   ttr   r   r   test_title_no_move_off_page>  s    


rG  c              C   sD   t  \} }|dddg |jjdd |j  dks@td S )Ng   @Ag   eAg   FAr   )rn  )r   r   rb   r9   r  get_offset_textr  r   )r   r   r   r   r   test_offset_label_colorK  s    rI  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 )Ng   @Ag   eAg   FAFT)Zlabel1Onlabel2On)rJ  )r   r   rb   r9   r  rH  r   r   )r   r   r   r   r   test_offset_text_visibleS  s    rK  c              C   s6   t  \} }|dtddg d  | j  d S )Nr   r   g-q=gqىE)r   r   rb   rB   r   rB  r   )r   r   r   r   r   test_large_offset\  s    rL  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 )i  r;  r   r  )r$  )r}   r   r   r   r   r   d  s    z#test_barb_units.<locals>.<listcomp>r   r  rW   r   r  )r   r   r   rB   r   ru  Zbarbs)r   r   rN  r#   uvr   r   r   test_barb_unitsb  s
    rO  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 )i  r;  r   r  )r$  )r}   r   r   r   r   r   l  s    z%test_quiver_units.<locals>.<listcomp>r   r  rW   r   r  )r   r   r   rB   r   ru  Zquiver)r   r   rN  r#   rM  rN  r   r   r   test_quiver_unitsj  s
    rP  c              C   sv   t j} t \}}x^tdD ]R}|td\}|tdtd}x(|D ] }| | | | ksJt	qJW qW d S )Nr   rn   )
r  to_rgbr   r   r   rb   r  r  r)  r   )rQ  r   r   r  r)  Zbrsbrr   r   r   test_bar_color_cycler  s    
rS  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 x$|jddD ]}| dksjtqjW x$|j	ddD ]}| dkstqW |j
d	d
d |j
ddd x$|jddD ]}| d
kstqW x$|j	ddD ]}| dkstqW d S )Nr   r   r   r[   r   )rQ  r  r"  )rQ  r%   5   )r   ro  r#   r   )r   r  r\  )r   r   rb   r6   r  r9   r  r  r   r  rX  )r  r   r   textr   r   r   test_tick_param_label_rotation|  s    rV  c        	      C   s  t  \} }xPtdD ]D}|tdtd}td|}t| 	 t|kst
qW xRtddD ]D}|tdtd}td|}t| 	 t|ksjt
qjW td}xDdD ]<}|jtdtdf|di}t| 	 t|kst
qW td}xtddgddD ]r\}}|jtdtdf|di}td|}t| 	 t|kspt
t| 	 t|kst
qW d S )	Nrn   zC{}r  r  )r   Z
facecolorsr   r   r  )start)r   r   r   rx  r  r  r~  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   zaxes.autolimit_modeg?rW   r   )
r   r   r   Zset_xmarginr   rd   r6   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 d Q R X d}|j|||d |j|||g|  d d S )Nr   r   )r   )g      ?g      ?g      ?)rB   rG   r   r   ro   rp   r  r   )r}  r%   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 )Ng      ?Label)r   )r   r  r&   r   r   r   r   test_eventplot_legend  s    rb  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/   r  )g?g?g333333?g?)r   )r   r   r  r   r%  r*  r   )r   r   Zrect1rect2r   r   r   test_bar_broadcast_args  s
    rd  c            	   C   s   t ddgddg tt t tj W d Q R X tt t tj W d Q R X tt t 	tj W d Q R X tt t 	tj W d Q R X d S )Nr   r   )
r   rb   ro   rp   r  rY   rB   rt  r	  rZ   r   r   r   r   test_invalid_axis_limits  s    re  r  r  r   r`  c             C   s:   t  }|ddddg ||  || |  d S )Nr   r   rn   r   )r   r   rb   r  rn  r   )r  r`  r   r   r   r   test_minorticks_on  s
    

rf  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   g      ?)r   r   rS  r   rb   r   r  Z	intervalx)r   r   Zxtwinr  r   r   r   r   test_twinx_knows_limits  s    rg  c               C   s   t jddgddgddd d S )Nr   r   z--)r  r   )r   rb   r   r   r   r   test_zero_linewidth  s    rh  c              C   s<   t  \} }|jg g g dd |jg g g dd |  d S )Nzempty y)r5  r   zempty x)r6  r   )r   r   r3  r&   )r   r   r   r   r   test_empty_errorbar_legend   s    ri  c             C   s\   t ddd}dd |D }dd |D }dd |D }|  || | || d S )NirW   g333333?c             S   s0   g | ](}d |d  d|d   d|  d qS )g@rn   g @r   g\(\@g      @r   )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   r     s    c             S   s   g | ]}t |qS r   )r   )r}   r   r   r   r   r     s    )rB   rG   r   rb   )r)   r*   r"  r#  r%   r#   r   r   r   test_plot_decimal  s    rj  c             C   s0   |   jddddd |  jddddd d S )Nr   rk   r   g      ?)r)  rQ  r  )r   rb   )r)   r*   r   r   r   test_markerfacecolor_none_alpha  s    rk  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_tightbboxrB  r=  r   r"  r   r#  )r   r   bbbb2r   r   r   test_tick_padding_tightbbox  s    


rp  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
    )g?g?r   r   rW   NrU   g      ?g      ?g333333@r   g      @r   )boundsg       @)rB   mgridr  r   r   r   r   r   r  apply_aspectindicate_insetr   rB  r   r   rg  get_bbox
get_points)dxdyr#   r%   r  r   r   rY   rZ   r,  rec
connectorsxxr   r   r   
test_inset&  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 )N)g?g?r   r   rW   rU   g      ?gffffff?gffffff?g      ?g333333@r   g      @r   g       @g=
ףp=?gKXc'?g(\?g?g-C6?)rtol)rB   rr  r  r   r   r   r   r   r  rs  
inset_axesr  r  r  Zindicate_inset_zoomru  r   rB  r   r   rg  ru  rv  r   r   r  )rw  rx  r#   r%   r  r   r   Zaxin1ry  rz  r{  r   r   r   test_zoom_insetC  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   rW   rk   r   r   rU   r   N)
r   r   rB   rG   rb   rl  rm  rt  r  r   )r  r  r   r   r   r%   r,  rq  Z
lower_leftZ
upper_leftZlower_rightZupper_rightZsign_xZsign_yr   r   r   test_indicate_inset_invertedd  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 )
Ng      @g?g?r[   )rQ  g       @r  g333333?active)	r   r   r  rW  rB   r  r  r  r   )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)i@  i@  i  i  rj  Fgư>)r}  )r   r   rT  r.   r>  rB  r=  Z_set_view_from_bboxrB   r   r   rv  )r   r   rn  ro  r   r   r   !test_spines_properbbox_after_zoom  s    
r  c              C   sH   t  \} }t|  |tjdd | j }tj	|
|jd d S )Nr   rE  i  )r   r   r
   rU  rB   r  rB  r=  r   r   rm  r  )r   r   r@  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 )NrW   r  rF  )r  )rL  r   r   )r   rU  rB   rC   r  r   r   )r:  r  r%   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   rW   r]  )gQ@rn   )rH  g?g      ?g333333?g?Fr   r  )r   r   z->)r  )r   r   r   r   r  )rB   r   r  r   r   r   rb   r~  r  r6   rS  r9   r   Z	transDatar   rK  )r%   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 }xt|D ]\}}|tddtdd |d	kr\|j}n|j}|d
||fd |ddd dd fd |ddd dd fd |d q(W d S )Nr   r   )rW   r   T)rH  r  c          	   S   s    t jdd
 d|  S Q R X d S )Nrp  )rq  r   )rB   rs  )r%   r   r   r   invert  s    z!test_secondary_xy.<locals>.invertr  r   g?)	functionsg?c             S   s   d|  S )Nr   r   )r%   r   r   r   rq    rr  z#test_secondary_xy.<locals>.<lambda>c             S   s   | d S )Nr   r   )r%   r   r   r   rq    rr  g333333?c             S   s   | d S )Nr   r   )r%   r   r   r   rq    rr  c             S   s   | d S )Ng      ?r   )r%   r   r   r   rq    rr  g?)r   r   r   rb   rB   rG   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 d Q R X tt |d W d Q R X tt |	d W d Q R X d S )	Nr   r  g?c             S   s   d|  S )Nr   r   )r%   r   r   r   rq    rr  z%test_secondary_fail.<locals>.<lambda>)r  r"   r.   )
r   r   rb   rB   rG   ro   rp   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 )N)rW   r   )rH  r   r  c          	   S   s    t jdd
 d|  S Q R X d S )Nrp  )rq  r   )rB   rs  )r%   r   r   r   r    s    z%test_secondary_resize.<locals>.invertr    )r  )r;  r   g      ?g?g?)r   r   rb   rB   rG   r  rB  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 )N)rW   r   )rH  r   r  c          	   S   s    t jdd
 d|  S Q R X d S )Nrp  )rq  r   )rB   rs  )r%   r   r   r   r    s    z'test_secondary_minorloc.<locals>.invertr    )r  r   r  )r   r   rb   rB   rG   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  r6   r   r   ZScalarFormatterrB  r   r   r   r   )r   r   r  r   r   r   test_secondary_formatter  s    


r  c              C   s*   t  \} }|d}t|dks&td S )Nr    z<SecondaryAxis:>)r   r   r  reprr   )r   r   r  r   r   r   test_secondary_repr  s    
r  c             C   sp  | j   | j  }g }xdt|j|jgD ]P\}}||}|rptj|j	|j
f|j|jdddddd}| | ||g7 }q*W g }xftddd	d
gD ]R\}}	|j|	 |}tj|j	|j
f|j|jdddddd}
| |
 ||g7 }qW | }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
    gffffff?r#   r   Nrn   )r  r  r   r   r   r   r  r.   r    r/   r"   r   g      ?r  r   r   r   )rB  r   r=  r   r6   r9   rm  r   r  r"  r#  r  r  r   rT  r>  )r   r   r@  bbaxisr  Zaxxrn  Zaxisrbbspinesrg   Zspinerrc  bbaxro  bbtbr   r   r   color_boxes  sH    







r  c           	   C   s  t ddi> tjddd\} }| j  t|  t| |\}}}}W d Q R X dddd	gd
dddgg}x6t|D ]*\}}tj	j
||  }	t|j|	jdd qrW ddddgddddgddddgddddgg}x6t|D ]*\}}tj	j
||  }	t|j|	jdd qW d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 )Nz_internal.classic_modeFr]  )r  r  )r  rH  g     ^@g8R@g     @g     @@g8`U@gX@g     J@g     @r   )decimalg     b@g-]@g     @gF8&@g     @g        gNё\]@g      @gR!@g]@g+e`U@gbhR@g{G@g{Gȏ@)r   r   r   rB  r   r   r  r   r  Bboxfrom_boundsr   rq  r  ZtransformedtransFigurer>  )r   r   r  r  r  r  rZ  r  r!  targetbbZaxbbr   r   r   test_normal_axesA  s2    





r  c        
   	   C   s2  t ddiB tjddd\} }| j  |jg g d t| |\}}}}W d Q R X x t|D ]\}}|d ks^tq^W ddd	d
gddd	dgddd
dgddd
dgg}x6t|D ]*\}}t	j
j||  }	t|j|	jdd qW d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 )Nz_internal.classic_modeFr]  )r  r  )r  rH  )xticklabelsyticklabelsg     b@g-]@g     @gF8&@g     @g        gNё\]@g      @gR!@g{Gz?)atolg]@g      ^@)r   r   r   rB  r   rc   r  r   r   r  r  r  r   rq  )
r   r   r  r  r  r  r  r!  rZ  r  r   r   r   test_nodecoratorh  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 d Q R X dd	d
dgddd
dgddddgddddgg}x4t
||D ]&\}}tjj| }	t|j|	jdd qW d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 )Nz_internal.classic_modeFr]  )r  r  )r  rH  )r  r  )r  gg     b@g      8@g     @gs~8&@g     @g        gNё\]@gF8&@g      @gR!@g{Gz?)r  g]@g     @)r   r   r   rc   rT  r.   rW  rB  r   r  r
  r  r  r  r   rq  )
r   r   r  r  r  r  targetsrZ  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} xt dddgD ]\}}tddi tjddd\}}|j|d |j  t||\}}}}xBt ddgD ]2\}	}
tj	j
| | |	  }t||
 j|jdd qW W dQ R X qVW dS )zG
    Switch the tickdirs and make sure the bboxes switch with them
    g     b@g      ^@g     @g+e8&@gF8&@g      @gZӼ8[@g88&@g r\a@r?  gqq\@g88b@g-]@rj  r  Zinoutz_internal.classic_modeFr]  )r  r  )r  rH  )rk  r   r   g{Gz?)r  N)r   r   r   r   rX  rB  r   r  r  r  r  r   rq  )r  Zdnumdirsr   r   r  r  r  r  r  r   r  r   r   r   test_tickdirs  s     



r  c        	   	   C   st  t ddi\ tjddd\} }| j  |jddd t| |\}}}}t| |\}}}}d	d
ddgddddgg}x:tdD ].}tj	j
||  }t||d  j|jdd qW 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}x<tdD ]0}tj	j
||  }t||d  j|jdd q2W W d Q R X d S )Nz_internal.classic_modeFr]  )r  r  )r  rH  r[   r  )rQ  rk  g     b@g88[@g     @g88&@gCiq\a@gNё\]@g+e8&@g      @r   g{Gz?)r  rP  r{   )r   rQ  rl  gPUUUUUB@gVUUUUT@gz6P@g      ^@goTT@)r   r   r   rB  r   rX  r  r   r  r  r  r   rq  r   )	r   r   r  r  r  r  r  re  r  r   r   r   test_minor_accountedfor  s2    




r  c             C   sR   |  dd | dd |  d}|d |d | dd d S )Nr   Frl  r   Ton)ry   r   )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   rW   r   rE  )r   r   r   rX  r   rd   re   )r   r   r@   rA   rv  rw  rY  r   r   r   test_axis_extent_arg  s    r  c              C   sr   t  \} }d}d}d}d}|j||||d}t|||||fksFt||f| ksZt||f| ksntd S )Nr   rW   r   rE  )r@   rA   rv  rw  )r   r   r   rX  r   rd   re   )r   r   r@   rA   rv  rw  rY  r   r   r   test_axis_extent_arg2  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 )i  r   )r$  )r}   re  r   r   r   r     s    z(test_datetime_masked.<locals>.<listcomp>r   r  r   rn   r   r   r   z
0000-12-31g    H&Ag    d&A)rB   r   r   r   r  r   r   rb   r&  r'  r<  rd   r   )r%   r#   r  r   r   r  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   rn   r   r   r  r  )ra  r   rU   )r   rX  r   )r  ra  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 d Q R X tj|| tj||	 d S )Nr   r   rn   rp  )r  )r   r   rB   rt  rX  rs  r   r   )
r   r   r   r   Znan_datara  r  r  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 )	NrW   r  )r   r   T)r   rk  r   rU   r   )r   rX  rB   rC   rx   r   )r  ra  r   r   r   test_hist_range_and_density$  s    r  c        
      C   s   t  \} }dddg}|j|||ddd}|jj\}}}xJ|jD ]@}x|D ]}|j|jksJtqJW x|D ]}	|	j|jkshtqhW q@W d S )Nr   r   rn   r   )r%   r  r6  r  r  )r   r   r  r3  r  r   r  r   )
r   r   r%   ZbarcontZ	data_lineZcaplinesZbarlinecolsr  ZcaplineZ
barlinecolr   r   r   test_bar_errbar_zorder+  s    


r  c              C   s6   t  \} }|  |ddg | dks2td S )Ng333333?gffffff?)r   r   )r   r   rl  r  rd   r   )r   r   r   r   r   test_set_ticks_inverted:  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 )N)rW   rW   )rH  g?g333333?r   )r   rW   logit)gF]tE?g'^P?r   r|  )r  rY   r`  rZ   rX   r~  r   r   )r   r   ry   rb   rc   r   r  Ztransform_bboxr  r  r  ro   approxr   )r   r   r   r   r   r   $test_aspect_nonlinear_adjustable_boxA  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 )N)rW   rW   )rH  g?g?g?g333333?r   )r   r   r  )gbeF?gF]tE?r   r}  )r  rY   r`  rZ   rX   r~  r   gS[:XL	@g'In?@)r   r   r   rb   rc   r   rs  rd   ro   r  r   re   )r   r   r   r   r   (test_aspect_nonlinear_adjustable_datalimN  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 )Nr  iX  r   r   r   r  rF  r  r|  )r~  )r   r   r   rb   set_box_aspectr   r  rB  r   r  r   r  )r  r   Zaxtwinr  r   bb1Zbbtro  r   r   r   test_box_aspect]  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 )Ng?g?g?g      ?)	r   r   rW  rB  r   r  r  r   r  )r  r   r  r   r  ro  r   r   r   test_box_aspect_custom_positionw  s    





r  c              C   sr   t jddtdddd\} }| j  | j }g }x*|jD ] }||}||j	|j
g q<W t||d  d S )Nr   rn   r   )r  T)rI  r  r   )r   r   rK  rB  r   r=  r   r>  r  r  r  r   )r   r   r@  r  r   rn  r   r   r   test_bbox_aspect_axes_init  s    


r  c              C   s6   t dd\} }|dddg | j  |  d S )Nr   r   rn   )r   r   rb   rB  r   Zredraw_in_frame)r   r   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   rB  Zinaxesr   rS  )r   r   r   r   r   test_invisible_axes  s    
r  c              C   s@   dt jd< t  } | j }x|D ]}|j dks"tq"W d S )Nr  zlines.markeredgecolor)r   r   r  r6   get_major_ticksr  get_markeredgecolorr   )r   ticksr^  r   r   r   "test_xtickcolor_is_not_markercolor  s
    


r  c              C   s@   dt jd< t  } | j }x|D ]}|j dks"tq"W d S )Nr  zlines.markeredgecolor)r   r   r  r9   r  r  r  r   )r   r  r^  r   r   r   "test_ytickcolor_is_not_markercolor  s
    


r  r   r  )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   gg?Zget_autoscaleZ_onr   Zlimget_)g      g      ?)r  )r   r   rB   rG   r   r   r   r   rB  r   r   )
r   r  r   r   r%   r#   r   Z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  )rG  r   r   r   r   e   )ry   rb   rB   r   get_pathZ_interpolation_stepsr   )r)   r*   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  rB  r   re   r   )r   r   r   r   r   test_autoscale_tiny_sticky  s    
r  c              C   s\   dt jd< dt jd< t  } | j }x0|D ](}|j dksBt|j dks,tq,W d S )Nr  zxtick.colorr   zxtick.labelcolor)	r   r   r  r6   r  r  r  r   r   )r   r  r^  r   r   r   &test_xtickcolor_is_not_xticklabelcolor  s    



r  c              C   s\   dt jd< dt jd< t  } | j }x0|D ](}|j dksBt|j dks,tq,W d S )Nr  zytick.colorr   zytick.labelcolor)	r   r   r  r9   r  r  r  r   r   )r   r  r^  r   r   r   &test_ytickcolor_is_not_yticklabelcolor  s    



r  r  c             C   s   g | ]}|d k	r|qS )Nr   )r}   r  r   r   r   r     s    r   rW   c             C   s|   | t jd< | t jd< t \}}|j  xLtddg|j|jgD ]2\}}x(|	 D ]}|j
 ||ksTtqTW qBW d S )Nzxtick.labelsizezytick.labelsizer%   r#   )ru   r   r   r   rB  r   r
  r6   r9   r  r   r  Z_get_tick_label_sizer   )r  r   r   namer   r^  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   rg  )r   rn   r   rk  r   g      ?g      @)	r   r   r   r   rW  rd   rB   r  r   )r   r   r   rY   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 )Nr  g333333?g333333?)r   r   )r/   )	r   r   ry   r   r  r  rv  rg  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 )Ng?g?g333333?r   r   r   r   rU   )r   rn   rW   )r   r   )r   rU   )
rB   r   r   rb   r^   r   rZ  rX  rG   r  )r)   r*   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}x|jD ]}||| q8W | jddddd}x"|jD ]}|  ||| qfW d S )Ng        r   g{Gz?T)r   r   )rB   rG   r   r   r   r   rb   rh  )r)   r*   r%   r#   r   r   r   r   r   test_shared_axes_clear'  s    
r  c              C   s   t jddddd\} }x|jD ]}|ddgd qW |d dddd	g x&|jD ]}| |d  ksTtqTW |d dddd
g x&|jD ]}| |d  kstqW d S )Nr   rg  )r   r   r   zo-)r   r   g      r   g      ?g      @)	r   r   r   rb   r  rd   r   r  re   )r   r   r   r   r   r   test_shared_axes_retick6  s    r  r$   r/   r5   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   r9   Zset_label_positionr7   r  r   )r$   r   r   r   r   r   test_ylabel_ha_with_positionE  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   rn   r   r5   r.   r    )r   r   r  	bar_labelr   r   r  r  )r   r  heightsr+  r  r   r   r    test_bar_label_location_verticalN  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   rn   r  r   r/   r5   r"   )r   r   r%  r  r   r   r  r  )r   r  r9  r+  r  r   r   r   "test_bar_label_location_horizontal[  s    
r  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   rn   r  r5   )Z
label_typer   )r   r   r%  r  r   r   r  r  )r   r  r9  r+  r  r   r   r   test_bar_label_location_centerh  s    ""r  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   rn   r  )r6  r   r5   r.   r    )r   r   r  r  r   r   r  r  )r   r  r  r+  r  r   r   r   !test_bar_label_location_errorbarsu  s    
""r  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   rn   r  z%.2f)r   r   z3.00z-4.00)r   r   r  r  rx  r   )r   r+  r  r   r   r   test_bar_label_fmt  s
    r  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   rn   r  r  r  )r  r   )r   r   r  r  rx  r   )r   r+  r  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   rn   r   c             S   s   g | ]}|  qS r   )rx  )r}   r  r   r   r   r     s    z,test_bar_label_nan_ydata.<locals>.<listcomp>r   1r   )r   r   r.   )	r   r   r  rB   rt  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   rU   g?r  r?  g?gffffff?r   r  r   gg?r  )r   r   r  r  ZWedgerB   r   r   r   Zassert_array_almost_equal_nulpr   ZdataLimrq  )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 d Q R X d S )	Nz!You passed a edgecolor/edgecolors)r.  r   r   i  r0  r!  )rP   r   r   r   )ro   r1  r2  r   r   )r   r   r   r    test_warn_ignored_scatter_kwargs  s    
r  c           	      s  t  \}   fddtdD } tdtd} td} t	
ddd} ddd}t j|gkstt j|gkstt j|kstt j|gkst jrtt j|gkst jd |d kst jd	 |d	 ksttjtd
d  jt|d   W d Q R X tjtdd  jd	= W d Q R X tjtdd  jd	d = W d Q R X tjtdd  jdd = W d Q R X tjtdd  jd= W d Q R X |   jrt|   jrt|   jrt|   jrt jrt jr*ttjtdd  j| W d Q R X tjtdd  j| W d Q R X tjtdd  j| W d Q R X tjtdd  j| W d Q R X t j|gkstt j|gkstt j|gkstt j|gksttjtdd  j|d  W d Q R X t j|d gks^ttjtdd  j|d	  W d Q R X t j|dd  ksttjtdd  jd|d  W d Q R X t j|d |d |d	 gksttjtdd |d  jd< W d Q R X t j|d |d |d	 gksDttjtdd |dd  jdd< W d Q R X t j|kst jdddg |dkstdddg j d|kstd S )Nc          	      s&   g | ]}  t||d  d qS )r   r   )rb   rB   rG   )r}   r   )r   r   r   r     s    z(test_artist_sublists.<locals>.<listcomp>r  r   )r   r   )r   r   r   r  rU   zout of range)r.  r   z'modification of the Axes.lines propertyz'modification of the Axes.texts propertyz-modification of the Axes.collections propertyz(modification of the Axes.images propertyz)modification of the Axes.patches propertyr  r   rn   )r   r   rn   )r   r   rn   )r   r   r   r   rB   rG   r`   r  r  r  r  rU  r  r  r   Zimagesr  r   Ztablesr  ro   rp   
IndexErrorru  r1  r   rQ  rA  insert)r   r  rB  rD  r   rU  r   )r   r   test_artist_sublists  s    











&
&
 r  c              C   sh   t d} t d}t \}}|| |}t|dks<tt \}}|g g }t|dksdtd S )NrW   )rW   r   r   r   )rB   r\   r   r   rb   ru  r   )r%   r#   r  r   r  r   r   r   test_empty_line_plots  s    

r  c              C   s`   t   } xN| j| j| j| jgD ]6}d}|ddgddgg|dj}|j|j	f|ks"t
q"W d S )N)r;  rF  r   r   r   rn   )clim)r   r   ry   r`   r  r   r  r  rh  ri  r   )r   Zplot_methodr  r  r   r   r   	test_clim  s
    r  )Nr   (%  r  r   r$  r  r   r  	itertoolsr   platformrh  r   Zdateutil.tzr  numpyrB   r   r   ro   r3   ru   Zmatplotlib.testing.decoratorsr   r	   r
   Zmatplotlib.colorsr  r  Zmatplotlib.datesrN  r&  Zmatplotlib.figurer   Zmatplotlib.font_managerZfont_managerZmfont_managerZmatplotlib.markersr  r  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   r-   r2   r4   r:   rL   rj   rs   rz   r   r   r   r   r   r  r  r   r   r   r   r   r   rv   r  r   r   r   r   r  r  r  r  r  r-  r4  r9  r:  r?  rC  rD  rO  rV  rX  r[  r\  r_  rg  rj  ro  rv  rz  r~  r  r  r  r  rG   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/  r2  r;  rE  rP  rQ  rS  rV  rY  r]  r_  r`  ra  rj  rl  rn  ro  r'  rt  rv  ZPatchr  r  r  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  rK  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r#  r$  r%  r(  r*  r,  r-  r.  r/  r0  r1  r2  r3  r5  r7  r8  r:  r;  r<  r=  r>  rC  rE  rF  rG  rI  rK  rN  rR  rS  rT  rV  rW  rZ  r^  r_  r`  ra  rc  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rv  rw  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  machiner  r  r
  r  r  r  r  r  r  r  rt  r  r  r!  r&  r'  r<  r=  r?  rC  rF  rG  rN  rO  rP  rR  rZ  r[  rc  re  ri  rt  ru  r  rI   rS  rW  rz  r{  r  r  r  rq   r  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  r  r  r  r  imageZ	AxesImager   ZPcolorImagerC   ZQuadMeshr^   rx   r  r  r  r  r  r  r  r  r  r  r  r  Zfixturer  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r%  r(  r*  r+  r2  r4  r7  r:  rA  rB  rC  rD  rG  rI  rK  rL  rO  rP  rS  rV  r]  r_  r`  rb  rd  re  rf  rg  rh  ri  rj  rk  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  Zfont_scalingsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s  )+2		"





		"!
"%			






 	,		"  $$$$J(;	


&

?  

 











		

	"5/,

	""
			
		",
**		
,''$"
!
"
#	 !
-
&



 	$$



	$$"""B"	 	 "&.			  
	
(	!$
	
.'"

		*		
a