a
    s=icA!                    @   s0  d dl m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	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 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-m.Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z6 d dl7m8Z9 d dl:m;Z< d dl=m>Z? d dl@mAZB d dlCmDZDmEZEmFZF d dlGmHZHmIZImJZJ eIdgddd ZKdd ZLdd ZMeI dd ZNeI dd ZOeI dd ZPdd  ZQeIdgdd!d" ZReIdgdd#d$ ZSd%d& ZTeIdgdd'd( ZUeHg d)d*d+ ZVd,d- ZWd.d/ ZXeHd0gd1d2 ZYd3d4 ZZej[\d5d6eIdgd7d8d9d: Z]eHd;gd<d= Z^d>d? Z_d@dA Z`dBdC ZadDdE ZbeIdgddFdG ZceHdHgdIdJdKdL ZdejefdMdNdO ZgejefdMdPdQ ZhejefdMdRdS ZieIdgddTdU ZjeHdVgdIdJdWdX ZkeHdYgdIdJdZd[ Zld\d] Zmd^d_ Znd`da Zodbdc ZpeHddgdedfidgdhdi Zqdjdk ZreIdgddldm ZseHdndngdodp ZteHdqgdrdsdtdu ZueIdgddvdw Zvdxdy ZweHdzgdgdIdrd{d|d} ZxeHd~gdd ZyeHdgdddd ZzeHddgdIdJdd Z{eHdgdIdJdd Z|dd Z}eHdgdrdsdd Z~eHdgdrdIddd Zdd Zdd ZeHdgdd ZejefdMej[\dg deIdgddd ZeHddgdIdrddd ZeHdgdrdsdd Zdd ZeHdgdIdJdd Zej[j\dedddfedddeddfeddddedfgg dddd Zej[j\dedddfedddeddfeddddedfgg dddd ZeHdgdIdJdd ZeHdgdrdIddd ZeHdgdIdJdd ZeHdgddĄ ZeHdgdIdJddǄ ZddɄ ZeHdgdIdJdd̄ ZeHdgdgdddЄ ZeHdgddgdIdӍddՄ ZeHdgdrdsdd؄ ZeHdgdrdsddۄ Zdd݄ ZeIdgddd߄ ZeIdgddd Zdd Zej[\dddIgeIdgddd ZeHdgdd ZeHdgdIdMddd ZeHdgdIdJdd Zdd ZeHdgdIdJdd ZeHdgdIdddd ZeHdgdIdddd ZeHdgdIdJd d ZeHdgdIdJdd ZeHdgdMdIddd ZeHdgdIdJd	d
 ZeHdgdIdJdd ZeHddgdd Zdd Zdd ZeHdgdd ZeHdgdd ZeIdgddd ZeIdgddd ZeIdgddd  ZeIdgdd!d" Zd#d$ Zd%d& ZeHd'gd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 ZejefdMeI d6d7 Zej[\d8d9d:d9d;gd9fg d<g d=g d>g d>d;fg d<g d=g d?g d?d;fg d<g d=d@g dAd@fgdBdC ZdDdE ZdFdG ZeHdHgdIdJdIdJ ZeIdgddKdL ZdMdN ZeHdOgdIdJdPdQ ZdRdS ZeHdTgdIdJdUdV ZeHdWgdIdJdXdY ZeHdZgd[d\ ZŐd]d^ ZƐd_d` Zej[j\daejjȐdbdc dddc gg deddfdg Zej[\dhg d:fg gd:fg g gdfgdidj Zej[\dkdlej+jjfdmejjjfdnej+jjfgdodp ZeIdgddqdr ZeIdgddsdt ZeIdgddudv ZeIdgddwdx ZӐdydz ZԐd{d| ZՐd}d~ Z֐dd Zאdd ZeHdgdIdJdd ZeHdgdd ZeIdgddd Zېdd ZeHdgdIdrddd ZeHdgdrdsdd ZeHddgdIdrddd ZeHdgdIdrddd Zdd ZG dd dZd8ddddZeddZej[\de edeg dgdfeddedeg dgdfedddedeg dgdfeddedeg dgdfeddgdeddgeg dg dgdfgdd Z[[ej[\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 Zdd Zdd Zdd ZeHdÐdgdĐdń ZeHdgdIdJdǐdȄ Zi dɐdc i fdʐd˄ZeHdgdedidMd΍dϐdЄ ZeHdgdedidMd΍dҐdӄ ZeHdgdedidMd΍dՐdք ZeHdgdedidMd΍dؐdل ZeHdgdIdedidMdېd܍dݐdބ ZeHdgdedidMdېddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd Z eHd gdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHd	gdIdedidMdd
d ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd ZeHdgdIdedidMddd Zdd Z	dd Z
eHdgdedidMd΍dd ZeHdgdedidMd΍d d! Zd"d# ZeHd$d$gd%dMd&d'd( ZeHd)gdedidMd΍d*d+ ZeHd,gdIdMdd-d. ZeHd/gdIdedidMdd0d1 ZeHd2d3gdMdsd4d5 Zd6d7 ZeHd8gdedidId:dMd9d:d; ZeHd<gdIdedidMdd=d> ZeHd?gdIdedidMdd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZeHdJgdIdedidMddKdL ZeHdMdMgdNdO ZeHdPgdQdR ZeHdSgdTdU ZeHdVgdWdX ZeHdYgdZd[ Z eHd\gd]d^ Z!eHd_gd`da Z"eHdbgdcdd Z#eHdegdfdg Z$eHdhgdidj Z%eHdkgdldm Z&eHdngdodp Z'eHdqgdrds Z(eHdtgdudv Z)dwdx Z*dydz Z+d{d| Z,d}d~ Z-eIdgddd Z.eIdgddd Z/dd Z0dd Z1dd Z2eHg ddd Z3dd Z4eI dd Z5dd Z6eHdgdd Z7dd Z8dd Z9eIdgddd Z:dd Z;dd Z<eI dd Z=ej[\dg deg dd:gdd Z>eIdgddd Z?eHddgdd Z@eHdgdd ZAeHdgdIdJdd ZBeHdgdd ZCeHdgdd ZDej[j\ddIdgddgdeHdgdrdIddd ZEdd ZFdd ZGdd ZHej[j\ddIdgddgdeHdgdrdIddÐdĄ ZIeHdgdƐdǄ ZJeHdgdɐdʄ ZKeHdgd̐d̈́ ZLeHdgdIdJdϐdЄ ZMdѐd҄ ZNdӐdԄ ZOdՐdք ZPdאd؄ ZQdِdڄ ZRdېd܄ ZSdݐdބ ZTdߐd ZUeHdgdd ZVdd ZWdd ZXdd ZYeHdgdIdJdd ZZeHdgdIdJdd Z[eHdgdIdJdd Z\dd Z]dd Z^eHdgdIdJdd Z_eHddgdIdJdd Z`eHdgdIdJdd Zaej[\dg d dd ZbeHdgdIdJdd Zcdd Zdej[\dg gg d d:ggd d:gg ggej[\d	g d
dd ZeeIdgddd ZfeHdgdIdJdd ZgeHdgdd ZheHdgdIdJdd ZieHddgej dkrd ndddd ZkeI dd ZleI dd  ZmeI d!d" ZneI d#d$ Zod%d& ZpeHg d'dgdd(d) Zqd*d+ ZreHg d,dgdd-d. Zsd/d0 Ztej[\dd:ddejud1gejvg d2d3geIdgdd4d5 ZweHd6d6gdIdJd7d8 ZxeHd9gdIdJd:d; Zyd<d= ZzeHg d>dId?dMd@dAdB Z{eHg dCdId?dMd@dDdE Z|eHg dFdId?dMd@dGdH Z}dIdJ Z~eIdgddKdL ZdMdN ZeHg dOdIdPddQdR ZeHg dSdIdJdTdU ZdVdW ZeIdgddXdY ZeHdZgdIdJd[d\ ZeHd]d]gdIdJd^d_ Zej[\d`g dadbdc Zddde Zdfdg ZeIdgddhdi Zdjdk Zej[\dle6je6jdmge6je6jdnggdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zej[\d{ed|i d}fed~i dfed:dgfi dfee ddidffdd Zdd Zej[\d5d6dd Zdd Zdd ZeHdgdd ZeHg ddgdrddd ZeHdgdrdsdd ZeHdgdrdsdd ZeHdgdrdsdd ZeHdgdrdsdd ZeHdgdrdsdd ZeHdgdd Zdd Zdd Zdd ZeHdgdd ZeIdgddd Zdd Zdd Zdd Zdd ZeHdgdd Zdd ZeHdgdedidgdd ZddÄ ZdĐdń Zej[\d{edi dfedi dfee d9didfee dʐdidfedmd:d:d6dfedmd9d:idfe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߄ ZeHdgdedidgdd ZeHdgdedidgdd Zdd Zdd Zdd Zdd Zej[\ddejÐjfdejÐjfeŐd1eŐd3fejÐjfg dg dfejÐjfejǐǐdejǐǐdfej jfgej[\dedɐdejǐdd3dgdd Zːdd Z̐dd Z͐dd Zΐdd Zej[\d eσ dd ZeHdgdIdJdd Zѐdd ZҐdd	 Zej[\d
dIdgdd ZeHdgdIdddd ZeHdgdIdrddd ZejefdMdd Zejؐd9dgddd Zejg dddd Zڐdd Zېdd Zܐdd  Zݐd!d" ZejefdMd#d$ ZejefdMd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZeHdEgdFddGdH ZeHdIgdJdK ZeHdLgdFddMdN ZeHdOgdIdJdPdQ ZdRdS ZdTdU ZdVdW ZdXdY Zej[j\dZg d[g d\dd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Z ejefdMdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zej[\d{d|d}gej[\d~d|d}gdd Zdd Zdd Z	dd Z
eIdgddd ZeIdgddd Zdd Zdd Zdd ZeHdgdIdrddd Zdd Zdd Zej[\dddIgej[\dddIgdd Zdd Zdd Zdd Zdd Zdd ZeHdgdrdIddd ZeHdgdrds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%eId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ׄ Z0dؐdل Z1dڐdۄ Z2dܐd݄ Z3dސd߄ Z4dd Z5dd Z6ej[\dd6ej[\dddd Z7eIdgddd Z8ejefdMdd Z9dd Z:dd Z;ej[\ddd e&j<D g d ejefdMdd Z=dd Z>dd Z?eIdgddd Z@eIdgddd ZAdd  ZBej[\dg ddd ZCdd ZDdd ZEd	d
 ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd  ZQejefdMd!d" ZRd#d$ ZSd%d& ZTej[\d'd(ej[\ddd)edigd*d+ ZUd,d- ZVd.d/ ZWd0d1 ZXd2d3 ZYd4d5 ZZd6d7 Z[dS (9      )
namedtupleNDecimal)partial)product)SimpleNamespace)ma)cycler)
rc_context)MatplotlibDeprecationWarning)Figure)Axes)
HammerAxes)	PolarAxes)assert_allcloseassert_array_equalassert_array_almost_equal)image_comparisoncheck_figures_equalremove_ticks_and_titlespng
extensionsc                 C   s   |   }|d d S NF)subplotsset_visiblefig_testfig_refax r    k/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_axes.pytest_invisible_axes0   s    r"   c                  C   sD   t  \} }|d |d | dks0J | dks@J d S )Nzx labelzy label)pltr   
set_xlabel
set_ylabelZ
get_xlabelZ
get_ylabelfigr   r    r    r!   test_get_labels6   s
    

r(   c                  C   sH   t  \} }|d |d |d |d t|dksDJ d S )NlabeltitlexyzO<AxesSubplot: label='label', title={'center': 'title'}, xlabel='x', ylabel='y'>)r#   r   	set_label	set_titler$   r%   reprr&   r    r    r!   	test_repr>   s    



r0   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cr)   Y LabeltoplocX LabelrightZ Labelr,   har+   r>   r   r3   legendr%   r$   colorbarr-   r   r   r   sccbarr    r    r!   test_label_loc_verticalI   s    

rF   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 )Nr1   r2   r3   r4   r6   bottomr8   r:   left
horizontalorientationr<   r   r=   r?   r@   rC   r    r    r!   test_label_loc_horizontal\   s    rL   c                 C   s   t dddj |  }|jddgddgddgdd}|  |d |d	 | j|d
d}|d W d    n1 s0    Y  | }|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;   r7   )zxaxis.labellocationzyaxis.labellocationr1   r2   r3   r4   r6   r:   rI   rJ   r<   r=   r?   )	
matplotlibr
   r   r3   rA   r%   r$   rB   r-   rC   r    r    r!   test_label_loc_rco   s"    


(rN   c                  C   s  t  \} }|jddd |jddd |j  dks>J |jddd |j  dksbJ |jddd |j  dksJ |jddd |jddd |j  dksJ |jddd |j  dksJ |jddd |j  dksJ d S )Nz
Test labelrH   r8   centerr;   r7   rG   )r#   r   r$   xaxis	get_labelget_horizontalalignmentr%   yaxisr&   r    r    r!   test_label_shift   s    rT   c           	      C   s   t jd d}t jdd| }|d }|  }|j||d | }t j||ddt || }t 	| |d }||d | ||  }|
|dg| |jdddd d S )	N!N,   r   r1   )maxlagsfull)mode)r,   xminxmax)nprandomseednormalZcumsumr   ZacorrZ	correlatedotarangevlinesaxhline)	r   r   ZNxr+   rW   ax_testax_refZnorm_auto_corrZlagsr    r    r!   
test_acorr   s    rf   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g t |d d d dR ddi |d jd|d  |d  d d d d |D ]}|j	d qd S )NrU   i   r   rV   )    rg   r2   r1   .lower)markeroriginZgray_rnearest)cmapinterpolation
markersize
   )aspectxlimylimboth)r\   r]   r^   onesshufflereshaper   spyimshowrP   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"    



. r   c               	   C   sl   t  \} }ddidddfD ]H}tt* |jtddfi | W d    q1 s\0    Y  qd S )Nrn   rl   osolid)rj   	linestyle   )r#   r   pytestraises	TypeErrorry   r\   eye)r'   r   Zunsupported_kwr    r    r!   test_spy_invalid_kwargs   s    r   c                 C   sT   t jd tjdd}|  | | }|| |j	
  |j	d d S )Nmpl20rg   ru   )mplstyleuser\   r]   randadd_subplotZmatshowrz   rP   r{   r   )r   r   r   re   r    r    r!   test_matshow   s    

r   )Zformatter_ticker_001Zformatter_ticker_002Zformatter_ticker_003Zformatter_ticker_004Zformatter_ticker_005c                     sV  dd l m  m     dtjd<  fddtdD }  fddtdD } fddtdD }t 	 }|
d	 t 	 }|
d	 |j| |d
dd t 	 }|
d	 |j| |d
dd |
d t 	 }|j| |d
dd |j| |ddd |
d t 	 }|j| |d
dd |j| |ddd |
d |  d S )Nr      zlines.markeredgewidthc                    s   g | ]}| j  qS r    )sec.0r+   unitsr    r!   
<listcomp>       z)test_formatter_ticker.<locals>.<listcomp>rq   c                    s   g | ]}d | d  j  qS )      ?      ?kmr   r,   r   r    r!   r      r   c                    s   g | ]}d | d  j  qS )g      ?      ?r   r   r   r    r!   r      r   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registerrM   rcParamsranger#   figurer   r$   r|   autoscale_view)ZxdataZydata1Zydata2r   r    r   r!   test_formatter_ticker   s0    






r   c                  C   s   dd } t   }|jjs J |jjs,J |jjs8J |jjsDJ |j|  |jjr\J |jjshJ |jjstJ |jjsJ t	| }t
|j tj	sJ |j j|jksJ d S )Nc                 S   s   dS )N r    r+   posr    r    r!   	_formfunc  s    z4test_funcformatter_auto_formatter.<locals>._formfunc)r#   r   r   rP   isDefault_majfmtisDefault_minfmtrS   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J |jjs(J |jjs4J |jjs@J |j|  |jjsXJ |jjsdJ |jjspJ |jjr|J t	| }t
|j tj	sJ |j j|jksJ d S )Nz	{x}_{pos})r#   r   r   rP   r   r   rS   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g d}t }|ddd}|dd	gddg |j	
| |j	| |j	td
 |j	tg d |j
t  |jtg d |jtd |jtg d |  |  d S )Nr   r1      T)numZendpoint       @皙?皙?333333?r   d   z%08.2lf)ZtricksZmindZjedi)   #   7   K   z%05.2lf)r5   3pr   )r\   linspacesinpir#   ZFixedLocatorr   r   r|   rS   set_major_locatorZset_minor_locatorr   ZFormatStrFormatterr   ZFixedFormatterrP   ZLinearLocatortwinytwinx)valslocsZmajlZminlr'   ax1r    r    r!   "test_twin_axis_locators_formatters6  s"    
r   c                  C   s   t  \} }| }| }t   |j r2J |j r@J |  |  |j r^J |j rlJ |j	 szJ |j sJ |j rJ |j	 rJ |j sJ |j sJ |j	 sJ d S N)
r#   r   r   r   drawrP   get_visiblepatchclarS   )r'   r   ax2ax3r    r    r!   test_twinx_claO  s"    r   twinr+   r,   gRQ?)r   tolc                 C   sF  d| }d| d}t dd}| ddd}t|| }t||d ||| | ddd}t||d t|| }||| dD ]}|dd|}	t|	|d |	|| tjj}
|tj	j
|
d	d	gd	dgd	dgddgddgdd	gdd	gd	d	gg|
j|
jgd
 |	jdtjd tjd dd qt|  t| d S )Nr   set_scaler1   r   r2   logr1   r2   r      nonezaxes.edgecoloraxes.linewidthZ
projecting)	transform	facecolor	edgecolor	linewidthZcapstyle)r\   ra   r   getattrr|   rM   pathPath
add_artistpatches	PathPatchMOVETOZLINETO	transAxesr   r   r   )r   r   r   Z	twin_funcZ	set_scaler+   rd   ax_twinire   r   r    r    r!   test_twin_logscalef  sD    
r   ztwin_autoscale.pngc                  C   s   t g d} d|  }t g d}d| }t }|jdddd}|j| |dd	d
 t|}|j||ddd |dd |dd d S )Nr   r   r1   r   r   r1   r2   r2   r   r   r1   r1   F)Zautoscalex_onZautoscaley_onr   rq   r   lwr--r   r   r   )r\   arrayr#   r   add_axesr|   r   margins)r+   r,   x2y2r'   r   r   r    r    r!   test_twinx_axis_scales  s    
r  c                  C   st   t  \} }| }|d | }| s2J | r>J | }|d | }| sdJ | rpJ d S r   )r#   r   r   Zset_autoscalex_onget_autoscalex_onr   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   s  t d} |  }| rJ | r*J tjd}|| | rLJ | sXJ |  t	ddtj
 d}||t| | rJ | rJ |  || t   | rJ | sJ | jD ]}|  qt d}t jd|d}|jd | sJ ||t| |  | r>J |  || ||t| |  | sxJ t |  d S )	Nr   )r   r   r2   r         shareyT)r#   r   gcaZxaxis_invertedyaxis_invertedr\   r]   rz   r   r   r   r|   cos	autoscaleaxesremovesubplotrS   Zset_invertedclose)r'   r   Zimgr+   ax0r   r    r    r!   test_inverted_cla  sB    






r  c            	         s  t jdd$ G  fdddt} W d    n1 s60    Y  t jdd$ G  fdddt}W d    n1 sv0    Y  G dd d| }G  fd	d
d
t}G  fdddt}G dd d|}t }| |||||fD ]2}d ||g d} sJ d |   sJ qd S )NzOverriding `Axes.cla`matchc                       s   e Zd Z fddZdS )z(test_subclass_clear_cla.<locals>.ClaAxesc                    s   d d S NTr    selfcalledr    r!   r     s    z,test_subclass_clear_cla.<locals>.ClaAxes.claN)__name__
__module____qualname__r   r    r  r    r!   ClaAxes  s   r!  c                       s   e Zd Z fddZ  ZS )z-test_subclass_clear_cla.<locals>.ClaSuperAxesc                    s   dt    d S r  )superr   r  	__class__r  r    r!   r     s    z1test_subclass_clear_cla.<locals>.ClaSuperAxes.cla)r  r  r   r   __classcell__r    r  r$  r!   ClaSuperAxes  s   r'  c                   @   s   e Zd ZdS )z+test_subclass_clear_cla.<locals>.SubClaAxesNr  r  r   r    r    r    r!   
SubClaAxes  s   r)  c                       s   e Zd Z fddZdS )z*test_subclass_clear_cla.<locals>.ClearAxesc                    s   d d S r  r    r  r  r    r!   clear  s    z0test_subclass_clear_cla.<locals>.ClearAxes.clearN)r  r  r   r*  r    r  r    r!   	ClearAxes  s   r+  c                       s   e Zd Z fddZ  ZS )z/test_subclass_clear_cla.<locals>.ClearSuperAxesc                    s   dt    d S r  )r"  r*  r  r#  r    r!   r*    s    z5test_subclass_clear_cla.<locals>.ClearSuperAxes.clear)r  r  r   r*  r%  r    r  r&  r!   ClearSuperAxes  s   r,  c                   @   s   e Zd ZdS )z-test_subclass_clear_cla.<locals>.SubClearAxesNr(  r    r    r    r!   SubClearAxes	  s   r-  Fr   )r   warnsr   r   r   )	r!  r'  r)  r+  r,  r-  r'   
axes_classr   r    r  r!   test_subclass_clear_cla  s$    22r0  c                  C   s*   t  D ]} d| jvrd| jvsJ qd S )Nr0  r   )r   __subclasses__r   __dict__)klassr    r    r!   !test_cla_not_redefined_internally  s    
r4  c                 C   st   t ddd, |  }|ddgddg W d    n1 sB0    Y  | }|ddgddg |  d S )NT)zxtick.minor.visiblezytick.minor.visibler   r1   )rM   r
   r   r|   minorticks_on)r   r   rd   re   r    r    r!    test_minorticks_on_rcParams_both"  s    
2r6  Zautoscale_tiny_rangeTremove_textc                  C   sL   t dd\} }t|jD ],\}}dd|  }|ddgdd| g qd S )Nr2   rq   ir   r1   )r#   r   	enumerateflatr|   )r'   axsr   r   y1r    r    r!   test_autoscale_tiny_range-  s    r=  defaultc                  C   s   t dd\} }|g d |jdddd |jdddd t| d t| d	 | sfJ | srJ |	 s~J |jd d
 t| d t| d	 | sJ | sJ |	 sJ d S )Nr1   r1   r2   r   r   Tr+   F)enableaxistightr,   )g333333ÿg333333	@)r         @)r@  )
r#   r   r|   r  r   r~   r   r  r  get_autoscale_onr&   r    r    r!   test_autoscale_tight6  s    rE  c                  C   s   t jdtd} tjdddd\}\}}|| |  || |  |jdd |jdd t  | d | d f}t	|
 | t	| | t	|
 | t	| | d	 | d f d S )
Nr   Zdtyper2   r1   Tsharex)rB  ro   r   )r\   ra   floatr#   r   loglogsemilogxr  r   r   r~   r   )r+   r'   r   r   Zlimsr    r    r!   test_autoscale_log_sharedN  s    rL  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   r1   r2   r   ri   rk   )      r   FrN  r   T)
r#   r   rz   r   r~   r   Zuse_sticky_edgesr  Z_xmarginZ_ymargin)r'   r   rs   rt   r    r    r!   test_use_sticky_edges`  s    rO  c                 C   sZ   t ddd}| d}| jd|d}|| |d}|jd|d}|| d S )Nr   r   r   r	  r
  rG  )r\   ra   rx   r   
pcolormesh)r   r   Zr  r   r    r    r!   test_sticky_shared_axess  s    


rR  Zoffset_pointsc                  C   sf   t ddd} t dt j |  }t }|jdddd}|j| |d	d
d\}|jdddddd d S )N              @{Gz?r   F)ro   r   r   )Zautoscale_onrs   rt   r   purpler   r   z	local maxr   r1   datar   r   zoffset points)xyxycoordsxytext
textcoords)	r\   ra   r  r   r#   r   r   r|   annotate)tsr'   r   liner    r    r!   test_basic_annotate  s    
re  zarrow_simple.pngc            
      C   s   d} d}d}t | ||}tdd\}}tt|j|D ]v\}\}}|dd |dd |\} }}dtj	 | d }	|j
ddt|	t|	|	d	 | |||	d
 |	d
 d
 q8d S )N)TF)rX   rH   r;   r   r   r2      r   r   rq   )widthlength_includes_headshapehead_starts_at_zeroZ
head_widthhead_length)r   r#   r   r9  zipr:  set_xlimset_ylimr\   r   arrowr   r  )
ri  rj  rk  kwargsr'   r;  r   r   kwargthetar    r    r!   test_arrow_simple  s$    
rt  c                  C   s$   t  \} }|jdddddd d S )Nr   )rl  )r#   r   rp  _r   r    r    r!   test_arrow_empty  s    rw  c                  C   s@   t  \} }|dddd | dks,J | dks<J d S )Nr1   )皙?皙@)r#   r   rp  r~   r   ru  r    r    r!   test_arrow_in_view  s    rz  c                  C   sN   t  \} }|jdddd}|jd u s*J |jdddi d}|jd usJJ d S )Nfoor   r1   r2   r   )r_  )r_  
arrowprops)r#   r   ra  Zarrow_patch)r'   r   annr    r    r!   test_annotate_default_arrow  s
    r  c                  C   sp   t  \} }t|jj}ttjj}t|	 t|	 ksDJ t
| | D ]\}}||ksVJ qVdS )z?Check that the signature of Axes.annotate() matches Annotation.N)r#   r   inspect	signaturera  
parametersmtextZ
Annotationlistkeysrm  values)r'   r   Zannotate_paramsZannotation_paramsp1p2r    r    r!   test_annotate_signature  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 g d}||| g dd |j|g|gddd ||||| || gg dd |	j|g|gddd |	|| d| j d| j d| j d| j gd |
j|g|gddd |
j|||| || gd| j d| j d| j d| j gdd |  d S )Nr   ET  r      dt      $@g     @z
2009-04-27z
2009-04-29datetime64[D]rF  r2   degred)Zyunitsr   r   )rS  rS  g     V@rS  bZ   r   )r   )r   r   r   r   Epochdatetimer  Durationr\   ra   mdatesdate2numr#   r   r|   fillZautofmt_xdate)r   rb  valuedayr  Zdtnr'   r   r   r   ax4indr    r    r!   test_fill_units  s4    


""r  c                   C   s   t jtdd& tjdgdgddd W d    n1 s:0    Y  t jtdd& tjdgdgdd	d
 W d    n1 s~0    Y  t jtdd& tjdgdgddd W d    n1 s0    Y  tjdgdgddd d S )Nzmarker .* redundantly definedr  r   r   r+   rj   z linestyle .* redundantly defined---r   zcolor .* redundantly definedrr   r   r   )r   r   )r   r.  UserWarningr#   r|   errorbarr    r    r    r!    test_plot_format_kwarg_redundant  s    444r  c                 C   sz   g d}t |}| }|  }|j||t |t |d^}}|ddg |j||t |t |ddgd d S )Nr?  xerryerrr2   )r  r  dashes)r\   r   r  r  absZ
set_dashes)r   r   r+   r,   re   rd   rd  rv  r    r    r!   test_errorbar_dashes  s    
"r  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 )Nr   lines.markerT	axes.gridr2   r   r1   r   r  r   r[  r  )rM   r   r#   r   r|   )r'   r   r   r[  r    r    r!   test_single_point  s    

r  zsingle_date.pngr   )r   c                  C   sj   dt jd< ttd} dg}dg}t dd\}}|d j||  |d	d
d |d j||d	d
d d S )N)   zaxes.formatter.limitsz
0000-12-31g    X&Ag(\bPr2   r1   r   r   r  r  )	r#   r   r  r  r\   
datetime64r   	plot_dater|   )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 )Nrq   r1   ro   r   r   ro   r1   r2   r1   gQQ?)r   	   rs   rt   )r\   ra   rx   r   r|   r}   Zravel)r   r   rowcolr;  r    r    r!   test_shaped_data)  s    

r  c                  C   sZ   t jddgdtfdtfgd} t d}|d jdd| d |d	 jddd
| d d S )Nr1   r1   r2   r2   rv   ZtwosrF  r2   r   r  r1   r  )r\   r   rI  r#   r   r   r|   )Zptsr;  r    r    r!   test_structured_data8  s    r  Zaitoff_proj)r   r8  r   c                  C   sz   t t j t jd} t t j d t jd d}t | |\}}tjdtddd\}}|  |j|j	|j	ddd	 d
S )z^
    Test aitoff projection ref.:
    https://github.com/matplotlib/matplotlib/pull/14451
       r2   )   @ZaitoffZ
projection)figsize
subplot_kwr   r   )rp   N)
r\   r   r   meshgridr#   r   dictgridr|   r:  )r+   r,   XYr'   r   r    r    r!   test_aitoff_projB  s    
r  Zaxvspan_epochc                  C   s   dd l m  m}  |   | jdtdddd}| jdtdddd}| d| jd}t	
 }|j||d	d
d ||d|  |d|   d S Nr   r  r  r1   r  r     r   r         ?)r   alpharT  )r   r   r   r   r  r  r  r  convertr#   r  axvspanrn  r   t0tfr  r   r    r    r!   test_axvspan_epochS  s    r  Zaxhspan_epoch{Gz?)r   c                  C   s   dd l m  m}  |   | jdtdddd}| jdtdddd}| d| jd}t	
 }|j||d	d
d ||d|  |d|   d S r  )r   r   r   r   r  r  r  r  r  r#   r  axhspanro  r  r    r    r!   test_axhspan_epochb  s    r  zhexbin_extent.pngc                  C   sl   t  \} }tdd d}|\}}|j||g dd ||d}t  \} }|jddg d|d d S )	N  )r2     r   r   333333?ffffff?)extentr   r+   r,   )r  r[  )r#   r   r\   ra   rx   hexbin)r'   r   r[  r+   r,   r    r    r!   test_hexbin_extentq  s    
r  zhexbin_empty.pngc                  C   s   t  } | g g  d S r   )r#   r  r  r   r    r    r!   test_hexbin_empty  s    r  c                  C   s`   t  \} }tdd d}|\}}|j||g ddd}tddd}||d	 s\J d S )
N   r2   r   r  ro   )r  Zpicker  ,  r   r   )r#   r   r\   ra   rx   r  r   contains)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 )NFpcolormesh.snaprU   順 r         @rC  r2   r   r   T)yscalebins	marginalsreduce_C_function)r#   r   r\   r]   r^   standard_normalpowerr   r  sumrB   )nr+   r,   r'   r   hr    r    r!   test_hexbin_log  s    
r  zhexbin_linear.pngr   r8  c                  C   s^   t jd d} t j| }dd|  dt j|   }t \}}|j||ddt jd d S )	NrU   r  r   r  rC  rq   r   T)Zgridsizer  r  )r\   r]   r^   r  r#   r   r  r  )r  r+   r,   r'   r   r    r    r!   test_hexbin_linear  s    r  c                  C   sH   t dd\} }t \}}|j| |dddd}| dksDJ d S )Nr  r  r   r2   r   )r  vminvmax)r\   ra   rx   r#   r   r  Zget_clim)r+   r,   r'   r   r  r    r    r!   test_hexbin_log_clim  s    r  c                  C   s   t  \} }|  |g dg d | dks8J | dksHJ t   t  \} }|  |g dg d | dksJ | dksJ t  \} }|d |	dd	 | d
ksJ d S )N)rW  r2   r   )r1   r2   rW  r   )r   r  rV  )r  r   )r   rW  r   rq   r1   )rq   r1   )
r#   r   invert_xaxisr|   r~   r   r  invert_yaxis
set_yscalero  r&   r    r    r!   test_inverted_limits  s    
r
  Znonfinite_limitsc                  C   st   t dt jd} t jdd t | }W d    n1 s<0    Y  t j| t| d < t \}}|	| | d S )NrS  rU  ignoredivider2   )
r\   ra   eerrstater   nanlenr#   r   r|   r+   r,   r'   r   r    r    r!   test_nonfinite_limits  s    (r  plot_fun)r3   r|   fill_betweenc                 C   s^   t jdddd}| }| }t|| g g  ||fD ] }t|| |tt|dd q8d S )Nz
2010-01-01z
2011-01-01r  rF  C0r  )r\   ra   r   r   r   r  )r  r   r   r+   rd   re   r   r    r    r!   test_limits_empty_data  s    r  rz   )r8  r   c                  C   s   dt jd< d} t| | f\}}|| d 8 }|| d 8 }t|d |d  ||  }t \}}|| d|i}t \}}|jd|d d S )Nrl   image.interpolationr   r2   r  r  )rM   r   r\   indicessqrtr#   r   rz   )Nr+   r,   r  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 )Nrl   r  r   r2   r   r   )	clip_path)rM   r   r\   r  r  r#   r   contourcollections	get_pathsget_transformmtransformsZTransformedPathrz   )	r  r+   r,   r  r'   r   r5   r  Zclip_transformr    r    r!   test_imshow_clip  s    

r#  c                  C   sd   ddgddgg} t  }tjtdd* |j| tddd	d
d W d   n1 sV0    Y  dS )4Parameters vmin, vmax should error if norm is given.r1   r2   r   r   LPassing a Normalize instance simultaneously with vmin/vmax is not supported.r  rq   r   r   )normr  r  N)r#   r  r   r   
ValueErrorrz   mcolors	Normalize)r   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 )Nr1   r2   (   )
linewidthsr   r   )
r#   r   r\   r   r   r  ZPolyCollectionadd_collection
set_xbound
set_ybound)r'   r   vertsr5   r    r    r!   test_polycollection_joinstyle)  s    "
r2  z	x, y1, y2r  r   rS  r2   )Z
2d_x_inputZ2d_y1_inputZ2d_y2_input)idsc                 C   sH   t  \}}tt || || W d    n1 s:0    Y  d S r   )r#   r   r   r   r(  r  r+   r<  r  r'   r   r    r    r!   test_fill_between_input4  s    r5  z	y, x1, x2)Z
2d_y_inputZ2d_x1_inputZ2d_x2_inputc                 C   sH   t  \}}tt || || W d    n1 s:0    Y  d S r   )r#   r   r   r   r(  fill_betweenx)r,   x1r  r'   r   r    r    r!   test_fill_betweenx_inputE  s    r8  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 )NrS  r2   r  333333?r   r1   TrG  blackr  white/)wherer   hatchinterpolater  )r=  r   r?  r   r   r   )r\   ra   r   r   r#   r   r|   r  r   Zmasked_greaterZmasked)r+   r<  r  r'   r   r   r    r    r!   test_fill_between_interpolateV  s(    r@  Z#fill_between_interpolate_decreasingc               	   C   s   t g d} t g d}t g d}tjdd\}}||| d ||| d |j| ||||k dd	d
d |j| ||||kdd	d
d |dd |dd d S )N)gfffff@i  i  )g"@r  ry  )g@gffffff@gffffff@)r  r  r  ztab:redkr   T皙?r=  r   r?  r  r  r   r      X  )r\   r   r#   r   r|   r6  rn  ro  )r   rb  Zprofr'   r   r    r    r!   (test_fill_between_interpolate_decreasingn  s    rG  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
 |j| |dd
 |j| ||||kdddd |j| ||||kdddd d S )Nrq   r              rg   r   rB  r5   r  r   Tr   rD  r  )r\   ra   asarrayr  r#   r   r|   r  r4  r    r    r!   !test_fill_between_interpolate_nan  s    
 "rN  z
symlog.pdfc                  C   sX   t g d} t g d}t \}}|| | |d |d |dd d S )N)r   r1   r2   r      r  rg  rI  )i@B i  r  r   r   r   r   r   symloglinearro   i )r\   r   r#   r   r|   r	  
set_xscalero  r  r    r    r!   test_symlog  s    

rS  zsymlog2.pdfc                  C   sn   t ddd} tdd\}}t|g dD ],\}}|| |  |jd|d |d	 q,|d
 dd d S )N2   MbP?r   r1   )      4@r   r   r   rU  rP  )	linthreshTro   皙r   )	r\   ra   r#   r   rm  r|   rR  r  ro  )r+   r'   r;  r   rX  r    r    r!   test_symlog2  s    rZ  c               	   C   s   g d} g d}t | |\}}t ||}t| tt| t| ||d dd df  t||t|d dd df  d S )N)            rN  rS  r   r   r   )r[  g      r\  g      rN  g      пr   r  r         ?r         ?r   ro   )r\   r  hypotr#   pcolorr  )r+   r,   r  r  rQ  r    r    r!   test_pcolorargs_5205  s    
ra  rP  c                  C   s*  dt jd< d} tdd| }tdd| d }t||\}}t|t| }t|t| }|d }t||d }||  |	  }t
t|d	t| k |}t d
d\}	\}
}}|
j|||d dd df d	dd |j|||d dd df dddgd |j|||dd d S )NFr  rg  r[  r   r2   皙?r   r   r1   r   ro   rB  r   
edgecolorsr  wgouraudshading)r#   r   r\   r   r  r  r   r_  minptpr   masked_wherer  maxr   rP  )r  r+   r,   r  r  QxQzrQ  Zmr'   r   r   r   r    r    r!   test_pcolormesh  s    
 $(rp  Zpcolormesh_smallZepsc                  C   s6  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 |	jD ]}|  q"d S )Nr   r[  r   r2   rb  r   r   r1   ro   rB  rc  r  re  rf  rg  )r\   r   r  r  r   r_  ri  rj  r   rk  r  rl  r#   r   rP  r  Zset_axis_off)r  r+   r,   r  r  rm  rn  rQ  ro  r'   r   r   r   r   r    r    r!   test_pcolormesh_small  s      $(
rq  Zpcolormesh_alphaZpdf)r   r8  c               
   C   s  dt jd< d} ttdd| tdd| d \}}|}|t| }t||d }||  |  }t	j
d d	}|td	}d
d
ttd	  |d d df< t|}t dd\}	\\}
}\}}|
|||fD ]"}|tjdddg ddd q|
j|||d dd df |dddd |j||||dddd |j|||d dd df |ddd |j||||ddd d S )NFr  rg  r[  r   r2   r   viridis   r   r   )r   r[  )r  r   r   r   r   )r   zorderro   rC  r:  r1   )rm   r  rh  rt  rf  )rm   rh  rt  )r#   r   r\   r  r   r   r_  ri  rj  r   	colormaps	resampledra   r)  ZListedColormapr   	add_patchmpatches	RectanglerP  )r  r  r  rm  ZQyrQ  Zvircolorsrm   r'   r   r   r   r  r   r    r    r!   test_pcolormesh_alpha  s2    
$

&r{  zpcolormesh_datetime_axis.pngc                     s  dt jd< t  } | jdddd tddd t fd	d
tdD }td}t	tdtd\}}|| }t 
d t |d d |d d |d dd df  t 
d t ||| tj|tj ddd}tj|d d tjf ddd}t 
d t |d dd df |d dd df |d dd df  t 
d t ||| |  D ]*}| D ]}|d |d qrqfd S )NFr  rC  \(\?333333?Zhspacer7   rG     r1   c                    s   g | ]} t j|d  qS daysr  	timedeltar   dbaser    r!   r     r   z1test_pcolormesh_datetime_axis.<locals>.<listcomp>r  r     ro      r   rA        r;   r   )r#   r   r   subplots_adjustr  r\   r   r   ra   r  r  rP  repeatnewaxisget_axesget_xticklabelsset_haset_rotationr'   r+   r,   Zz1Z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 
||| |  D ]*}| D ]}|d |d qhq\d S )NrC  r|  r}  r~  r  r1   c                    s   g | ]} t j|d  qS r  r  r  r  r    r!   r   /  r   z-test_pcolor_datetime_axis.<locals>.<listcomp>r  r  r  ro   r  r   r  r  r  r;   r   )r#   r   r  r  r\   r   r   ra   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    n1 s~0    Y  tt  |	|||j
 W d    n1 s0    Y  tt2 |j	|||d dd df dd W d    n1 s0    Y  tt2 |j	|||d dd df dd W d    n1 sT0    Y  t j|d	< tt. |	|||d dd df  W d    n1 s0    Y  t jd
d$ t jj||d	k d}W d    n1 s0    Y  tt. |	|||d dd df  W d    n1 s40    Y  g d}ddg}t ||\}}t |j}tjtdd" |j	|||dd W d    n1 s0    Y  d S )Nrg  r[  r   r2   r   ro   rf  rg  r   r  invalid)mask)ig  r   r1   r&  rq   z.are not monotonically increasing or decreasingr  auto)r\   r   r  r_  r#   r   r   r   r   rP  TNaNr(  r  r   r   zerosrj  r.  r  )r  r+   r,   r  r  rQ  rv  r   r    r    r!   test_pcolorargsC  s:    ,.BB
>4>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   rq   r   rU   r2   r  r:  rg  ro   rl   r   r\   ra   r]   r^   randnrP  diffr   r   r   r+   r,   rQ  r  r  r    r    r!   test_pcolornearestd  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 )  r  fromtimestampr   r    r    r!   r   w  r   z+test_pcolornearestunits.<locals>.<listcomp>rq   r   r   rU   r2   r  r:  rg  c                 S   s    g | ]}t j |d  d qS )r   r  r  r   r    r    r!   r     r   ro   rl   )	r   r   r\   ra   r]   r^   r  rP  r  r  r    r    r!   test_pcolornearestunitst  s    r  c                  C   s   t  \} }tdd}tdd}tjd tjdd}tjt	dd" |j
|||dd W d    n1 st0    Y  d S )	Nr   r  r   rU   zDimensions of Cr  r:  rg  )r#   r   r\   ra   r]   r^   r  r   r   r   rP  )r'   r   r+   r,   rQ  r    r    r!   test_pcolorflaterror  s    r  snapFc           	      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   rq   r   rU   r   r  )r  ro   r2   r  )	r   r   r  r   r+   r,   rQ  r  r  r    r    r!   test_pcolorauto  s    r  	canonicalc                  C   s   t  \} }|g d d S )Nr1   r2   r   r#   r   r|   r&   r    r    r!   test_canonical  s    r  zarc_angles.pngc            
      C   sL  d} d}d}d}t dd\}}t|jD ]\}}|d d }|d }	|tj|| |dd	 |tj|| ||	|d
 ||t	
t	|	 |d  |d |t	
t	| |d  g|t	t	|	 |d  |d |t	t	| |d  g || | || | | d9 } |d9 }|d d |d d f}|d9 }q*d S )Nr2   r1   )r   r   r   h  r  -   r   )r  )theta1theta2r   rq   )r#   r   r9  r:  rw  rx  ZEllipseArcr|   r\   r  deg2radr   rn  ro  )
re  r  Zcentrer   r'   r;  r   r   r  r  r    r    r!   test_arc_angles  s2    r  Zarc_ellipsec               	   C   sN  d\} }d\}}d}t t d}|d t | }|d t | }t |}t t |t | gt |t |gg}	t |	t ||g\}}|| 7 }||7 }t }
|
j	ddd}|j
||d	d
d
ddd tj| |f|||dddd}|| |
j	ddd}|j
||d	dddd tj| |f|||dddd}|| d S )N)gRQ?gp=
ף?)r   r   r  r   r	  r  )rr   r   yellowr1   )r  r   r   r   rt  r2   F)angler   r  rt  r
  equalr   )r  r   r   rt  )r\   r  ra   r  r   r   r`   r#   r   r   r  rx  r  rw  )Zxcenterycenterrh  heightr  rs  r+   r,   ZrthetaRr'   r   e1e2r    r    r!   test_arc_ellipse  s:    

r  c                  C   sb   t  \} }td}|jg dg d|d |jg dg d|d |jg dg d|d d S )Nr   r  r   r2   r1   r  )r   r   r2   )r   r   r   )r#   r   mmarkersMarkerStyler|   r3   r  )fixr   mr    r    r!   test_marker_as_markerstyle  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   rq   r   r   r   r>  r)   r  mark allr  r)   rc  mark every 10+r   r  mark every 5 starting at 10r\   r   r   r  r#   r   r|   rA   r  r    r    r!   test_markevery  s    r  Zmarkevery_lineg{Gzt?)r8  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   rq   r   r   z-or>  r  z-dr  r  z-sr  z-+r  r  r  r  r    r    r!   test_markevery_line  s    r  Zmarkevery_linear_scalesrV  c            
      C   s   d ddg dddgt dddd	d
dddg} d}tjt| | d |}d}tddd|  d| }t|d | }t| D ]R\}}|| }|| }	t	
|||	f  t	dt|  t	j||ddd|d qd S )Nr  r   r  rs  rI  r   r   ro   r   r  r   r   r   r   rS  r   ?r   r1   )\(?rq   r2   r   markevery=%sr   r  r   lsmsr  )slicerM   gridspecGridSpecr  r\   r   r   r9  r#   r  r*   strr|   
casescolsgsdeltar+   r,   r   caser  r  r    r    r!   test_markevery_linear_scales  s&    
r  Zmarkevery_linear_scales_zoomedc            
      C   s   d ddg dddgt dddd	d
dddg} d}tjt| | d |}d}tddd|  d| }t|d | }t| D ]f\}}|| }|| }	t	
|||	f  t	dt|  t	j||ddd|d t	d t	d qd S )Nr  r  r  r   ro   r   r  r   r   r   r   r  r  r1   r  rq   r2   r   r  r   r  r   r  )rO  g@)rb  g333333?)r  rM   r  r  r  r\   r   r   r9  r#   r  r*   r  r|   rs   rt   r  r    r    r!   #test_markevery_linear_scales_zoomed/  s*    

r  Zmarkevery_log_scalesc            
      C   s   d ddg dddgt dddd	d
dddg} d}tjt| | d |}d}tddd|  d| }t|d | }t| D ]f\}}|| }|| }	t	
|||	f  t	dt|  t	d t	d t	j||ddd|d qd S )Nr  r  r  r   ro   r   r  r   r   r   r   r  r  r1   r  rq   r2   r   r  r   r   r  r   r  )r  rM   r  r  r  r\   r   r   r9  r#   r  r*   r  xscaler  r|   r  r    r    r!   test_markevery_log_scalesJ  s*    


r  Zmarkevery_polarc            	      C   s   d ddg dddgt dddd	d
dddg} d}tjt| | d |}tddd}dtj | }t| D ]V\}}|| }|| }t	j
|||f dd t	dt|  t	j||ddd|d qld S )Nr  r  r  r   ro   r   r  r   r   r   r   r  r  r1   r  r2   Tpolarr  r   r  r   r  )r  rM   r  r  r  r\   r   r   r9  r#   r  r*   r  r|   )	r  r  r  r  rs  r   r  r  r  r    r    r!   test_markevery_polare  s$    
r  Zmarkevery_linear_scales_nansc            
      C   s   d ddg dddgt dddd	d
dddg} d}tjt| | d |}d}tddd|  d| }t|d | }tj |d d<  |dd < |dd< t	| D ]R\}}|| }|| }	t
|||	f  t
dt|  t
j||ddd|d qd S )Nr  r  r  r   ro   r   r  r   r   r   r   r  r  r1   r  rq   r2   r   rU  F   r  r   r  r   r  )r  rM   r  r  r  r\   r   r   r  r9  r#   r  r*   r  r|   r  r    r    r!   !test_markevery_linear_scales_nans}  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   r1   rq   zy.      >@r  )r  mewmecr   r   r2   r  )r\   r   r#   r   r|   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   r1   edge0)align
tick_labelr  r   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   r1   r   )r#   r   r  r\   r  r&   r    r    r!   test_nan_bar_values  s    r  c                  C   s   t  \} }|g g  d S r   )r#   r   r  r&   r    r    r!   test_bar_ticklabel_fail  s    r  zbar_tick_label_multiple.pngc                  C   s0   t  } | jddgddgddgddgdd	 d S )
Nr1         @r2   r   r   r   r  rO   rh  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 )NrO   zytick.alignmentr1   r  r2   r   r   r   r  r  )rM   r   r#   r  r  r  r    r    r!   *test_bar_tick_label_multiple_old_alignment  s
    
r  c                 C   s`   |   }g d}g d}dd |D }dd |D }|j||dd |  }|j||dd d S )Nr   g @g333333@r  rb  ry  gffffff
@g@c                 S   s   g | ]}t |qS r    r   r   r    r    r!   r     r   z+test_bar_decimal_center.<locals>.<listcomp>c                 S   s   g | ]}t |qS r    r   r   r    r    r!   r     r   rO   r  r   r  r   r   r   x0y0r+   r,   r    r    r!   test_bar_decimal_center  s    r	  c                 C   sl   |   }g d}g d}dd |D }dd |D }|j||g ddd |  }|j||g ddd d S )	Nr  r  c                 S   s   g | ]}t |qS r    r   r   r    r    r!   r     r   z,test_barh_decimal_center.<locals>.<listcomp>c                 S   s   g | ]}t |qS r    r   r   r    r    r!   r     r   )r   r   r1   r1   rO   r  r  r   barhr  r    r    r!   test_barh_decimal_center  s    r  c                 C   s^   g d}g d}g d}dd |D }|   }|j|||dd |  }|j|||dd d S )Nr  r  r  g333333?r1   r2   c                 S   s   g | ]}t |qS r    r   r   r   r    r    r!   r     r   z*test_bar_decimal_width.<locals>.<listcomp>rO   rh  r  r  )r   r   r+   r,   Zw0re  r   r    r    r!   test_bar_decimal_width  s    r  c                 C   s^   g d}g d}g d}dd |D }|   }|j|||dd |  }|j|||dd d S )Nr  r  r  c                 S   s   g | ]}t |qS r    r   r  r    r    r!   r     r   z,test_barh_decimal_height.<locals>.<listcomp>rO   r
  r  )r   r   r+   r,   Zh0r  r   r    r    r!   test_barh_decimal_height  s    r  c                  C   sR   t  } | jddgddgdddd}|D ]$}| dks<J | d	ks(J q(d S )
Nr1   r2   r   r   r   r  r  r   r   r   r   r   r   r1   r   r   r   r#   r  r  get_facecolorget_edgecolorr   rectsrectr    r    r!   test_bar_color_none_alpha   s
    r  c                  C   sR   t  } | jddgddgdddd}|D ]$}| dks<J | d	ks(J q(d S )
Nr1   r2   r   r   r  r   r  r  r  r  r  r    r    r!   test_bar_edgecolor_none_alpha  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 )
Nr1   r  r2   r   r   r   r  rO   )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.  r1   r   r   hoursrh  r2   )r  rh  )r  )r  r  r   c                 S   s   g | ]}t j|d qS )r   r  r   rb  r    r    r!   r   ,  r   z&test_bar_timedelta.<locals>.<listcomp>r   )rq   r  N)	r#   r   r  r  r  r  r\   r   broken_barhr&   r    r    r!   test_bar_timedelta  s<    







r%  c                 C   sB   t jdd}| jdd| jdddj}t  tj||d d S )Nr   r2   z1/1/2000r1   )years)periodsfreq	positions)	r\   r]   r   
date_rangeZ
DateOffsetyearr#   r   boxplot)pdr[  r&  r    r    r!   test_boxplot_dates_pandas2  s    r/  c                  C   s   t jdd} td\}}|d j| g dg dd |d j| g dd	d |d
 j| g dd |d j| dg dd |d j| dd	d |d j| dd |d j| g dd |d j| d	d |d |  d S )Nr   r   r  r   )r   r   r   r   )	capwidthswidthsr1   r   r2   r0  r   r   rO  r1  r  r  )r\   r]   r   r#   r   r-  )r[  r'   r;  r    r    r!   test_boxplot_capwidths;  s    r4  c                 C   s   ddl m}m} t }|d}tdddg}t|dk rZ||d tj	dd	  q2t
d
}t
||\}}t|d t|d f}	t
|	d |	d  }
|	|
_z(|  ||||
}|j  W |  n|  0 d S )Nr   )register_matplotlib_converters deregister_matplotlib_converterso     r1   r  ro   x   )secondsr   )Zpandas.plottingr5  r6  r#   r   r   r  r  appendr  r\   ra   r  rj  rP  canvasr   )r.  r5  r6  r'   r   timesZy_valsZ	time_axisZy_axisrj  Zz_dataimr    r    r!   test_pcolor_regressionL  s     

r?  c                 C   s   |  g dg dg dg dd}| |g d |d< |ddg dg }|j}|d }|d }t \}}|j||dd	d
 |j||ddd d S )N)r  r  r  r1   r1   r1   r  )r,  monthr  r  )r,  rA  r  dater  rq   rO   r  oranger   r   )		DataFrameto_datetimegroupbyr  indexr#   r   r  r|   )r.  dfZmonthlydatesZforecastbaseliner'   r   r    r    r!   test_bar_pandasj  s    rK  c                 C   sD   | j g dg ddg dd}t \}}|j|jd|jd d S )N)r   r   r  r   rC  r  )r+   rh  r  rG  r   r"  )rD  r#   r   r  r+   rh  r.  rH  r'   r   r    r    r!   test_bar_pandas_indexed}  s
    rO  c                 C   sh   |   }|  }ddg}ddg}ddg}tdD ]"}|j|| || d|| d q0|j|||d d S )	Nr1   r2   r   r+   r   r  )r   r>  )r>  )r   r   r  )r   r   rd   re   r+   r,   hatchesr   r    r    r!   test_bar_hatches  s     rQ  )r+   rh  r)   expected_labelscontainer_labelr+   r1   
_nolegend_r   r  r5   )rq   r  r   )ABC)r  r  rT  bars)rT  rT  rT  c           	      C   sJ   t  \}}|j| ||d}dd |D }||ks6J | |ksFJ d S )Nr  c                 S   s   g | ]}|  qS r    )rQ   )r   r  r    r    r!   r     r   z#test_bar_labels.<locals>.<listcomp>)r#   r   r  rQ   )	r+   rh  r)   rR  rS  rv  r   Zbar_containerZ
bar_labelsr    r    r!   test_bar_labels  s
    rZ  c                  C   s   t  \} }tt, |jddgddgg dd W d    n1 sH0    Y  t  \} }tt* |jddgddgdgd W d    n1 s0    Y  d S )Nr+   r,   r1   r2   )r  r  rQ  r  r  )r#   r   r   r   r(  r  ru  r    r    r!   test_bar_labels_length  s    :r[  c                 C   s   | j ddgdd| j ddgddfD ]4}t|| t|j| t| t|j q$| dg di}t| t|| d S )Nr1   r2   float64rF  ZFloat64r  r  )Seriesr#   r|   rG  rD  )r.  r+   rH  r    r    r!   test_pandas_minimal_plot  s    

r^  Zhist_logc                  C   sH   t dddd } t d|  d|  g}t \}}|j|ddd d S )Nr   r1   r  r   FT)r  r   )r\   r   concatenater#   r   hist)Zdata0r[  r'   r   r    r    r!   test_hist_log  s    ra  c                 C   s   |  dd}| dd}tg dD ]\}}|d|f d |d|f jdd|d |d|f jdd|d |d|f d |d d |f D ]}|jddd|d	 qq$d S )
Nr2   r   )r  step
stepfilledr   r   r1   histtypeT)r   re  )r   r9  r	  r`  )r   r   r   r   r   re  r   r    r    r!   test_hist_log_2  s    rf  c                  C   s   t d\} }|d jdgddggddd |d d |d jg dddd |d d | j  |d  |d  ksJ d S )Nr2   r   r1   
barstackedrd  r   r   r   r1   )r#   r   r`  r	  r<  r   r   r'   r;  r    r    r!   test_hist_log_barstacked  s    
rj  zhist_bar_empty.pngc                  C   s   t  } | jg dd d S )Nr  rd  r#   r  r`  r  r    r    r!   test_hist_bar_empty  s    rl  c                  C   s   t jd t t jjddddddt j} tj| ddd	}|d
 }t	dt
|D ]<}||d   }||  }|d d |d d ksVJ qVd S )NrU   r   r   r  sizer   r1   r   )r  r  r2   )r\   r]   r^   clipr_   astypefloat16r#   r`  r   r  Zget_corners)r  r  bcr  ZrleftZrrightr    r    r!   test_hist_float16  s    rs  zhist_step_empty.pngc                  C   s   t  } | jg dd d S )Nrb  rd  rk  r  r    r    r!   test_hist_step_empty  s    rt  zhist_step_filled.pngc            
      C   s   t jd t jdd} d}ddiddidd ii gd }d	gd
 dgd
  }tjdd
d\}}t|||jD ]B\}}}|j| |f|dd| |	d||f  |j
dd qn|d j}	tdd |	D sJ d S )Nr   r  r   rq   r  TFr2   rb  r   rc  )nrowsncolsre  stackedz%s/%srT  rG   r   r   c                 s   s   | ]}|  | kV  qd S r   )r  r  )r   r   r    r    r!   	<genexpr>  r   z(test_hist_step_filled.<locals>.<genexpr>)r\   r]   r^   r  r#   r   rm  r:  r`  r.   ro  r   all)
r+   Zn_binsrq  typesr'   r;  Zkg_typer   r   r    r    r!   test_hist_step_filled  s    
r  zhist_density.pngc                  C   s6   t jd t jd} t \}}|j| dd d S )NrU   r  Tdensity)r\   r]   r^   r  r#   r   r`  r[  r'   r   r    r    r!   test_hist_density  s    r  c                  C   sV   t jd} | d}g d}tj||dd\}}}t j||dd\}}t|| d S )Ni  r   )rW  ro   rN  r   r1   r   T)r  r  )r\   r]   ZRandomStater  r#   r`  Z	histogramr   )rngrb  r  Zmpl_heightsrv  Z
np_heightsr    r    r!   test_hist_unequal_bins_density  s    
r  c                  C   sd   t  dddt  dddgt  dddt  dddgg} t \}}|j| dd |j| dd d S )N  r1   r2   T)rx  F)r  r#   r   r`  r  r    r    r!   test_hist_datetime_datasets#  s    r  bins_preprocessc                 C   s   | S r   r    r  r    r    r!   <lambda>-  r   r  c                 C   s   t | dS )Nr  )r\   rM  rp  r  r    r    r!   r  .  r   )r  zdatetime.datetimeznp.datetime64c              	   C   s   t  dddt  dddt  dddt  dddgt  dddt  dddt  dddt  dddgg}t  dddt  dddt  dddg}t \}}|j|| |dd	\}}}tj|tj	| |j|| |d
d	\}}}tj|tj	| d S )Ni  r1   r   rJ  r2   r   rH  T)r  rx  F)
r  r#   r   r`  r\   r   r   r   rI  r  )r  r[  Z
date_edgesr'   r   rv  r  r    r    r!    test_hist_datetime_datasets_bins+  s    r  zdata, expected_number_of_histsc                 C   sH   t | \}}}t|}|jdkr2d|ksDJ n|jd |ksDJ d S )Nr1   r   )r#   r`  r\   rM  ndimrj  )r[  Zexpected_number_of_histsZhistsrv  r    r    r!   test_hist_with_empty_inputB  s
    

r  zhisttype, zorderr  rb  rc  c                 C   sH   t   }|jddg| d |js(J |jD ]}| |ks.J q.d S )Nr1   r2   rd  )r#   r   r   r`  r   
get_zorder)re  rt  r   r   r    r    r!   test_hist_zorderP  s
    

r  c                 C   s  dd l m} tg d}tg d}| 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i | |d |j|d |d gd|d gfi | |d dd  |d j	t
|d ||fddi| |d |jd|d g|d |d gfi | |d |jd|d g|d |d gfi | |d dd  |d j	|t
||d fddi| |d |j|d |d gd|d gfi | |d |j|d |d gd|d gfi | |d   |d j	t
|d ||fddi| |d |jd|d g|d |d gfi | |d |jd|d g|d |d gfi | |d   d S )Nr   )rO     rg   %   0   rg   r  r   )	r   r   r  rC  rT        @      @       @      "@r   r2   rJ  r1   rI   )rJ  rK   rJ   r   r   miterbuttsolid_joinstylesolid_capstylero   	drawstyle
steps-post)Zmatplotlib.lineslinesr\   r   r   flattenstairsZsemilogyrK  r|   r;  add_lineLine2Dro  rn  )r   r   Zmlinesr,   r+   	test_axesr   ref_axesr    r    r!   test_stairs\  s@    
(((22(22(22(22r  c                 C   s  g dg d }}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 )N)r1   r2   r   r   r2   )r   r1   r2   r   r   r   rf  r2   r   Tr  r1   rI   )rK   r  )rJ  r  r   )rJ  rK   r  ro   post)rb  r   )r   r  r  r  r\   r;  ro  r6  rn  rv   r  )r   r   r  r  bsr  r  r    r    r!   test_stairs_fill  s,    ""r  c                 C   s  d}|   }|g d}|| |g d |jtdd d |g dtdd  |g d |d td t| d td	dsJ t| d	 tdsJ |jd
d | jd
ksJ |  }|jg dd
d}|| d S )N)rW  r   r  r  r   r2   edges)r1   r2   r1   r   r1   rf  r  )	r   r  ro  set_datar\   ra   allcloseget_datarJ  )r   r   rt   test_axr  ref_axr    r    r!   test_stairs_update  s     
 r  c                 C   s\   |   }|jg dd d |  }ddd}|jtdg dfdd	i| |d
d  d S )N)r   rO  r  r  r  r  r  r   )r   rO  r  r  r  r  r   )r   r  r|   r   ro  )r   r   r  r  r   r    r    r!   test_stairs_baseline_0  s    
 r  c                  C   s>   t   } | g dg |  dks*J |  dks:J d S )N*   )'   r  r  )r#   r   r   r  r~   r   r  r    r    r!   test_stairs_empty  s    r  c                   C   sJ   t jtdd( tddgdtjdg W d    n1 s<0    Y  d S )NNan values in "edges"r  r1   r2   r   )r   r   r(  r#   r  r\   r  r    r    r    r!   test_stairs_invalid_nan  s    r  c                   C   sF   t jtdd$ tddgddg W d    n1 s80    Y  d S )NSize mismatchr  r1   r2   r   )r   r   r(  r#   r  r    r    r    r!   test_stairs_invalid_mismatch  s    r  c                  C   sZ   t ddgg d} tjtdd$ | jdtjdgd W d    n1 sL0    Y  d S )Nr1   r2   r   r  r  r  )r#   r  r   r   r(  r  r\   r  r  r    r    r!   test_stairs_invalid_update  s    r  c                  C   sX   t ddgg d} tjtdd" | jtdd W d    n1 sJ0    Y  d S )Nr1   r2   r   r  r  r   r  )r#   r  r   r   r(  r  r\   ra   r  r    r    r!   test_stairs_invalid_update2  s    r  ztest_stairs_options.pngc               
   C   s  t g dt g d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 ),Nr1   r2   r   r   r   r?  r1   r   r   TrV  )r   r  r)   r  rI   rW  )r   r  rK   r)   rC  r  r2   rX  )r   r  r   r)   r   D)r  r   rJ  rK   r)   ro      E)r   r  r   rJ  r)   r  rK  rX  F)rJ  r   r  r   r)   r   r     r   G)rJ  r   r  r)   r  rJ  r:  rg  //H)r   r  r   rJ  r>  r)   r   r8   )r\   r   rp  rI  copyr  r#   r   r  r   r  rA   )r+   r,   Zynr'   r   r    r    r!   test_stairs_options  s2    $
&.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  r\   ra   r  xticks)fr   r    r    r!   test_stairs_datetime  s    r  c                 C   sD   |   }|jg dddd |  }|jg ddd}|d d S )Nr  r  T)r   r  r  )r   r  	set_color)r   r   r  r  str    r    r!   test_stairs_edge_handling	  s
    r  c                  C   sH   t ddd} t ddd}t | t |d d t jf  }| ||fS )NrW  r      r9  )r\   r   r  r   r  )r+   r,   r  r    r    r!   contour_dat	  s    "r  Zcontour_hatchingc               
   C   s@   t  \} }}t \}}|j| ||dg dtjd ddd d S )Nr  )r<  \r  r  grayru   r   )rP  rm   extendr  )r  r#   r   contourfr   ru  )r+   r,   r  r'   r   r    r    r!   test_contour_hatching	  s    r  Zcontour_colorbarc            	   
   C   s   t  \} }}t \}}|j| ||tdddtj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`?r   ZRdBug333333r  ru   )levelsrm   r  r  r  gg^I+r,   r   r2   )r  rz  
linestylesr-  ry  r5   )r  rz  r-  r  F)Zerase)r  r#   r   r  r\   ra   r   ru  r  rB   Z	add_lines)	r+   r,   r  r'   r   csZcs1Zcs2rE   r    r    r!   test_contour_colorbar!	  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 )NFr  r   r   r2   r   rq   Tr  
rasterizedr   r+   r,   )r  r[  r  )r#   r   r\   r]   r^   r  r   r  )r+   r,   r'   r   r[  r    r    r!   test_hist2d7	  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 )
NFr  r   r   r   r2   rq   Tr  )	r#   r   r\   r]   r^   r   r  r   r  r  r    r    r!   test_hist2d_transposeI	  s    
r  c                  C   s>   t jd\} }t  }|tfD ]}|j| |dd q$d S )Nr  Tr  )r\   r]   r#   r   r   r  )r+   r,   r   objr    r    r!   test_hist2d_densityW	  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	e
jdddide iddiddig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/d0 Zd1d2gd3fd4d5d6g d7d8fd9d:gd3fd:gd; d3fd<gd= d8fd<gd; d8fd<gd> d?fg d@d8fg dAd8fg dBd3fg dCgd8fg dCgd= d?fg dCgd; d8fg dCgd> d?fg dDgd8fg dDgd= d?fg dDgd; d8fg dDgd> d?fg dDgd= g dCg d8fg dDdEdFgd?fg dDdEdFdGgd8fg dDdEdFdGg dHgd?fg dDdEd:gd3fg dDdEdFd:gd3fg dDdEdFdGd:gd3fgZe
jdIedJdK Zejd edgddLdM ZdNdO Zd8S )PTestScatterr3   r   Tr   c                 C   s   t g dt g dg dg dg d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 )Nr   r   r2   rO  r2   r   r2   r   r  r,   r  limerI  r         )0.50.60.7z0.8)r+   r,   r5   rc  c2r+   r   r,   r5   rc  r5   rc  r  )r5   rc  r[  )r\   r   r#   r   r3   )r  r[  r'   r   r    r    r!   test_scatter_plot_	  s    **zTestScatter.test_scatter_plotzscatter_marker.pngr7  c           
   
   C   s   t jdd\}\}}}|jg dg dg dg dg ddd	 |jg dg dg dg dg dtjd
ddd	 d\}}|| tj }tddtj d}tt	|| | t
|| | g}	|jg dg dg dg dg d|	d	 d S )Nr   rv  r  r  )r1   r   r   r,   r  r  )r  rU  r,  r   )rB  r  gr  rc  )r5   rc  rd  rj   r   r7   	fillstylerZ  r   r2   r  )r#   r   r3   r  r  r\   r   r   Zcolumn_stackr  r   )
r  r'   r  r   r   rxZryZarears  r1  r    r    r!   test_scatter_markerj	  s2    zTestScatter.test_scatter_markerZ
scatter_2Dr   )r8  r   c                 C   sP   t d}t d}t ||\}}|| }t \}}|j|||ddd d S )Nr   r2   r  face)r5   rc  rd  )r\   ra   r  r#   r   r3   )r  r+   r,   r  r'   r   r    r    r!   test_scatter_2D	  s    

zTestScatter.test_scatter_2Dr   c           
      C   s   t g d}t g d}t dd |D }t dd |D }g d}g d}| }	|	j||||d | }	|	j||||d d S )	Nr  r  c                 S   s   g | ]}t |qS r    r   r  r    r    r!   r   	  r   z4TestScatter.test_scatter_decimal.<locals>.<listcomp>c                 S   s   g | ]}t |qS r    r   r  r    r    r!   r   	  r   r  r  r  )r\   r   r   r3   )
r  r   r   r  r  r+   r,   r5   rc  r   r    r    r!   test_scatter_decimal	  s    z TestScatter.test_scatter_decimalc                 C   s   t t, tjddgddgddgd W d    n1 s<0    Y  t t, tjg dg dg dd W d    n1 s0    Y  d S )Nr1   r2   r   r   r  r  )r   r   r(  r#   r3   r  r    r    r!   test_scatter_color	  s    :zTestScatter.test_scatter_colorrq  rm   r  r'  r  r   r  c                 C   s   d}t jt|d$ tjg g fi | W d    n1 s<0    Y  t jt|d0 tjddgddgfdg i| W d    n1 s0    Y  tjg g fdg i| tjddgddgfdddgi| d S )	Nz"No data for colormapping provided r  r1   r2   r   r   r5   r   )r   r.  Warningr#   r3   )r  rq  Z
warn_matchr    r    r!   test_scatter_color_warning	  s    2>z&TestScatter.test_scatter_color_warningc                 C   sv   t jg dg dg dtjdddg dd}| jd	ks@J t| g d
g dg dg t| g d d S )Nr   r1   r   r2   z0.1z0.3r  r   r   r  rb  r9  ?r5   rj   r-  )r   r   r   r   r   r1   r   r   r   r1   r   r   r   r1   )	r#   r3   r  r  get_facecolorsrj  r   get_edgecolorsget_linewidthsr  collr    r    r!   test_scatter_unfilled	  s    z!TestScatter.test_scatter_unfilledr>  c                 C   sl   t jg dg dg ddg dd}t| |  t| g dg dg d	g t| g d d S )
Nr   r  r   r+   r  r  r  r  r  )r#   r3   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    n1 sD0    Y  tjtdd. t|dd  |dd  | W d    n1 s0    Y  tjtdd t||d W d    n1 s0    Y  d S )Nr   zsame size as x and yr  r1   zfloat array-liker{  )r\   ra   r   r   r(  r#   r3   )r  r+   r    r    r!   test_scatter_size_arg_size	  s    
4<z&TestScatter.test_scatter_size_arg_sizec                 C   sj   t jg ddtjtjgdd}t| ds2J t jg ddtjtjdgdd}t| dsfJ d S )Nr  r1   r  r   r?  r1   r   r   r1   )r#   r3   r\   r  r)  
same_colorr  r
  r    r    r!   test_scatter_edgecolor_RGB	  s    z&TestScatter.test_scatter_edgecolor_RGBc                 C   s   |  }tjd d}|dd |jtdtddtjdtjgg d|dd	 |  }tj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 )Nrr  rs  rB  r1   r   r2   r?  Tr5   rc  rm   Zplotnonfiniter   r   r5   rc  rm   )rc  r   	r   r   ru  rv  Zset_badr3   r   r\   r  r  r   r   r   rm   r    r    r!   test_scatter_invalid_color	  s    $z&TestScatter.test_scatter_invalid_colorc                 C   s   |  }tjd d}|dd |jtdtddtjdtjgg d|dd	 |  }|jd
dgd
dgddgddg|d d S )Nrr  rs  rB  r1   r   r2   r?  Fr  r   r   r  r  r  r    r    r!   test_scatter_no_invalid_color	  s    z)TestScatter.test_scatter_no_invalid_colorc              	   C   s`   g d}t  }tjtdd. |j|||tddddd W d	   n1 sR0    Y  d	S )
r$  r  r%  r  r&  rq   r   r   )r5   r'  r  r  N)r#   r  r   r   r(  r3   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 )Nr1   rL  )r   r3   )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 )Nrq   r2   r   rL  )r\   ra   r   r3   rx   )r  r   r   r+   r   r    r    r!   test_scatter_different_shapes	
  s
    
 z)TestScatter.test_scatter_different_shapes)r  NZrgby
conversion)r  N)r   N)NN)r  r  r  r   N)jauner  r  r   r   r   r   rj  )r  z0.4r  r  )r  r  r  C5)r  r   r  r  r  r1   r   r   r   r  z0.0r  r   r1   r   zc_case, re_keyc                 C   s   dd }d}ddd}|d u r8t jjj|di ||d nJtjt|| d	( t jjj|di ||d W d    n1 sx0    Y  d S )
Nc                   S   s   dS Nr   r    r    r    r    r!   get_next_colorA
  s    z2TestScatter.test_scatter_c.<locals>.get_next_colorr   z!^'c' argument has [0-9]+ elementsz^'c' argument must be a color)rj  r  r:  )r5   rd  rq  xsizeget_next_color_funcr  )r   r  r   _parse_scatter_color_argsr   r   r(  )r  Zc_caseZre_keyr"  r#  REGEXPr    r    r!   test_scatter_c?
  s    zTestScatter.test_scatter_cc                 C   s   g dg}g d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 )N)r1   r   皙?)r1   r   r(  r   r   r  r   r2   rL  )r   r3   r\   rv   r   )r  r   r   rgbZrgbare   rd   r    r    r!   test_scatter_single_color_cU
  s    

z'TestScatter.test_scatter_single_color_cc              
   C   s   t d}t \}}tdD ]@}|j|t d|d| dd|d d}| |d ksJ q|j|t dddddg tddd d}t| g tddt	j
d	  d S )
Nr   r   rX  r+   r   r1   )r5   rj   rc  r-  C3lines.linewidth)r\   ra   r#   r   r   r3   rX   r	  r   r   r   )r  r+   r'   r   r   Zpcr    r    r!   test_scatter_linewidthse
  s    
z#TestScatter.test_scatter_linewidths) r  r  r   r   r  r  r  r   r  r  r   markparametrizer)  r*  r  r  r   r   contextr  r  r  r  r  r  r  r  Zparams_test_scatter_cr'  r*  r-  r    r    r    r!   r  ^	  s   











		












+


r  )rd  c                K   s   | ||d ur|ni |fS r   r    )r5   r#  rd  rq  r    r    r!   _paramst
  s    r1  _resultz	c, colorszparams, expected_resultr  r   )r5   rz  r  rL  r  r  r  )r   r   r   r1   c                 C   s@   dd }t jjj| d|i\}}}||jks0J t||j d S )Nc                   S   s   dS r!  r    r    r    r    r!   r"  
  s    z5test_parse_scatter_color_args.<locals>.get_next_colorr$  )r   r  r   r%  r5   r   rz  )paramsZexpected_resultr"  r5   rz  Z_edgecolorsr    r    r!   test_parse_scatter_color_argsy
  s    r4  zkwargs, expected_edgecolorsr  r  r   )r   rd  )r5   r   rd  )r   r   c                 C   sN   dd }|  dd }|  dd }tjjj||| d|d\}}}||ksJJ d S )Nc                   S   s   dS r!  r    r    r    r    r!   r"  
  s    z@test_parse_scatter_color_args_edgecolors.<locals>.get_next_colorr5   rd  r2   )r#  r$  )popr   r  r   r%  )rq  Zexpected_edgecolorsr"  r5   rd  rv  Zresult_edgecolorsr    r    r!   (test_parse_scatter_color_args_edgecolors
  s    
r6  c                  C   sh   dd } t jtdd> tg dg dg}tjjj|d i d| d W d    n1 sZ0    Y  d S )	Nc                   S   s   dS r!  r    r    r    r    r!   r"  
  s    z;test_parse_scatter_color_args_error.<locals>.get_next_colorz&RGBA values should be within 0-1 ranger  )r   r   r  )r   rC  gffffff?r2   )rq  r#  r$  )	r   r   r(  r\   r   r   r  r   r%  )r"  r5   r    r    r!   #test_parse_scatter_color_args_error
  s    
r7  c                  C   s   G dd d} |  }|  }t j|_tjg d|d}t|tksDJ t  tjd|d}t|t	jj
tkstJ t  d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z#test_as_mpl_axes_api.<locals>.Polarc                 S   s
   d| _ d S )Nr   )theta_offsetr  r    r    r!   __init__
  s    z,test_as_mpl_axes_api.<locals>.Polar.__init__c                 S   s   t d| jifS )Nr8  )r   r8  r  r    r    r!   _as_mpl_axes
  s    z0test_as_mpl_axes_api.<locals>.Polar._as_mpl_axesN)r  r  r   r9  r:  r    r    r    r!   Polar
  s   r;  r   r  y   )r\   r   r8  r#   r  typer   r  r  r   Z	_subplotsZsubplot_class_factory)r;  ZprjZprj2r   r    r    r!   test_as_mpl_axes_api
  s    r>  c                  C   sZ   t  \} }t  \}}t | |t  u s2J | t  u sBJ t |  t | d S r   )r#   r   Zscar  Zgcfr  )fig1r   fig2r   r    r    r!   test_pyplot_axes
  s    

rA  c                  C   s   t  \} }|ttdd |jddd |  |jddd dd |j	|j
fD \}}|g d	ksrJ |g d
ksJ d S )Nr   r   r         @r  r  c                 S   s   g | ]}d d |  D qS )c                 S   s   g | ]}|  |j fqS r    )Zget_loclabel1get_textr#  r    r    r!   r   
  r   z.test_log_scales.<locals>.<listcomp>.<listcomp>)Z_update_ticks)r   rA  r    r    r!   r   
  s   z#test_log_scales.<locals>.<listcomp>))r   z$\mathdefault{9^{0}}$)r  z$\mathdefault{9^{1}}$)g     @T@z$\mathdefault{9^{2}}$r   r   r  r   rC  r   rT  r   )r  r   )r  r   )r  r   )g      2@r   )g      ;@r   )g      B@r   )g     F@r   )g      K@r   )g     O@r   )      R@r   ))gF]tE?z$\mathdefault{5.5^{-1}}$)r   z$\mathdefault{5.5^{0}}$)rB  z$\mathdefault{5.5^{1}}$)gF]tE?r   )gtE]t?r   )gF]tE?r   )g]tE?r   rE  rF  rG  rH  )r#   r   r|   r\   r   r   r	  r  rR  rP   rS   )r'   r   r  Zyticksr    r    r!   test_log_scales
  s    

rJ  c                  C   sR   t  \} }|jddd |jtd | |   krHdksNn J d S )Nr   )r  r  r1   r1   rq   )	r#   r   r}   rP   r   r   ZMultipleLocatorr~   r   ru  r    r    r!   test_log_scales_no_data	  s    rL  c                  C   s   t  \} }|d tjtdd |dd W d    n1 sF0    Y  |d tjtdd |dd W d    n1 s0    Y  d S )Nr   zAttempt to set non-positiver  ro   rq   )	r#   r   rR  r   r.  r  rn  r	  ro  r&   r    r    r!   test_log_scales_invalid  s    
*
rM  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   rq   r   r   r1   r  r2   r   rq   )r   r  )r+   r<  r  y3r+   r<  r  rO  r  )	r#   r   r\   r   r   	stackplotrn  ro  r   )r'   r+   r<  r  rO  r   r[  r    r    r!   test_stackplot  s    


rQ  Zstackplot_test_baselinec                  C   s   t jd dd } | dd}d|dd d f< tdd\}}|d jtd|jd	d
 |d jtd|jdd
 |d jtd|jdd
 |d jtd|jdd
 d S )Nr   c                 S   s   t || f}t| D ]}tdD ]t}ddt j   }dt j  d }ddt j   }|d d |f  |t t || | | d   7  < q"q|S )Nr   r1   r   r2   r   rq   )r\   r  r   r]   expra   )r  r  r   r   jr+   r,   r  r    r    r!   layers2  s    >z'test_stackplot_baseline.<locals>.layersr   r   rU  r2   rz  zeror  r|  symr1   r   Zwiggler  Zweighted_wiggle)r\   r]   r^   r#   r   rP  r   r  )rT  r  r'   r;  r    r    r!   test_stackplot_baseline.  s    

rX  c                 C   s   | S r   r    )rc  r    r    r!   r  H  r   c                 C   s   t jd tjjt jjddddfi | }t \}}|	ddrR|
d n
|d |	d	d
sxtjd tjd< |j||fi | d S )N  r^  r   )r  r   )meansigmarn  vertTr   patch_artistFr,  boxplot.boxprops.linewidth)r\   r]   r^   r   ZcbookZboxplot_statsZ	lognormalr#   r   getr	  rR  r   Zbxp)stats_kwargstransform_stats
bxp_kwargsZlogstatsr'   r   r    r    r!   _bxp_test_helperG  s    
rc  zbxp_baseline.pngr,  )r  r   c                   C   s
   t   d S r   rc  r    r    r    r!   test_bxp_baselineY  s    re  zbxp_rangewhis.pngc                   C   s   t tddgdd d S )Nr   r   Zwhisr`  rc  r  r    r    r    r!   test_bxp_rangewhis`  s    ri  zbxp_percentilewhis.pngc                   C   s   t tddgdd d S )Nr   _   rf  rg  rh  r    r    r    r!   test_bxp_percentilewhisg  s    rk  zbxp_with_xlabels.pngc                  C   s   dd } t | d d S )Nc                 S   s$   t | tdD ]\}}||d< q| S NABCDr)   rm  r  statsrc  r)   r    r    r!   r   r  s    
z(test_bxp_with_xlabels.<locals>.transform)ra  rd  r   r    r    r!   test_bxp_with_xlabelsn  s    rr  zbxp_horizontal.pngr   )r8  r  r   r   c                   C   s   t tddd d S )NFr\  rb  rh  r    r    r    r!   test_bxp_horizontalz  s    ru  zbxp_with_ylabels.png)r  r   r   c                  C   s   dd } t | tddd d S )Nc                 S   s$   t | tdD ]\}}||d< q| S rl  rn  ro  r    r    r!   r     s    
z(test_bxp_with_ylabels.<locals>.transformFrs  ra  rb  rh  rq  r    r    r!   test_bxp_with_ylabels  s    rw  zbxp_patchartist.png)r8  r  r   c                   C   s   t tddd d S )NT)r]  rt  rh  r    r    r    r!   test_bxp_patchartist  s    rx  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]  boxpropsrt  rh  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  r   rj   mfc)Z
flierpropsrt  rh  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   r|  )	showmeansZ	meanpropsrt  rh  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 )Nr  r  r   r   r   r   )rz  rt  rh  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 )Nr  r  r   r  )Zmedianpropsrt  rh  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 )Nr  r  r   r  )Zcappropsrt  rh  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  r   r  )Zwhiskerpropsrt  rh  r    r    r    r!   test_bxp_customwhisker  s    r  zbxp_withnotch.pngc                   C   s   t tddd d S )NT)Zshownotchesrt  rh  r    r    r    r!   test_bxp_shownotches  s    r  zbxp_nocaps.pngc                   C   s   t tddd d S )NF)Zshowcapsrt  rh  r    r    r    r!   test_bxp_nocaps  s    r  zbxp_nobox.pngc                   C   s   t tddd d S )NF)Zshowboxrt  rh  r    r    r    r!   test_bxp_nobox  s    r  zbxp_no_flier_stats.pngc                  C   s   dd } t | tddd d S )Nc                 S   s   | D ]}| dd  q| S )Nfliers)r5  )rp  rc  r    r    r!   r     s    z*test_bxp_no_flier_stats.<locals>.transformF)Z
showfliersrv  rh  rq  r    r    r!   test_bxp_no_flier_stats  s    r  zbxp_withmean_point.pngc                   C   s   t tdddd d S )NTFr  Zmeanlinert  rh  r    r    r    r!   test_bxp_showmean   s    r  zbxp_withmean_line.pngc                   C   s   t tdddd d S )NTr  rt  rh  r    r    r    r!   test_bxp_showmeanasline  s    r  zbxp_scalarwidth.pngc                   C   s   t tddd d S )Nr  r3  rt  rh  r    r    r    r!   test_bxp_scalarwidth  s    r  zbxp_customwidths.pngc                   C   s   t tg ddd d S )N)r   r  g?g333333?r3  rt  rh  r    r    r    r!   test_bxp_customwidths  s    r  zbxp_custompositions.pngc                   C   s   t tg ddd d S )N)r1   r   rO  r  r)  rt  rh  r    r    r    r!   test_bxp_custompositions   s    r  c                   C   s@   t t" ttdgdd W d    n1 s20    Y  d S )Nr1   r3  rt  r   r   r(  rc  r  r    r    r    r!   test_bxp_bad_widths(  s    r  c                   C   sB   t t$ ttddgdd W d    n1 s40    Y  d S )Nr2   r   r)  rt  r  r    r    r    r!   test_bxp_bad_positions-  s    r  zbxp_custom_capwidths.pngc                   C   s   t tg ddd d S )N)rS  r   r   r   r2  rt  rh  r    r    r    r!   test_bxp_custom_capwidths2  s    r  zbxp_custom_capwidth.pngc                   C   s   t tddd d S )Nr  r2  rt  rh  r    r    r    r!   test_bxp_custom_capwidth9  s    r  c                   C   s@   t t" ttdgdd W d    n1 s20    Y  d S )Nr1   r2  rt  r  r    r    r    r!   test_bxp_bad_capwidths@  s    r  r-  g{Gz?)r   r   c                  C   s   t jd t ddd} t d| dg} t \}}|j| | gddd	 |d
 d| | gi}t \}}|jddd|d |d
 d S )NrY  r  r     r  '  r1   	bootstrapnotchr  r   r+   )r  r  r[  	r\   r]   r^   r   hstackr#   r   r-  ro  )r+   r'   r   r[  r    r    r!   test_boxplotE  s    
r  zboxplot_custom_capwidths.pngc                  C   sF   t ddd} t d| dg} t \}}|j| | gdddgd	 d S )
Nr  r  r  r  r  r1   rU  r   )r  r0  )r\   r   r  r#   r   r-  r  r    r    r!   test_boxplot_custom_capwidthsX  s    r  zboxplot_sym2.pngc                  C   s~   t jd t ddd} t d| dg} tdd\}\}}|j| | gd	d
d |d |j| | gd	dd |d d S )NrY  r  r  r  r  r  r1   r2   r  ^)r  rV  r  r  r  )r+   r'   r   r   r    r    r!   test_boxplot_sym2c  s    
r  zboxplot_sym.pngc                  C   sJ   t ddd} t d| dg} t \}}|j| | gdd |d d S )	Nr  r  r  r  r  r  rV  r  )r\   r   r  r#   r   r-  ro  r  r    r    r!   test_boxplot_syms  s
    r  z$boxplot_autorange_false_whiskers.pngz#boxplot_autorange_true_whiskers.pngc                  C   s   t jd t d} t d| dg} t \}}|j| | gddd |d t \}}|j| | gddd	d
 |d d S )NrY  r  r   r2   r  r1   r  )r  r   T)r  r  Z	autorange)	r\   r]   r^   rv   r  r#   r   r-  ro  )r+   r?  r   r@  r   r    r    r!   test_boxplot_autorange_whiskers  s    

r  c                 C   sZ   t ddd}t d|dg}t| | ||g W d    n1 sL0    Y  | S )Nr  r  r  r  r  )r\   r   r  rM   r
   r-  )r   rc_dictr+   r    r    r!   _rc_test_bxp_helper  s
    ,r  Zboxplot_rc_parameters)r  r8  r   r   c                  C   s   t jd td\} }dddgdddd	ddd
dddd
ddd
ddd
d}dddgdd}ddddddddd
dddd}|||g}t||D ]\}}t|| qtjj	dd |d 
 D v sJ d S )NrY  r   Tr   rj  r  r  r   r  r  r   r  r5   rB  )zboxplot.notchboxplot.whiskerszboxplot.bootstrapzboxplot.flierprops.colorboxplot.flierprops.markerz"boxplot.flierprops.markerfacecolorz"boxplot.flierprops.markeredgecolorzboxplot.flierprops.markersizezboxplot.flierprops.linestylezboxplot.flierprops.linewidthzboxplot.boxprops.colorr^  zboxplot.boxprops.linestylezboxplot.capprops.colorzboxplot.capprops.linewidthzboxplot.capprops.linestylezboxplot.medianprops.colorzboxplot.medianprops.linewidthzboxplot.medianprops.linestyleFr   r   )zboxplot.verticalr  zboxplot.patchartist-.)r  zboxplot.showcapszboxplot.showboxzboxplot.showflierszboxplot.showmeanszboxplot.meanlinezboxplot.meanprops.colorzboxplot.meanprops.linewidthzboxplot.meanprops.linestylezboxplot.whiskerprops.colorzboxplot.whiskerprops.linewidthzboxplot.whiskerprops.linestylec                 S   s   g | ]}t |qS r    )r=  r#  r    r    r!   r     r   z.test_boxplot_rc_parameters.<locals>.<listcomp>r1   )r\   r]   r^   r#   r   rm  r  rM   r   r   get_children)r'   r   Zrc_axis0Zrc_axis1Zrc_axis2	dict_listrA  Zrc_axisr    r    r!   test_boxplot_rc_parameters  sZ    
r  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 )NrY  r  r  r  r  r  r[  r  r\        @r  r   r1   )r  usermediansconf_intervalsr  r  )
r\   r]   r^   r   r  r#   r   r   r-  ro  )r+   r'   r   ZCIsr    r    r!   test_boxplot_with_CIarray  s    r  zboxplot_no_inverted_whisker.pngc                  C   sP   t jg dt jd} t }||  |d |jjddd |j	d d S )N)r   i(#  r  X   i^  i@ ix  i  rF  r   Fminorwhich)
r\   r   r\  r#   r  r-  r	  rS   r  rP   )r+   r   r    r    r!   test_boxplot_no_weird_whisker  s    


r  c                  C   s   t ddd} t d| dg} t \}}tt" |j| ddgd W d    n1 s\0    Y  tt. |j| | gddgddggd W d    n1 s0    Y  d S )	Nr  r  r  r  r  r1   r2   )r  	r\   r   r  r#   r   r   r   r(  r-  r  r    r    r!   test_boxplot_bad_medians  s    0r  c                  C   s   t ddd} t d| dg} t \}}tt( |j| | gddggd W d    n1 sb0    Y  tt, |j| | gddgdggd W d    n1 s0    Y  d S )	Nr  r  r  r  r  r1   r2   )r  r  r  r    r    r!   test_boxplot_bad_ci  s    6r  c                  C   sZ   t d} t \}}|| d d  dks4J |j| ddd d  dksVJ d S )Nrq   boxesr   r2   rt  )r\   ra   r#   r   r-  r  )r+   r  r   r    r    r!   test_boxplot_zorder  s    
r  c                  C   s   dt jd< dt jd< dt jd< t  \} }td}d|d	< |j|d
d}dD ]"}|| D ]}| dksZJ qZqN|d d  dksJ |d d  dksJ d S )Nrc  r  r   r  r  zboxplot.meanprops.markerr   r  ro   T)r  )ZwhiskersZcapsr  Zmediansr   r  r   Zmeans)r#   r   r   r\   ra   r-  
get_marker)r'   r   Z	test_dataZ
bxp_handleZ	bxp_linesZ	each_liner    r    r!   test_boxplot_marker_behavior  s    



r  z&boxplot_mod_artists_after_plotting.pngc                  C   sH   g d} t  \}}|j| dd}|D ]}|| D ]}|d q2q&d S )N)r}  r  r  r  gQ?gQ?gQr   r  r   )r#   r   r-  r  )r+   r'   r   bpkeyr  r    r    r!   &test_boxplot_mod_artist_after_plotting'  s    r  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   rm  r\   r]   r_   r   rv  r    r    r!   r   7  r   z1test_vert_violinplot_baseline.<locals>.<listcomp>r   r   r*  r  showextremashowmediansr  )r*  r  r  r  r[  )r\   r]   r^   r   r#   r  
violinplotr   )r[  r   r'   r    r    r!   test_vert_violinplot_baseline2  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  r  r    r    r!   r   H  r   z2test_vert_violinplot_showmeans.<locals>.<listcomp>r   r1   r   r  r#   r  r\   r]   r^   r   r  r   r[  r    r    r!   test_vert_violinplot_showmeansC  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  r  r    r    r!   r   R  r   z4test_vert_violinplot_showextrema.<locals>.<listcomp>r   r   r1   r  r  r  r    r    r!    test_vert_violinplot_showextremaM  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  r  r    r    r!   r   \  r   z4test_vert_violinplot_showmedians.<locals>.<listcomp>r   r   r1   r  r  r  r    r    r!    test_vert_violinplot_showmediansW  s    r  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  r  r    r    r!   r   f  r   z0test_vert_violinplot_showall.<locals>.<listcomp>r   r1   r   ?r   rx  r   r  rC  r  )r*  r  r  r  	quantilesr  r  r    r    r!   test_vert_violinplot_showalla  s    r  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  r  r    r    r!   r   q  r   z8test_vert_violinplot_custompoints_10.<locals>.<listcomp>r   r   rq   r*  r  r  r  pointsr  r  r    r    r!   $test_vert_violinplot_custompoints_10l  s    r  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  r  r    r    r!   r   {  r   z9test_vert_violinplot_custompoints_200.<locals>.<listcomp>r   r   r  r  r  r  r    r    r!   %test_vert_violinplot_custompoints_200v  s    r  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  r  r    r    r!   r     r   z2test_horiz_violinplot_baseline.<locals>.<listcomp>r   Fr   r*  r\  r  r  r  r  r  r    r    r!   test_horiz_violinplot_baseline  s    r  z violinplot_horiz_showmedians.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )	Nilo/c                 S   s   g | ]}t jjd dqS r  r  r  r    r    r!   r     r   z5test_horiz_violinplot_showmedians.<locals>.<listcomp>r   Fr   r1   r  r  r  r    r    r!   !test_horiz_violinplot_showmedians  s    r  zviolinplot_horiz_showmeans.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )	Ni&c                 S   s   g | ]}t jjd dqS r  r  r  r    r    r!   r     r   z3test_horiz_violinplot_showmeans.<locals>.<listcomp>r   Fr1   r   r  r  r  r    r    r!   test_horiz_violinplot_showmeans  s    r  z violinplot_horiz_showextrema.pngc                  C   sD   t  } tjd dd tdD }| j|tdddddd d S )	Nie!c                 S   s   g | ]}t jjd dqS r  r  r  r    r    r!   r     r   z5test_horiz_violinplot_showextrema.<locals>.<listcomp>r   Fr   r1   r  r  r  r    r    r!   !test_horiz_violinplot_showextrema  s    r  zviolinplot_horiz_showall.pngc                  C   s^   t  } tjd dd tdD }| j|tdddddddgd	d
gddgddggd d S )Ni"c                 S   s   g | ]}t jjd dqS r  r  r  r    r    r!   r     r   z1test_horiz_violinplot_showall.<locals>.<listcomp>r   Fr1   r   r  r   rx  r   r  rC  r  )r*  r\  r  r  r  r  r  r  r    r    r!   test_horiz_violinplot_showall  s    r  z$violinplot_horiz_custompoints_10.pngc               	   C   sF   t  } tjd dd tdD }| j|tddddddd d S )	Ni0c                 S   s   g | ]}t jjd dqS r  r  r  r    r    r!   r     r   z9test_horiz_violinplot_custompoints_10.<locals>.<listcomp>r   Fr   rq   r*  r\  r  r  r  r  r  r  r    r    r!   %test_horiz_violinplot_custompoints_10  s    r  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  r  r    r    r!   r     r   z:test_horiz_violinplot_custompoints_200.<locals>.<listcomp>r   Fr   r  r  r  r  r    r    r!   &test_horiz_violinplot_custompoints_200  s    r  c                  C   sf   t  } tjd dd tdD }tt" | j	|tdd W d    n1 sX0    Y  d S )Ni@ 3c                 S   s   g | ]}t jjd dqS r  r  r  r    r    r!   r     r   z1test_violinplot_bad_positions.<locals>.<listcomp>r   r   r)  
r#   r  r\   r]   r^   r   r   r   r(  r  r  r    r    r!   test_violinplot_bad_positions  s
    r  c                  C   sl   t  } tjd dd tdD }tt( | j	|tdg dd W d    n1 s^0    Y  d S )NiA#c                 S   s   g | ]}t jjd dqS r  r  r  r    r    r!   r     r   z.test_violinplot_bad_widths.<locals>.<listcomp>r   r  )r*  r1  r  r  r    r    r!   test_violinplot_bad_widths  s
    r  c                  C   sl   t  } tjd tjjddg}tt* | j	|ddgddggd W d    n1 s^0    Y  d S )	Nil r   rm  r   r   r   r  r  
r#   r  r\   r]   r^   r_   r   r   r(  r  r  r    r    r!   test_violinplot_bad_quantiles  s
    r  c                  C   s   t  } tjd tjjddg}tt$ | j	|g dgd W d    n1 sX0    Y  tt$ | j	|g dgd W d    n1 s0    Y  d S )Niq4r   rm  )r   r   r   ?r  )gr   r   r]  r  r  r    r    r!   $test_violinplot_outofrange_quantiles  s    2r  c                 C   sV   t jd t jjddg}|  }|j|g dd | }|j|g dgd d S )N+r   rm  )r   r   r  r  )r\   r]   r^   r_   r   r  )r   r   r[  r   r    r    r!   %test_violinplot_single_list_quantiles  s    r  c                 C   s   t jd |jt jjddg dd}|jt jjddtdd}|t jjdd}|  |||g | |j|j|jg d S )	Nr  r  rm  )r  r  r  rO  r   r   r   rM  r  Z	ABCDEFGHIrJ  )	r\   r]   r^   r]  r_   r  r   r  r  )r   r   r.  s1s2Zs3r    r    r!   test_violinplot_pandas_series  s    r  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   rq   r   r  r1   r2   F)r*  Zmanage_ticks)
r#   r   rn  r~   r\   r]   r^   r_   r-  r   )rv  r   Zold_xlimr<  r  Znew_xlimr    r    r!   test_manage_xticks  s    r  c                  C   s   t  \} }|jtjddgd |jtjddgd | j  | dksVJ t	|
 ddgksnJ dd | D dd	gksJ d S )
Nr   r   r)  r   )r  rB  c                 S   s   g | ]}|  qS r    rD  r#  r    r    r!   r      r   z+test_boxplot_not_single.<locals>.<listcomp>r   5)r#   r   r-  r\   r]   r   r<  r   r~   r  
get_xticksr  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   r1   z	font.sizeP   raw)r  format)r#   r|   rM   r   updateioBytesIOsavefigr  r    r    r!   test_tick_space_size_0#  s    r  )errorbar_basicZerrorbar_mixedr  c            
   	   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 |d | |d }	t }| }|jd!d"dd|	d# |	d d S )$Nr   r   r   rF  r   rC  r  z&Simplest errorbars, 0.2 in x, 0.4 in yr2   T)ru  rv  rH  rz  r   r  r   zVert. symmetricZnbinsr|  )r  r   r  zHor. symmetric w/ alpharW  z--or  r  r   zH, V asymmetricr  r   rU  r  )r  r  r   ecolorZcapthickzMixed sym., log yr  zVariable errorbarsr   r+   r,   r  r  r[  )r\   ra   Z
longdoublerR  r  r#   r   r  r  r.   r   locator_paramsr	  maximumro  Zsuptitle)
r+   r,   r  r  r'   r   r;  ZylowerZ
yerr_lowerr[  r    r    r!   test_errorbar,  sD    


$




r  c                  C   s   t  \} }td}d| }|j||d d\}}}|j|d| d d\}}}||d| \}t| tdks|J t| tdksJ t| tdksJ d S )Nrq   r2   rL  r   r  C1C2)	r#   r   r\   ra   r  r|   r)  to_rgba	get_color)r  r   r+   r,   r  rv  r  Zln1r    r    r!   test_errorbar_colorcyclec  s    
r  c              
      s   t ddd  fddtdD }|  }| }t|g dD ]>\}}|j ||d dd	d
d |j ||d dd	|d
d qBd S )Nr   r   r   c                    s   g | ]}t   | qS r    )r\   rR  )r   r  r+   r    r!   r   u  r   z.test_errorbar_cycle_ecolor.<locals>.<listcomp>)r  r  r  r+  r  r  r   r:  )r  r   rj   r  )r  r   rj   r   r  )r\   ra   r   r   rm  r  )r   r   r,   ZaxtZaxryir   r    r	  r!   test_errorbar_cycle_ecolorr  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    n1 s0    Y  t	
t" |j|||dd W d    n1 s0    Y  t	
t$ |j||||dd	 W d    n1 s0    Y  d S )
Nr   r   r   r   r2   r   r  )r  r   r  )r#   r   r  r\   ra   rR  r  vstackr  r   r   r(  r  )r'   r   r+   r,   Zyerr1r  r  r    r    r!   test_errorbar_shape  s    00r  Zerrorbar_limitsc                  C   s\  t ddd} t |  }d}d}d}t \}}|j| ||||dd t | }d|g d	< |j| |d ||||d
d t | }d|g d< |j| |d ||||dd |j| |d dd|||||dd
 d}t | d}d|ddg< |}	|}
t | }t | }d|dg< d|dg< |j| |d dd|||	|
||ddddd |d |	d d S )Nr   rB  r   r   dottedr   )r  r  r  r   T)r1   r   r  r   )r  r  uplimsr  r   )r2   r   r  r   r  )r  r  lolimsr  r   r   r   r  magenta)rj   r  r  r  r  r  r  r   r   r   rO   @r   r   cyan)rj   r  r  r  xlolimsxuplimsr  r  r  r  capsizer   )r   rB  zErrorbar upper and lower limits)
r\   ra   rR  r#   r   r  Z
zeros_likeZ	full_likern  r.   )r+   r,   r  r  r  r'   r   r  r  r  r  r    r    r!   test_errorbar_limits  sH    






r  c                  C   sd   t d} t d}tj| |dddd\}}}|d u s:J |D ] }t | tdks>J q>d S )Nr   r1   r   )r  r  r   r  )r\   ra   r#   r  r|  r  r)  r  )r+   r,   plotlinerv  ZbarlinesZerrbarr    r    r!   test_errorbar_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sLJ | dks\J d S )Nr   r1   Nonerc  rX   z	steps-midroundr  r  Zbevel)
r  r  r  rj   r  r  Zdash_capstyleZdash_joinstyler  r  )r\   ra   r#   r  Zget_fillstyleZget_drawstyle)r+   r,   r  rv  r    r    r!   "test_errorbar_line_specific_kwargs  s    

r  c              	   C   s  |  }|jg dg dddddd |jg dg ddd	d
ddd |jg dg ddddddd |dd tg dg dg dg dd}tjd|d |   }|jg dg ddd |jg dg ddd	d |jg dg dddd |dd d S )N)r2   r   rq   r   r   r  rc  rB  )r+   r,   r  r  rj   r}  r2   r   r   z	tab:greenry  r,   )r+   r,   r  r   r  rj   r}  r   r   rO  ztab:bluer  r   r5   )r+   r,   r  r   r  rj   r}  r1   rJ  )r  ry  r  )rc  rc  r   )rB  r,   r5   )r  r  r  )r  rj   r}  r   r  )Z
prop_cycler+   r,   r  )r+   r,   r  r   )r+   r,   r  r   )r   r  rn  r	   r#   rc)r   r   r   _cycler    r    r!   test_errorbar_with_prop_cycle  s(    r"  c                  C   s8  t ddd} | d|   }|d }t  }tjtdd" |j| ||dd W d    n1 sd0    Y  tjtdd" |j| ||d	d W d    n1 s0    Y  tjtd
d& |j| ||ddgd W d    n1 s0    Y  tjtdd" |j| ||dd W d    n1 s*0    Y  d S )Nr   r1   r   rO  znot a tuple of two integersr  r  )
errorevery)r  r   znot a valid NumPy fancy indexFTznot a recognized valueZfoobar)	r\   r   r#   r   r   r   r   r(  r  )r+   r,   r  r   r    r    r!   test_errorbar_every_invalid  s    004r$  c                  C   sX  t   } tjtdd6 | jdgdgdgdggdgdggd W d    n1 sV0    Y  tjtdd, | jdgdgdgdggd W d    n1 s0    Y  tjtdd, | jdgdgdgdggd	 W d    n1 s0    Y  tjtdd@ td
}dd |D }| j||t	j
ddd	 W d    n1 sJ0    Y  d S )Nz''xerr' must not contain negative valuesr  r   rN  r1   )r+   r,   r  r  )r+   r,   r  z''yerr' must not contain negative valuesr  r   c                 S   s"   g | ]}t  d d|d d qS )r8  r  r2   r1   r  r  r    r    r!   r     r   z/test_xerr_yerr_not_negative.<locals>.<listcomp>r&  r  )r#   r   r   r   r   r(  r  r\   ra   r  r  )r   r+   r,   r    r    r!   test_xerr_yerr_not_negative  s,    D::

r&  c           	   
   C   s6  t ddd}|d|  }|d }| }|  }tdg dD ]p\}}|d7 }|j||||dfd|d	 |j|||d
d |j||d d ||d d ||d d d|dd q@|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 |g dd g 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 d S )Nr   r1   r   rO  Zrgbk)r   r   r2   r  r  r   )r#  r  r5   r  )r5   rt  r   )r  r5   r   r   )r1   r   r   )r  r  r   r  )r  r   r   r2   r   r  )r#  r  r  r5   r   )FTFr   r  )r\   r   r   rm  r  r|   r  )	r   r   r+   r,   r  re   rd   r   shiftr    r    r!   test_errorbar_every  sB    (*
,,
,,r(  
elinewidthr  c                 C   s"   t jg dg dg d| d d S )Nr  )r  r)  )r#   r  )r)  r    r    r!   test_errorbar_linewidth_typeE  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}|||| |  }|ddgddgddg |jdgdgdgdd	 d S )
Nr   r1   r2   r   r   rO  r   r  r   )r   r   r\   r   r  r  )r   r   r   xsysesr    r    r!   test_errorbar_nanL  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 )Nr1   r   r  r   rq   rU  rc  Trw  r+   )re  rx  r[  r\   r   r#   r   r`  )d1d2r'   r   r[  r    r    r!   test_hist_stacked_stepfilledX  s    r3  Zhist_offsetc                  C   sH   t ddd} t ddd}t \}}|j| dd |j|d	d d S )
Nr   rq   rU  r1   r   r  r   ry  r   r0  r1  r2  r'   r   r    r    r!   test_hist_offsetf  s
    r5  zhist_step.pngc                  C   sD   t ddd} t \}}|j| dd |dd |dd	 d S )
Nr1   r   r  rb  rd  r   rq   ro   r   )r\   r   r#   r   r`  ro  rn  r1  r'   r   r    r    r!   test_hist_stepp  s
    r7  zhist_step_horiz.pngc                  C   s@   t ddd} t ddd}t \}}|j| |fddd	 d S )
Nr   rq   rU  r1   r   r  rb  rI   )re  rK   r0  r4  r    r    r!   test_hist_step_horizz  s    r8  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   rq   rU  r1   r   r  rU  r  r(  r   rc  T)weightsre  rx  r0  )r1  r2  Zw1Zw2r'   r   r    r    r!   test_hist_stacked_weighted  s    r:  use_line_collectionzw/ line collectionzw/o line collectionzstem.pngc              
   C   s   t ddt j d}t \}}| rB|j|t |ddddd nLtjt	d	d
. |j|t |dddddd W d    n1 s0    Y  |
  d S )Nr   r2   r   C2-.zk+C1-. )linefmt	markerfmtbasefmtr)   
deprecatedr  F)r?  r@  rA  r)   r;  )r\   r   r   r#   r   stemr  r   r.  r   rA   r;  r+   r'   r   r    r    r!   	test_stem  s    $rE  c                  C   s   dd } t  \}}g d}g d}| ||g d|fd | |||||fd | |j||dd||fd | |||d||fd | |j||dd	d
||fd | |j|ddg d|fd | ||dg d|fd dS )z5Test that stem() correctly identifies x and y values.c                 S   s8   t t| j \}}||d ks$J ||d ks4J d S Nr   r1   )mapr  
markerliner  )stem_containerexpectedr+   r,   r    r    r!   _assert_equal  s    z%test_stem_args.<locals>._assert_equalr1   r   r   r  r  r  r   )rJ  r   r?  zb--)r?  rA  Nr#   r   rC  rK  r'   r   r+   r,   r    r    r!   test_stem_args  s    rQ  c                  C   s  ddd} t  \}}g d}g d}| |||ddd | |j||d	d
dd	d | |j||dd
dd	d | |||ddddd | |||ddddd | |j||dd	d
ddd	d | |j||ddd
dddd | |j||ddd
ddd	d | |j||ddd
dddd | |j||ddd
dddd | |j||dddddd | |j||dd	dddd	d | |j||dddddd	d dS )zATest that stem(..., markerfmt=...) produces the intended markers.Nc                 S   sl   |durt | j |sJ |dur<t | j |s<J |durV| j |ksVJ | j dkshJ dS )zl
        Check that the given StemContainer has the properties listed as
        keyword-arguments.
        Nr  )r)  r  Z	stemlinesr  rH  r  get_linestyle)rI  	linecolormarkercolorrj   r    r    r!   rK    s    z*test_stem_markerfmt.<locals>._assert_equalrL  rM  r  r   )rT  rj   r+   )r@  r  r  )rS  rT  rj   r  Zgxr>  r  r   rN  )r?  r@  )NNNrO  rP  r    r    r!   test_stem_markerfmt  sb      
rU  c                  C   s@   t dd\} }tjdtjdg}ddg}||| d S )Nr1   z2013-9-28 11:00:00z2013-9-28 12:00:00r   r  )r#   r   dateutilparserparserC  )r'   r   r,  r-  r    r    r!   test_stem_dates  s    

rY  zstem_orientation.pngc              
   C   s   t ddt j d}t \}}| rB|j|t |ddddd nLtjt	d	d
. |j|t |dddddd W d    n1 s0    Y  d S )Nr   r2   rU  r<  Zkxr=  rI   )r?  r@  rA  rK   rB  r  F)r?  r@  rA  r;  rK   )
r\   r   r   r#   r   rC  r  r   r.  r   rD  r    r    r!   test_stem_orientation  s    rZ  Zhist_stacked_stepfilled_alphac                  C   sB   t ddd} t ddd}t \}}|j| |fddd	d
 d S )Nr1   r   r  r   rq   rU  rc  Tr   )re  rx  r  r0  r4  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 )
Nr1   r   r  r   rq   rU  rb  Trw  r0  r4  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 )	Nr1   r   r  r   rq   rU  T)rx  r  r0  r4  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 )Nr1   r   r  rq   rc  )rG   re  )r\   r   r#   r   r`  ra   r6  r    r    r!   test_hist_step_bottom/  s    r^  c                  C   s   g d} g d}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 )	Nr   r1   r2   r   r   r   r1   r1   r1   r2   rc  r  re  r   r2   r1   r   r#   r`  r   get_xyr  r[  rv  polygonr]  r    r    r!   test_hist_stepfilled_geometry7  s    *$rf  c               	   C   sn   g d} g d}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`  rb  ra  r   r2   r1   r   rb  rd  r    r    r!   test_hist_step_geometryB  s    4rg  c                  C   s   g d} g d}t j|| g d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`  r1   r2   r   rc  r  rG   re  r   r1   r   r   r2   r  r   rb  rd  r    r    r!   $test_hist_stepfilled_bottom_geometryL  s    *$rj  c               	   C   st   g d} g d}t j|| g d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`  rh  rb  ri  r   r1   r   r   r2   r  r   rb  rd  r    r    r!   test_hist_step_bottom_geometryX  s    4rk  c                  C   s  g d} g d}g d}t j||g| ddd\}}}t|dksDJ |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   Trc  r  rx  re  r2   r   r1   r   r   r#   r`  r  r   rc  r  Zdata_1Zdata_2rv  r   re  r]  r    r    r!   %test_hist_stacked_stepfilled_geometryc  s&    

*$
*$ro  c               	   C   s   g d} g d}g d}t j||g| ddd\}}}t|dksDJ |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   Trb  rl  r2   r   r1   r   r   rm  rn  r    r    r!   test_hist_stacked_step_geometryy  s    

4
4rp  c                  C   s"  g d} g d}g d}t j||g| dg ddd\}}}t|dksJJ |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   Trh  rc  r  rx  rG   re  r2   r   r1   r   r   r  r   r   rO  r  rm  rn  r    r    r!   ,test_hist_stacked_stepfilled_bottom_geometry  s(    

*$
*$rr  c               	   C   s   g d} g d}g d}t j||g| dg ddd\}}}t|dksJJ |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   Trh  rb  rq  r2   r   r1   r   r   r  r   r   rO  r  rm  rn  r    r    r!   &test_hist_stacked_step_bottom_geometry  s     

4
4rs  Zhist_stacked_barc                  C   sn   g dg dg dg dg dg dg} g d}g d}t  \}}|j| d	d
d||d |jdddd d S )N)r   r   r   r   r  @  i  r  r  rF  6  rE  )r     rU  rJ  r   i  )r9  r9  r9  r  r  r     )r  r  r  r  r  r  r   r   r   r   rq   r  )+  rx  rx  r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r  r  r  r  r  r  r  r  ))gXxn?r   rS  )rS  r   g `p?)rS  r   gǟ?)rS  gˢ`?r   )gC?rS  r   )gK?rS  r   )r   rC  z yellowr  r:  rq   rg  mid)r  re  r  r   r)   zupper right)r   r   r1   )r9   Zbbox_to_anchorrv  )r#   r   r`  rA   )r  rz  labelsr'   r   r    r    r!   test_hist_stacked_bar  s    r{  c                  C   sD   t ddg} tjddgddggdd| d |  ddgks@J d S )Nrq   r  r   r1   r2   rg  )re  rG   )r\   r   r#   r`  tolistr  r    r    r!   %test_hist_barstacked_bottom_unchanged  s    r}  c                  C   s,   t  \} }|jg tdtdgdd d S )Nrq   rb  rd  )r#   r   r`  r   r&   r    r    r!   test_hist_emptydata  s    r~  c                  C   s   t  \} }|jddgdd\}}}|d  dks8J |jddgdgd\}}}|d  dksfJ |jddgd d\}}}|d  dksJ |jddgdd\}}}|d  dksJ |jddgdd\}}}|d  dksJ d S )Nr   r1   r  r  rT  Z00)r#   r   r`  rQ   )r'   r   rv  rY  r    r    r!   test_hist_labels  s    r  Ztransparent_markersc                  C   s:   t jd t jd} t \}}|j| dddd d S )Nr   rU  r  r   r   )r}  rp   r\   r]   r^   r#   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
}t|D ]~\}}t|D ]l\}}	t|D ]Z\}
}|| j|d |
d df||	|d| || j|d |
d df|	|d| q\qLq<|D ]}|g d qd S )Nr2   r  r  r  r   )r   r   r1   r   r   r   r  )r  r  r1   r   )r}  r  r  r   r+   )r  r  )ro   r   r   r   )r#   r   r  r9  r|   rA  )r'   r;  ZrcolorsZbcolorsalphaskwr   r  rS  ZrcolorrB  Zbcolorr   r    r    r!   test_rgba_markers  s     .r  Zmollweide_gridc                  C   s    t  } | jdd}|  d S )N	mollweider  )r#   r   r   r  r&   r    r    r!   test_mollweide_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  r  r  r   rw  r   )r#   r   r   r\   r   r   r  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  r  r   r1     r   )r#   r   r   r\   r   r  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g dg dddd |j| d	 dg dg dddd
d |j| d dg dg ddddd |j| d dg dg dddd |j| d dg dg dddd d S )Nr   rU  z-Dr  r  r  rq   )r   r}  rp   r   r2   r1   )r   r}  rp   r   r  r   r   rO  r  r  r  r    r    r!   r  3  s(    	eventplotc                  C   sT  t jd t jddg } t jddg }| | }t|}g dgt|  }g dg dg dg d	g d
g dg}|| }dt dt| d  }g d}| | }	dgt|  }
g d}|
| }t }| }|j	|||	|d}t|}||ksJ |||	|d}t }| }|j	dddd|d}t|}||ksPJ d S )Nr   rg   r  rO  )r   r1   r  r  r   rh  )r1   r]  r   )r1   r   r1   )r   r1   r1   rg  gQ?)irW  r1   r   rO  rq   )r   r2   r1   r1   r   r   )rz  lineoffsetslinelengths)r   r5   lor  r   r5   r  r  )rz  r  r  r[  )
r\   r]   r^   r|  r  ra   r#   r   r   r  )r  data2r[  Znum_datasetsZcolors1Zcolors2rz  Zlineoffsets1Zlineoffsets2r  Zlinelengths1Zlinelengths2r  r'   axobjZcollsZnum_collectionsr    r    r!   test_eventplotQ  sF    

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   rg   r  rO  N)r\   r]   r^   r|  r#   r   r   r  )r  r  r[  r'   r  r    r    r!   test_eventplot_defaults}  s    r  rz  ))r  )z
tab:orangeztab:pinkztab:cyanZbLacK)r  r   N)r1   r   r1   r   c                 C   s   dgdgdgdgg}dd | D }t |dkr6|d }tt|t |df}t \}}t | dkrp| d } |j|| d}t||D ]\}}t	|
 | qd	S )
zBTest the *colors* parameter of eventplot. Inspired by issue #8193.r   r1   r2   r   c                 S   s   g | ]}|d ur|ndqS )Nr  r    r   r5   r    r    r!   r     r   z)test_eventplot_colors.<locals>.<listcomp>r   rz  N)r  r\   Zbroadcast_tor)  Zto_rgba_arrayr#   r   r  rm  r   r  )rz  r[  rJ  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sJ t	dd | D sJ 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   r  rq   r  r  r5   r  r2   r1   r   Zdasheddashdotr  )rz  r   r-  r   r  r   r   c                 s   s   | ]}t |jtV  qd S r   )
issubclasscategoryr   )r   Zwir    r    r!   r{    s   z0test_eventplot_problem_kwargs.<locals>.<genexpr>N)
r\   r]   r^   r|  r#   r   r   r  r  r|  )Zrecwarnr  r  r[  r'   r  r    r    r!   test_eventplot_problem_kwargs  s$    r  c                  C   s.   t dd\} }|jg gdgd t   d S )Nr1   )rS  rS  rS  rS  r  r#   r   r  r   r&   r    r    r!   test_empty_eventplot  s    r  r[  rK   )NverticalrI   c                 C   sB   |du ri nd|i}t dd\}}|j| fi | t   dS )z#Introduced when fixing issue #6412.NrK   r1   r  )r[  rK   optsr'   r   r    r    r!   test_eventplot_orientation  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 )	Nr8  r1   r2   r   r   rs  r   )r  )r  r   r  )r   r   Zts_1Zts_2r   r    r    r!   test_eventplot_units_list  s    r  zmarker_styles.pngc               	   C   s   t  \} }ttjjjdd d}|d dg|}t|D ]J\}}|j|d d t	
dd  t	dd | d|d|d  |d	 q>d S )
Nc                 S   s   t t| t |  S r   )r  r=  r	  r    r    r!   r    r   z$test_marker_styles.<locals>.<lambda>)r  r   r2   r   rq   r   )r   rj   rp   r)   )r#   r   sortedrM   markersr  r  r9  r|   r\   ra   rv   )r'   r   r  r,   rj   r    r    r!   test_marker_styles  s    


.r  zrc_markerfill.pngc                  C   sP   t  \} }td}tg dD ](\}\}}|tjd< |j|| |d q"d S )Nr  ))r7   rc  )rG   r   )r   r  zmarkers.fillstyler  )r#   r   r\   ra   r9  rM   r   r|   )r'   r   r+   idxr   rj   r    r    r!   test_markers_fillstyle_rcparams  s    

r  zvertex_markers.pngc                  C   sr   t td} d}g d}t \}}|j| d|dd |j| d d d d|dd |ddg |ddg d S )Nrq   ))ro   ro   r  r  r  r   rB  r|  ro   r  )r  r   r#   r   r|   rn  ro  )r[  Zmarker_as_tupleZmarker_as_listr'   r   r    r    r!   test_vertex_markers  s    r  Zvline_hline_zorderZerrorbar_zorderx86_64c                  C   s  t td} t }| }|j| ddd |jddddd |jddddd |jdd	ddd |jd
dddd |d t }| }t td} t	
d}t td}|j| ||dddd tdD ]*}|j|dd|d |j| dd|d q|d d S )Nrq   r   )r   rt  r1   r  )r   r   rt  r   r  r  r2   rB  r   zaxvline and axhline zorder testr  )r  rt  r   r   )r   r   rt  zerrorbar zorder test)r  r   r#   r   r  r|   rc   axvliner.   r\   r  r  )r+   r'   r   r,   r  rS  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)r   rq   )rV  r1   r  r   r  z.-)r1   rV  )rq   rU  rB  rL  r1   rq   rV  rU  )r   r}   rJ  axliner   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 )Nr  r  rz  r  rW  r  r  )r   r   r1   r   r  )gffffffrN  r   r+  )sloper   )r1   rN  rN  ZC4)rN  r1   infr  ro   r1   r   )r   r}   r  rI  r|   rc   r  r   r    r    r!   test_axline5  s     r  c                 C   s   |   }|jddd |jdd|jd |jddd|jd |jd	d
d|jd |jddd|jd |  }|jddd |ddgddg |jd
dgdd
gdd |jddgd
d
gdd |jd
d
gddgdd d S )Nr  r  rz  r1   r  r   r  r  r  r   r   r   r   r   r  )r   r   )r   r1   r+  )r   r   ro   r  )r   r}   r  r   r|   r   r    r    r!   test_axline_transaxesL  s    r  c                 C   s   |   }|jddd |jdd|jd |jddd|jd	 |jdd
d|jd	 |jddd | dd |  }|jddd |dd |d
dgd
dg |jd
dgd
dgdd |jd
dgddgdd d S )Nr  r  rz  r1   r  r  r2   r  r  r   r  )r   r   rN  r   r   rq   r  )r   r}   r  r   set_size_inchesr|   r   r    r    r!   test_axline_transaxes_panzoom]  s    r  c                  C   sV  t  \} }tt |d W d   n1 s60    Y  tt  |jdddd W d   n1 sp0    Y  |d tt |jddd W d   n1 s0    Y  |d |d tt |jddd W d   n1 s0    Y  |d tt$ |dd t 	  W d   n1 sH0    Y  dS )z3Exactly one of *xy2* and *slope* must be specified.rz  Nr  r1   )r  r   rQ  )
r#   r   r   r   r   r  rR  r	  r(  r   r&   r    r    r!   test_axline_argsq  s     (.
,

,
r  )Zvlines_basicZvlines_with_nanZvlines_maskedc                  C   s  g d} g d}t  \}}|j| d|ddd g d}dd	d
dtjdg}t jd
dd\}\}}}	|j|d|ddd g d}
tjdd	d
ddg}|j|
d|dd
dd g d}tjdd	d
dtjg}|	j|d|ddd ||||	fD ]}|dd q| | ks
J | | ks J | |	 ks6J t  \}}tjg dd}tjg dd}tjg dd}|j|||ddd |dd d S N)r2   r   r   r   r  )r2   r   r  r2   r   r  r   rz  r   )r2   r   r   r   rO  r  r2   r  r   r  )r   r  )ru  r  r  r  )rz  r   r   rB  rq   )r2   r   rO  r  rq   rg  )r   r1   ro   r   r2   r1   )r  r  r   rs     rH  rH  r   )	r#   r   rb   r\   r  rn  r   r   masked_equal)r7  r<  r?  r   r  r  r@  r   r   r  x3rO  x4y4r   fig3ax5Zx5Zymin5Zymax5r    r    r!   test_vlines  s2    r  c                  C   sb   t  \} }tddi4 |ddd}tj| ds@J W d    n1 sT0    Y  d S Nzlines.colorr  r   r   r1   )r#   r   r   r
   rb   rz  r  r  r'   r   r  r    r    r!   test_vlines_default  s    r  )Zhlines_basicZhlines_with_nanZhlines_maskedc                  C   s  g d} g d}t  \}}|j| d|ddd g d}dd	d
dtjdg}t jd
dd\}\}}}	|j|d|ddd g d}
tjdd	d
ddg}|j|
d|dd
dd g d}tjdd	d
dtjg}|	j|d|ddd ||||	fD ]}|dd q| | ks
J | | ks J | |	 ks6J t  \}}tjg dd}tjg dd}tjg dd}|j|||ddd |dd d S r  )	r#   r   hlinesr\   r  ro  r~   r   r  )r<  r7  r?  r   r  r  r@  r   r   r  rO  r  r  r  r   r  r  Zy5Zxmin5Zxmax5r    r    r!   test_hlines  s2    r  c                  C   sb   t  \} }tddi4 |ddd}tj| ds@J W d    n1 sT0    Y  d S r  )r#   r   r   r
   r  rz  r  r  r  r    r    r!   test_hlines_default  s    r  r   r  r   c                 C   s   g d}|  dddj|dd|dd |  dddj|dd|dd g d}g d}| dddj|dd|dd | dddj|dd|dd d S )	N)r  r   r   rX  rC  r2   r1   r   r   r  )r1   r2   r   r   )r  r   r   rC  )r   rb   r  )r   r   r[  Ztest_colorsZ	expect_xyZexpect_colorr    r    r!   test_lines_with_colors  s    r  Zstep_linestylec               	   C   sN  t d } }tdd\}}| }g d}t||D ]h\}}|j| |d|dd |j| |d d|dd |j| |d d|d	d |d
dg |d
dg q8| ||d |d d}tdd\}}| }g d}t||D ]f\}}|jddd|d|d |jddd|d|d |jddd|d	|d |d
dg |d
dg qd S )Nrq   r2   )r  r  r  ry  r   pre)r   r   r=  r1   ry  r  ro   r  )r  Y0Y1Y2r  r  )r   r   r=  r[  r  r  )	r\   ra   r#   r   r  rm  rb  rn  ro  )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 |	g dg dg |j
d || || |dd |dd d S )N)r  r  r   r   r   )radiusr   r   T)Zmatch_originalr   rI  r1   r   r  ii)r   r   r   r   )r   r   r   r   r  rs  )r#   r   rx  Circler   r  ZPatchCollectionZset_offsetsZset_linewidthsZset_edgecolorsr   r  r.  rn  ro  )r'   r   r5   r  r  r    r    r!   test_mixed_collection  s    

r  c                  C   s:   t tdtdd} |   |   dks6J d S )Nr   r1   )r   r1   r   r   )r#   r  r\   int32int64r   Zget_subplotspecZget_geometryr  r    r    r!   test_subplot_key_hash-  s    r  )zspecgram_freqs.pngzspecgram_freqs_linear.pngzspecgram_noise.pngzspecgram_noise_linear.pnggQ?)r8  r   r   c                  C   s  dt jd< d} d}|d |d |d g|d |d	 |d
 gg}td| t| }td| d| }ttdtj tj	
|| jdd}td| d }tjd ttj| tj| g}g d}||f||ffD ]\}	}
|
d }tdtt|
 }tt d|D ] \}}|j|	|
||||d q tt d|D ]*\}}|j|	|
||||dt j d qVqdS )z)Test axes.specgram in default (psd) mode.rl   r  r  r  r   r   rJ  @ffffff@'@rq   r   r1   r2   r  r>  onesidedtwosidedr   )NFFTFsnoverlappad_tosidesrQ  )r  r  r  r  r  r   r'  N)rM   r   intr\   ri  ra   r_  r   r   multiplyouterr  r]   r^   r  r   ceillog2rm  r#   r   r   specgramrz  LogNorm)r  r  fstims
NFFT_freqsr+   y_freqs
NFFT_noisey_noise	all_sidesr,   r  r  r  r   r  r    r    r!   test_specgram3  s2    
,$

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}g d}	||f||ffD ]\}}
|
d }tdtt|
 }tt d|	D ]"\}}|j||
||||dd q4tt d|	D ],\}}|j||
||||ddt j d	 qlqdS )z%Test axes.specgram in magnitude mode.rl   r  r  r  r   r   rJ  r  r  r  r   r   r1   r2   r  Nro   rq   r  r   Z	magnituder  r  r  r  r  rY   rQ  )r  r  r  r  r  rY   r   r'  )rM   r   r  r\   ri  ra   r   r   r  r  r  r  r]   r^   r_  r  r   r  r  rm  r#   r   r   r  rz  r  )r  r  r  r  r+   r,   r  r  r  r  r  r  r  r   r  r    r    r!   test_specgram_magnitudeW  s2    
,&


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}g d}	||f||ffD ]\}}
|
d }tdtt|
 }dD ]}tt d|	D ]h\}}|j||
|||||d tt* |j||
|||||dd W d   n1 s0    Y  q<q$qdS )z,Test axes.specgram in angle and phase modes.rl   r  r  r  r   r   rJ  r  r  r  rq   r   r1   r2   r  Nro   r  )r  Zphaser   r  dB)r  r  r  r  r  rY   r   )rM   r   r  r\   ri  ra   r   r   r  r  r  r  r]   r^   r_  r  r   r  r  rm  r#   r   r   r  r   r   r(  )r  r  r  r  r+   r,   r  r  r  r  r  r  r  rY   r   r  r    r    r!   test_specgram_angle|  s4    
,&
r  c                  C   sF   t jtdddd\} }}}| \}}}}|dkr>|dksBJ dS )z;Test axes.specgram when Fs is None, should not throw error.r  NrQ  )r  r   rg   `   )r#   r  r\   rv   Z
get_extent)specfreqsrb  r>  rZ   r[   Zfreq0Zfreq1r    r    r!   test_specgram_fs_none  s    r  c                 C   sH   t d}t |}dtjd< | | dtjd< |  | dS )zCTest specgram ignores image.origin rcParam and uses origin 'upper'.r  upperzimage.originri   N)r\   ra   r   r#   r   r   r  )r   r   rb  signalr    r    r!   test_specgram_origin_rcparam  s    



r  c                  C   sP   t d} t | }tt tj|dd W d   n1 sB0    Y  dS )z4Ensure passing origin as a kwarg raises a TypeError.r  ri   rM  N)r\   ra   r   r   r   r   r#   r  )rb  r  r    r    r!   test_specgram_origin_kwarg  s    

r  )zpsd_freqs.pngzcsd_freqs.pngzpsd_noise.pngzcsd_noise.pnggMb`?c               	   C   s  d} d}|d |d |d g|d |d |d gg}t d	| t| }td
| d| }tdtj tj|| jdd}t d	| d }tj	
d
 tj	| tj	| g}ddiddddddg}||f||ffD ]\}	}
|
d }t dtt|
 }tt d|D ]X\}}|jt|	f|
|||d|}t|d|dd ksdJ |jddd qtt d|D ]P\}}|j|	|
|||d|}t|d|dd ksJ |jddd qqd S )Nr        Y@r   r   rJ  r  r  r  r  r   r1   r2   r  r  r>  r  F)r  return_liner  Tr   )r  r  r  r  r  r   ZxlabelZylabel)r  r\   ri  ra   r   r   r  r  r  r]   r^   r  r   r  r  rm  r#   r   r   psdr_  r  r_  r}   csd)r  r  r  r  r+   Zys_freqsr  Zys_noiseZ
all_kwargsr-  r  r  r  r   rq  retr    r    r!   test_psd_csd  s@    ,&
r  )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 }g d}||d}	||fD ]2}
tt d|D ]2\}}|j|
fd|i|	\}}}|jddd qtt d|D ]<\}}|j|
fd|i|	ddi\}}}|jddd q8tt d|D ]4\}}|j|
fd|i|	\}}}|jddd qtt d|D ]4\}}|j|
fd|i|	\}}}|jddd qqd S )Nr  r  r   r   rJ  r  r2   r   r1   rq   r   r  r   r  )r  r  r  r   r  r   r  )r  ri  r\   r  r  ra   r   r   r  r  r]   r^   r  r  r   rm  r#   r   r   Zmagnitude_spectrumr}   Zangle_spectrumZphase_spectrum)r  r  Zfstims1r  r  r+   r  r  r  rq  r,   r   r  r  r  rd  r    r    r!   test_spectrum  s8    *"
r  c                  C   s   t  d} | D ]}|jjdd qtjdd@ | d td | d 	tdtd W d    n1 sx0    Y  d S )	Nr2   T)r  r  r  r   r   r1   )
r#   r   r   rS   r}   r\   r  r   r  r  r;  r   r    r    r!   test_psd_csd_edge_cases  s    r  c                 C   sH   |   }| }| }|  |  |  }|j  |j  d S r   )r   r   r   r  rP   Ztick_bottomrS   Z	tick_left)r   r   rd   Zax_twinxZax_twinyre   r    r    r!   test_twin_remove  s    
r  ztwin_spines.pngc            	      C   s|  dd } t jdd}|jdd | }| }| }|jjd | | |jjd |	g d	g d	d
\}|	g d	g dd\}|	g d	g d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   r   spinesr  r    r    r!   make_patch_spines_invisible,  s    
z5test_twin_spines.<locals>.make_patch_spines_invisible)r   r   rA  r]  )r;   )r  r9  Tr   zb-)r   r   r2   zr-)rU  r   r   zg-r   r2   r   r1   A   r   )rn  rh  r,   )rA  rz  rA  r+   )r#   r   r  r   r   r  r;   set_positionr   r|   rn  ro  rS   r)   r  r  r  tick_params)	r	  r'   hostZpar1Zpar2r  r  Zp3Ztkwr    r    r!   test_twin_spines)  s0    r  ztwin_spines_on_top.pngc                  C   s@  dt jd< dt jd< t } | ddd}tg dg dg}| }|j|d |d d d	d
 |j	|d |d d d	dd |j|d |d d dd
 |j	|d |d d ddd |d |d d d}t } | ddd}| }|jddd	|d |j	ddd	d|d |jddd|d |j	dddd|d d S )Ng      H@r   r,  r1   )r  iL  i  i  )ru  i-  r  r  r   g     @@z#BEAED4r  rx  )r   r  z#7FC97Fr   )r   rS  r   rS  )r   r[  )r   r  r[  )
rM   r   r#   r   r   r\   r   r   r|   r  )r'   r   r[  r   r    r    r!   test_twin_spines_on_topV  s(    


r  z(grid_which, major_visible, minor_visible))ru   TT)majorTF)r  FTc                    sh   t jd| d t \}}|j  t fdd|jj	D sFJ tfdd|jj
D sdJ d S )NT)r  zaxes.grid.whichc                 3   s   | ]}|j   kV  qd S r   gridliner   r   tick)major_visibler    r!   r{  ~  s   z*test_rcparam_grid_minor.<locals>.<genexpr>c                 3   s   | ]}|j   kV  qd S r   r  r  )minor_visibler    r!   r{    s   )r   r   r  r#   r   r<  r   r|  rP   
majorTicks
minorTicks)Z
grid_whichr  r  r'   r   r    )r  r  r!   test_rcparam_grid_minoru  s    
r  c                  C   s   t  \} }|  | j  |jjd j s4J |jdd | j  |jjd j r`J |jdd | j  |jjd j sJ |  | j  |jjd j rJ d S )Nr   FvisibleT)	r#   r   r  r<  r   rP   r  r  r   r&   r    r    r!   	test_grid  s    



r  c                  C   s   t  \} }|jdddd |jjd j r2J |jdd |jjd j sTJ t ddi> |	  |jdddd |jjd j sJ W d    n1 s0    Y  d S )	NTr  rq   )resetr  	labelsizer   r  r  r  )
r#   r   r  rP   r  r  r   r  r
   r*  r&   r    r    r!   test_reset_grid  s    r  c                 C   sn   || fD ]@}|  }|d |jdddddddd	d
dddd |  q| jD ]}|j  |j  qPd S )NTinrq   r   r  rg  r  r  r  r  rx  r   r  )	directionlengthrh  r   padr  
labelcolorlabelrotation
grid_color
grid_alphagrid_linewidthgrid_linestyle)r   r  r  draw_without_renderingr  rP   Zreset_ticksrS   )r   r   r'   r   r    r    r!   test_reset_ticks  s    




r+  c                  C   s:   t  } |  }|d |g d t| d d S )Nr   )rY  r   r   r   )rY  r   )r#   r   r  r  r|   r   r   r&   r    r    r!   test_vline_limit  s
    
r,  zfv, fh, args)r1   r  c                 C   s  t jd}tjtdd  | ||dd W d    n1 s@0    Y  tjtdd  | |d|d W d    n1 s~0    Y  tjtdd  |||dd W d    n1 s0    Y  tjtdd  ||d|d W d    n1 s0    Y  d S )	Nr1   z"ymin must be a single scalar valuer  )yminymaxz"ymax must be a single scalar valuez"xmin must be a single scalar value)rZ   r[   z"xmax must be a single scalar value)rM   rI  Znum2dater   r   r(  )ZfvfhargsZbad_limr    r    r!   test_axline_minmax  s    ...r1  c                  C   s   t jddddd\} }|d g dg d |d  \}}|d  \}}|dksZJ |dksfJ |dksrJ |d	ks~J d S )
Nr1   r2   T)ru  rv  rH  r  r   r  )r2   r   rO  r   rO  )r#   r   r|   r~   r   )r'   r;  r  r7  r  r<  r    r    r!   test_empty_shared_subplots  s    r2  c                  C   s   dD ]} t jddd\}}|d jd| dd |d  dksBJ |d  | ksVJ t jddd\}}|d jd| d |d  d	ksJ qd S )
Nboxdatalimr2   T)ru  rH  r   )
adjustablesharer1   r6  r  )r#   r   
set_aspect
get_aspectZget_adjustable)r6  r'   r;  r    r    r!   test_shared_with_aspect_1  s    r;  c                  C   s   t jdddd\} }|d jddd |d ddgddg |d ddgddg t   |d  |d  kszJ |d  |d  ksJ d S )	Nr2   T)ru  rH  r  r   )r7  r1   r   r   )r#   r   r9  r|   r   r~   r   ri  r    r    r!   test_shared_with_aspect_2  s    r<  c            	      C   s  dD ]} t jddd\}}|d jd| d |d jd| d |d ddgd	d
g |d d	d
gddg t   |d  |d  ksJ |d  |d  ksJ |jj|jj	 }|D ]P}|
 }|j|j	 }|jj|jj	 }|| | }t|d
t| d
ksJ qqd S )Nr3  r2   T)ru  r  r   r8  r1   r   r   r   )r#   r   r9  r|   r   r~   r   Zbbox_inchesr  rh  get_positionviewLimr  r:  )	r6  r'   r;  Z
fig_aspectr   r   
box_aspectZ
lim_aspectrJ  r    r    r!   test_shared_with_aspect_3  s     
r@  c                  C   s^   t jddddd\} }|d d tjtdd |   W d    n1 sP0    Y  d S )	Nr1   r2   TrH  r  r   r  zset_aspect\(..., adjustable=r  )r#   r   rA  r   r   RuntimeErrorr*  )r'   r  r    r    r!   test_shared_aspect_error  s    rC  zerr, args, kwargs, matchr   z;axis\(\) takes 0 or 1 positional arguments but 2 were given)r{  z4Unrecognized string 'foo' to axis; try 'on' or 'off'zthe first argument to axis*r{  z1axis\(\) got an unexpected keyword argument 'foo'c                 C   sB   t j| |d  tj|i | W d    n1 s40    Y  d S Nr  )r   r   r#   rA  )errr0  rq  r  r    r    r!   test_axis_errors  s    rF  c                  C   s  t  } tjtdd | d W d    n1 s60    Y  tjtdd | d W d    n1 sn0    Y  tjtdd | jddd W d    n1 s0    Y  tjtdd | 	d W d    n1 s0    Y  tjtdd | j
d	d
 W d    n1 s0    Y  tjtdd  | jddd	d W d    n1 s^0    Y  tjtdd  | jddd	d W d    n1 s0    Y  tjtdd | jdd	d W d    n1 s0    Y  tjtdd | jdd	d W d    n1 s0    Y  tjtdd | jdd	d W d    n1 sX0    Y  tjtdd | jdd	d W d    n1 s0    Y  d S )Nzunknown value for which: 'foo'r  r{  z!Cannot supply both positional andr  r  zargument must be amongzscilimits must be a sequencer1   )Z	scilimitszSpecifying 'loc' is disallowedrH   )r9   r+   r7   )r9   r,   zCannot pass both 'left'r   )rH   rZ   zCannot pass both 'right')r;   r[   zCannot pass both 'bottom')rG   r-  zCannot pass both 'top')r7   r.  )r#   r  r   r   r(  Zget_xaxis_transformZget_yaxis_transformr   Zset_prop_cycleZ
set_anchorZticklabel_formatr$   r%   rn  ro  r  r    r    r!   test_axis_method_errors  s.    ((,(,00...rG  c                 C   sH   t  \}}t|d|  }|d |d t|jj|jj d S )Nztwin{}r   r2   )r#   r   r   r  r9  r   bboxextents)r   r'   r   r   r    r    r!   test_twin_with_aspect8  s    

rJ  c                  C   s   d} d}d}d}t j }| }|| | | | ks>J | |ksNJ |||\}| |kslJ | |ks|J |d | |ksJ | |ksJ |jdd |	  | | ksJ | |ksJ d S )N)rS  r  )      $rW  )rK  r  FT)Zvisible_only)
rM   r   r   r   r|   r~   r   r   Zrelimr   )r7  r<  r  r  r'   r   rd  r    r    r!   test_relim_visible_onlyC  s&    

rL  c                  C   s,   t  } |  }|jdd |jdd dS )z
    tests for issue #1172
    Zlarge)r  outr!  N)r#   r   r  r  r&   r    r    r!   test_text_labelsize\  s    rO  zpie_default.pngc               	   C   sD   d} g d}g d}d}t jdd\}}|j||| |ddd	d
 d S )NFrogsZHogsDogsLogsr   r   r  rq   ZyellowgreenZgoldZlightskyblueZ
lightcoralr   r   r   r   )r  rO  rA  %1.1f%%Tr  )exploderz  rz  autopctshadow
startangle)r#   r   pie)rz  sizesrz  rX  r?  r   r    r    r!   test_pie_defaultf  s    r^  )pie_linewidth_0r_  r_  )r   r   c                  C   s   d} g d}g d}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 )NrP  rT  rU  rV  rW  Tr  r   r   rX  rz  rz  rY  rZ  r[  
wedgepropsr  )lrc  r5   exrc  rc  rb  r5   )rX  rz  rz  rY  rZ  r[  ra  r[  )r#   r\  rA  r   r  )rz  r]  rz  rX  r[  r'   r   r    r    r!   test_pie_linewidth_0r  s.    

rd  zpie_center_radius.pngc                  C   sl   d} g d}g d}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 )NrP  rT  rU  rV  rW  Tr  r   r   r   r   )	rX  rz  rz  rY  rZ  r[  ra  rO   r  zCenter point)r1   r  ->Zarc3)
arrowstyleZconnectionstylesquareZ	lightgrey)Zboxstyler   )r]  r_  r~  rH  r  )r#   r\  ra  r  rA  rz  r]  rz  rX  r    r    r!   test_pie_center_radius  s    


ri  zpie_linewidth_2.pngc               
   C   sD   d} g d}g d}d}t j||| |ddddd	id
 t d d S )NrP  rT  rU  rV  rW  Tr  r   r2   r`  r  r#   r\  rA  rh  r    r    r!   test_pie_linewidth_2  s    rk  zpie_ccw_true.pngc               
   C   s@   d} g d}g d}d}t j||| |ddddd t d	 d S )
NrP  rT  rU  rV  rW  Tr  )rX  rz  rz  rY  rZ  r[  Zcounterclockr  rj  rh  r    r    r!   test_pie_ccw_true  s    rl  zpie_frame_grid.pngc                  C   s   d} g d}g d}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 )NrP  rT  rU  rV  rW  Tr  r   r   r  )	rX  rz  rz  rY  rZ  r[  ra  framerO   ro   )r   r2   )r   r   r  rj  rh  r    r    r!   test_pie_frame_grid  s(    rn  zpie_rotatelabels_true.pngc               
   C   s@   d} g d}g d}d}t j||| |ddddd t d	 d S )
N)ZHogwartsrQ  rR  rS  rT  rU  rV  rW  Tr  )rX  rz  rz  rY  rZ  r[  rotatelabelsr  rj  rh  r    r    r!   test_pie_rotatelabels_true  s    rp  zpie_no_label.pngc                  C   sV   d} g d}g d}d}t j||| |dddd dd	 t d	 t d
d t   d S )NrP  rT  rU  rV  rW  Tr  )rX  rz  rz  rY  rZ  r[  Zlabeldistancero  r  g333333r9  )r#   r\  rA  rt   rA   rh  r    r    r!   test_pie_nolabel_but_legend  s    
rq  c                  C   s   g d} g d}t ddddddd	}t j| |d
|d\}}}||fD ]}|D ]|}| |d kshJ | |d ks|J | |d ksJ | |d ksJ | |d ksJ |	 |d ksPJ qPqHd S )N)rv  "   r  )zLong name 1zLong name 2zLong name 3rO   r7   r  anchorrg  r  )horizontalalignmentverticalalignmentr  rotation_modern  r   %.2f)rz  rY  	textpropsrt  ru  r  rv  rn  r   )
r  r#   r  r\  get_haget_vaget_rotationZget_rotation_modeget_sizer  )r[  rz  rx  rv  textsrY  Ztxr    r    r!   test_pie_textprops  s&    r~  c                  C   sP   t  \} }tt& |jg dg dd W d    n1 sB0    Y  d S )N)r   r   rW  )r   r   r   )rX  )r#   r   r   r   r(  r\  r&   r    r    r!   test_pie_get_negative_values  s    r  c                  C   sp   t  \} }g d}|j|dd}t|d d jd dk s@J |j|dd}t|d d jd dkslJ d S )	N)r   r   r   T)r+   	normalizer   ro   g     v@rV  F)r#   r   r\  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 	g ddd	g   |d 
g d
dd	g   |d |d   |d |d   |d 	|d   |d 
|d   d S )Nr2   r_   zset_x/yticklabelsr   rq   r1   r   r  r5   r  rO  r   )Z11Z12Z13Z14)r#   r   r|   r\   ra   r.   
set_xticksr   
set_yticksset_xticklabelsset_yticklabelsr  
get_yticksr  get_yticklabels)r'   r   r>   r    r    r!   test_set_get_ticklabels#  s    r  c                 C   s   |  }|g d |jg ddd |g d |jddgdd	 |jd
dgdd	 |   }|jg dg ddd |g d |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)

    )r1   r2   r   rO  r  bold)Z
fontweightrL  r2   r   T)r  rV  rW  N)r   r  r  r  r  r   r    r    r!   test_set_ticks_with_labels=  s    	r  c                  C   sT   t jtdd2 td\} }|d ddgd W d    n1 sF0    Y  d S )Nzmust be a sequencer  r2   r1   r  g@)r   r   r   r#   r   r  r&   r    r    r!   test_set_noniterable_ticklabelsS  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 }|g d	ksJ d S )
Nrq   r   r   r  c                 S   s   g | ]}|qS r    r    r  r    r    r!   r   b  r   z.test_subsampled_ticklabels.<locals>.<listcomp>Z
bcdefghijkc                 S   s   g | ]}|  qS r    r  r#  r    r    r!   r   d  r   )r  r  r  r  rS  )r#   r   r|   r\   ra   rP   	set_ticksr  set_ticklabelsr   get_ticklabels)r'   r   rz  r    r    r!   test_subsampled_ticklabels\  s    r  c                  C   sj   t  \} }|td |jddg tt	  |j
g d W d    n1 s\0    Y  d S )Nrq   r   r  rU  )r#   r   r|   r\   ra   rP   r  r   r   r(  r  r&   r    r    r!   test_mismatched_ticklabelsh  s
    r  c                  C   s<   t  \} }|ddgddg |ddg |g  d S )Nr1   r2   )r#   r   r  r  r  r&   r    r    r!   test_empty_ticks_fixed_locp  s    r  zretain_tick_visibility.pngc                  C   sF   t  \} }t g dg d t j| dd |jdddd d S )	Nr   )r   ro   r   Fr  r,   ru   r   rA  r  r"  )r#   r   r|   Zsetpr  r  r&   r    r    r!   test_retain_tick_visibilityx  s    r  c                  C   st   t  \} }dd }|jt | |g d |dd |jj	  dd |j
 D }|g dkspJ d S )	Nc                 S   s   | dkrdS dS )Nr1   
unit valuer   r    r   r    r    r!   formatter_func  s    z.test_tick_label_update.<locals>.formatter_func)ro   r   r1   r2   r   rN  r  c                 S   s   g | ]}|  qS r    r  r  r    r    r!   r     r   z*test_tick_label_update.<locals>.<listcomp>)r   r   r  r   r   )r#   r   rP   r   r   r  rn  r   r<  r   r  )r'   r   r  Z
tick_textsr    r    r!   test_tick_label_update  s    r  zo_marker_path_snap.pngH   c                  C   s~   t  \} }|d tddD ]$}|jddgtd| d|d q tdddD ]$}|jd	d
gtd| d|d qTd S )Nr   r1   r   r2   r   )r  rq   r  r   r   )r#   r   r  r   r|   r\   rv   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\J | ||| d  ||| d  fksJ | ||| d  ||| d  fksJ tdd\}}||  |dd | dksJ | ||| d  ||| d  fksJ | ||| d  ||| d  fksFJ tdd\}	}
|
|  |
jd	dd
 |
 dksJ |
 ||| d	  ||| d	  fksJ |
 ||| d  ||| d  fksJ d S )Nr1   rq   rS  r   r  r   r2   )r   r2   皙ɿr   )r  r   )	r  ri  rl  r#   r   r|   r  r~   r   )r[  rZ   r[   r-  r.  r?  r   r@  r   r  r   r    r    r!   test_margins  sF    





r  c                  C   sN   t jd t \} }|ddgddg |jddd | dksJJ d S )Nr>  r1   r2   r   r   )r  Zxmarginr   )r   r   r   r#   r   r|   r}   r~   r&   r    r    r!   test_set_margin_updates_limits  s
    r  )ro   z!margin must be greater than -0\.5r  ro   r,   z@Cannot pass both positional and keyword arguments for x and/or yr@  z&Must pass a single positional argumentc                 C   sR   t j| |d0 t }| }|j|i | W d    n1 sD0    Y  d S rD  )r   r   r#   r   r   r  )rE  r0  rq  r  r'   r   r    r    r!   test_margins_errors  s    r  c                  C   s&   t  \} }|d |dg d S Nr1   )r#   r   r`  r&   r    r    r!   test_length_one_hist  s    
r  c                  C   s   t  } |  }|dd | dks,J | dks<J |jdd | dksXJ | dkshJ |jdd | dksJ | dksJ |dd | dksJ | dksJ |jdd | dksJ | dksJ |jdd | dks
J | dksJ d S )	Nr   r  )r   r  rC  )r  )r   rC  )ri   )r  rC  )	r#   r   r   r/  
get_xboundr~   r0  
get_yboundr   r&   r    r    r!   test_set_xy_bound  s(    r  c                  C   s8   dgd } t dd\}}|| |  |t  d S )Nrq   r   r1   )r#   r   r  r  r  r  )Zmylistr'   r   r    r    r!   test_pathological_hexbin  s    
r  c                  C   s(   t  \} }|jddgddgd d d S )Nr1   r2   r  r  r&   r    r    r!   test_color_None  s    r  c                  C   s6   t  \} }|jddgddd }d| ks2J d S )Nr   r1   r  rL  )r#   r   r|   r  r'   r   rd  r    r    r!   test_color_alias  s    r  c                  C   s4   t  \} }|jtdgd tdd |  d S )Nr   r   r  )r#   r   r`  r   rA   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   r   r  )r#   r   decoder`  r   rA   )r'   r   r   r  rz  r    r    r!   test_unicode_hist_label  s    r  c                  C   sJ  t jdd } t \}}||  |j  |jj	 }|jj
 dksPJ |j  |j  |jj	 }|d |d kr|d |d ksJ |jj
 dksJ t \}}||  |j  |jj	 }|jj dksJ |j  |j  |jj	 }|d |d kr,|d |d ks0J |jj dksFJ d S )	Nrq   g^ 9^;rH   r   r1   r;   r7   rG   )r\   r]   r#   r   r|   r<  r   rS   Z
offsetTextr=  rR   Z
tick_rightrP   Zget_verticalalignmentr{   )r[  r'   r   beforeafterr    r    r!   test_move_offsetlabel#  s*    



$



(r  zrc_spines.pngc                  C   sD   ddddd} t |  t  W d    n1 s60    Y  d S )NF)zaxes.spines.leftzaxes.spines.rightzaxes.spines.topzaxes.spines.bottom)rM   r
   r#   r   )r  r    r    r!   test_rc_spines=  s    r  zrc_grid.pngc               	   C   s   t  } ddd}ddd}ddd}|||g}t|dD ]@\}}t| | dd| W d    q:1 sp0    Y  q:d S )NTru   )r  zaxes.grid.axisr+   r,   r1   r   )r#   r   r9  rM   r
   r   )r'   Zrc_dict0Zrc_dict1Zrc_dict2r  r   r  r    r    r!   test_rc_gridH  s    
r  c                  C   s   ddddd} t j| d t  }|ddd}|j}|j}|jd rLJ |jd sZJ |jd rhJ |jd svJ |jd sJ |jd rJ |jd sJ |jd rJ W d    n1 s0    Y  d S )NFT)xtick.bottom	xtick.top
ytick.leftytick.rightr   r1   tick1Ontick2Onr#   r
   r   r   rP   rS   Z_major_tick_kwZ_minor_tick_kwr  r'   r   ZxaxZyaxr    r    r!   test_rc_tick^  s     r  c               	   C   s   ddddddddd} t j| d t  }|ddd}|j}|j}|jd rTJ |jd sbJ |jd rpJ |jd s~J |jd rJ |jd sJ |jd rJ |jd sJ W d    n1 s0    Y  d S )NTF)r  r  r  r  zxtick.minor.bottomzxtick.major.bottomzytick.major.leftzytick.minor.leftr  r1   r  r  r  r  r    r    r!   test_rc_major_minor_tickr  s$    r  c                  C   s   t d} t g d}t \}}|| |d |d | |  }}t 	|t 	|ksfJ |
 dksvJ t|jddjd t|jd	djd
 d S )Nr   )r   r  rT  r  morg  r1   T)originalg      ?r   r  r  F)g333333?r   g      ?r  )r\   ra   r   r#   r   r|   rA  r~   r   r  r:  r   r=  rI  )r+   r,   r'   r   rs   rt   r    r    r!   test_square_plot  s    

r  c                   C   s  t t td  W d    n1 s*0    Y  t t td d  W d    n1 s`0    Y  t t( ttdtd W d    n1 s0    Y  t t8 ttddtdddf W d    n1 s0    Y  d S )Nr  r}  r   r  ro   r1   )	r   r   r(  r#   r|   r\   r  ra   rx   r    r    r    r!   test_bad_plot_args  s    (*6r  zxy, clsr    ))r   r  )r2   rO  )r1   r2   r   r  rs  r_  )r   r   rg  )r   r   c                 C   s0   t  \}}t|jg | |R  |ks,J d S r   )r#   r   r=  
pcolorfast)r]  r[  clsr'   r   r    r    r!   test_pcolorfast  s    r  c                  C   s   t jddddd\} }|d d |d d |jD ]$}| dksLJ | dks8J q8|d d |d d |jD ]$}| dksJ | dksJ qd S )Nr2   TrA  rz  r   r  rQ  )r#   r   rR  r	  r:  Z
get_yscaleZ
get_xscaler'   r;  r   r    r    r!   test_shared_scale  s    

r  c                   C   sp   t t tjdd W d    n1 s,0    Y  t t tjdd W d    n1 sb0    Y  d S )NTrG  r  )r   r   r   r#   r  r    r    r    r!   test_shared_bool  s    *r  c                   C   s   t tddg dS )z4Violin plot should handle point mass pdf gracefully.r   N)r#   r  r\   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g dg dg d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 }| | }| | }| | | }g ||||S )
Nr+   r   r,   rE  r1   )r1   r1   r1   r1   r1   )r2   r   r  r  )r	   r\   ra   rv   )Zbase_xyZ
err_cyclerZxerr_cyZyerr_cyemptyZ	xerr_onlyZ	yerr_onlyZboth_errr    r    r!   generate_errorbar_inputs  s*    $

r  rq  c                 C   s$   t  }|jf i | }|  d S r   )r#   r  r  r  )rq  r   Zebr    r    r!   test_errorbar_inputs_shotgun  s    r  Zdash_offsetc                  C   sT   t  \} }tdd}t|}tdddD ] }|j||| |dfddd q.d S )	Nr   rq   r   r2   rq   rq   r   rB  )r  r   r   )r#   r   r\   r   Z	ones_liker   r|   )r'   r   r+   r,   rS  r    r    r!   test_dash_offset  s
    
r  c                  C   s   t  \} }|jddd |j }|d d| j ks:J |jddd |j }|d dksbJ |jdd d |j }|d tjd d | j ksJ d S )	Naardvarkr  r#  r  g?rS  zaxes.titlepadrI  )r#   r   r.   ZtitleOffsetTransZ
get_matrixr  rM   r   )r'   r   r  r    r    r!   test_title_pad  s    


r  c                  C   s   t  \} }dt jd< |d |jddd |jddd d|jddksPJ d|jddksdJ d|jddksxJ tt |jdd W d    n1 s0    Y  tt |jddd W d    n1 s0    Y  d S )	NrO   zaxes.titlelocationr  rH   r8   r;   r{  fail)r#   r   r   r.   Z	get_titler   r   r(  r&   r    r    r!   test_title_location_roundtrip
  s    

*r  rH  c                 C   s   t jdd| d\}}|d jddd |d jddd |  |d j \}}|d j \}}||  krxd	ks~n J d S )
Nr2   r1   rG  r   rV  ir  rW  r   )r#   r   r.   r*  r*   r=  )rH  r'   r;  r+   r<  r  r    r    r!   test_title_location_shared  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 )Nr1   rJ  r   r   r   r  r2   )r"  rh  r   r  )r"  rh  r  )r#   r   r\   ra   rJ  r  )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< ttg dd	d
|jD ]~\\}}}||kr|r||j||d d	|d q|j||d d	d qL|j||d d	d |r|jd|d |rL|j	d|d qLd S )Nr   r1   rJ  g      r  r&  r   )r  ro  r   r2   )r  )r   nonpositiver   r   )r  )
r#   r   r\   ra   rm  r   r:  rJ  rR  r	  )r'   r;  r+   r,   ZmcyZmcxr   r    r    r!   test_loglog_nonpos0  s"    r  c                  C   s  t  \} }|g d | d dks.J t  \} }|g dg d | d dksbJ t  \} }|g dg d | d dksJ t  \} }|t	d | dksJ | dksJ t  \} }|
t	d | dksJ | dksJ t  \} }|td | d dksBJ t  \} }|t	d | dkspJ | dksJ d S )Nr_  r   )r1   r1   r1   r1   r  rN  rq   )rN  g      #@)r#   r   r|   r  r  r  r  r`  r\   r  r  r`  ra   rz   r&   r    r    r!   test_axes_marginsF  s0    r  )r3  c                 C   s    dd }dd }||d| j  S )Nc                 S   s<   |   }|  | dd | j  }|d dks8J d S Nr   r   ro   r  )r   r  rn  rP   get_major_locatorr   r   r  r    r    r!   	_helper_xj  s
    z&shared_axis_remover.<locals>._helper_xc                 S   s<   |   }|  | dd | j  }|d dks8J d S r  )r   r  ro  rS   r  r  r    r    r!   	_helper_yq  s
    z&shared_axis_remover.<locals>._helper_yr   )param)requestr  r  r    r    r!   shared_axis_removerh  s    r  )r  r   subplots_sharedr  c                 C   s   | j dkrt }| }nf| j dkr4t \}}nN| j dkrbtjddddd\}}|d d }n | j dkrt }|g d	}||fS )
Nr  r   r  r2   r|  rA  r   r  r   r   rx  rx  )r  r#   r   r  r   r  )r  r'   r   r  r    r    r!   shared_axes_generator{  s    




r  c                 C   s   | \}}|| d S r   r    )r  r  r'   r   r    r    r!   test_remove_shared_axes  s    r  c                  C   s`   t jddddd\} }|d d }|d d  }|  |dd t|d d  | d S )Nr2   r|  rA  r   r1   r   )r#   r   r~   r  rn  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|
 rJ | s| rJ | |   krd
ksn J | |   krd
ksn J d S )Nir  r,  r2   r1   TrA  r  )r  r  )r\   ra   r]   Zrandom_samplern  r#   r   rn  ro  r  r  r  r~   r   )rb  rb  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sVJ |
dd | j  t	|j  dksJ d S )Nr  r  r   r  r  r2   )r#   r   rS   r  Z
set_paramsrn  r9  r<  r   r  ro  r&   r    r    r!   test_adjust_numtick_aspect  s    


r  c                  C   sN   t  dd} | jD ]2}g | g |   krBg dksn J qd S )Nr   r   )r#   r   r   r:  r  r  r  r    r    r!   test_auto_numticks  s    
r  c                  C   sv   t  \} }dtjd< |ddgddg t| tddd	k	 sNJ t|
 td
ddk	 srJ d S )NZround_numbersaxes.autolimit_modeg#B;g     j@gؗҜ<rq   irH  r   r  r   )r#   r   r   r   rJ  r\   log10r  ra   r|  r  r&   r    r    r!   test_auto_numticks_log  s
    
$r  c                  C   s   t  \} }|g d d S )N)r   r   )r#   r   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^J | d jd	 t|d
 ksJ dS )z9Check that timedelta works as x, dx pair for this method.r  rJ  r  r   r1   r   r2   rz  r2   r   gUUUUUU?N)	r#   r   r  r$  r  r   Zverticesr  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-01rq   )r'  r  r  r  )r+  r\   ra   r]   r   r#   r   rP  )r.  timedepthr[  r'   r   r    r    r!   test_pandas_pcolormesh  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-03r  rF  )rI  r  r2   r1   rI  r  r  )r\   ra   r   r   r   r  rD  r#   r  rG  r  r|   )r.  rI  r  rH  r   Zwithout_zero_indexr    r    r!   test_pandas_indexing_dates  s    r  c                 C   sF   | j tjjddg dg dd}t \}}|jdddd	|d
 d S )N)r   r   rm  )r+   r,   xeyer  )columnsrG  r+   r,   r  r  r   )rD  r\   r]   uniformr#   r   r  rN  r    r    r!   test_pandas_errorbar_indexing  s    r  c                 C   s:   |  g dg dd}t \}}||j|d  d S )Nr  )r  r1   r2   )ZXXYYr  )rD  r#   r   r|   rG  rN  r    r    r!   test_pandas_index_shape  s    r  c                 C   s8   | j g dd}|jdd  }t \}}|| d S )N)
r1   r2   r2   r   r   r   r   r   r   r   r  r1   )r]  Zilocr#   r   r`  )r.  Zser_1Zser_2r'   r   r    r    r!   test_pandas_indexing_hist  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 )Nr2   r  r1   r   r  rO   r  )rD  r   r#   r   r  r9   r<  r   rN  r    r    r!   test_pandas_bar_align_center   s    r  c                  C   s   dd l m}  t }| |d}tjtdd |d W d    n1 sN0    Y  | 	|d}tjtdd |d W d    n1 s0    Y  d S )Nr   z;The apply_tickdir function was deprecated in Matplotlib 3.5r  rM  )
Zmatplotlib.axisrA  r#   r  ZXTickr   r.  r   Zapply_tickdirZYTick)Zmaxisr   r  r    r    r!   #test_tick_apply_tickdir_deprecation  s    (r  c                  C   s   t  } | jjdddd | jjd jdks0J | jjd j dksJJ | jjd j	 dksdJ | jjd j dks~J d S )	Nr   r  rM  )r  r$  r!  r   rC  rB  r  )
r#   r  rS   set_tick_paramsr  _size	tick1liner  rC  r|  )Zaxis_1r    r    r!   .test_axis_set_tick_params_labelsize_labelcolor  s    
r   c                  C   s   t  } | jddddd | j| jfD ]d}|jd j dksBJ |jd j dksZJ |jd j	 dksrJ |jd j
 dks&J q&d S )Nr  r   r   r  )r&  r(  r'  r)  r   r  )r#   r  r  rP   rS   r  r  r  Zget_linewidthZ	get_alpharR  )r   rA  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u sBJ | jjd j du s\J | jjd j du svJ | jjd j du sJ d S )NFTr  )Z	labelleftZ
labelrightr  r  r   )	r#   r  r  rS   r  rC  r   label2r  r  r    r    r!    test_axes_tick_params_ylabelside8  s    r  c                  C   s   t  } | jdddd | jdddd | jjd j du sBJ | jjd j du s\J | jjd j du svJ | jjd j du sJ d S )NTFr  )labeltoplabelbottomr  r  r   )	r#   r  r  rP   r  rC  r   r  r  r  r    r    r!    test_axes_tick_params_xlabelsideF  s    r  c                  C   s4   t   } | jtdd d\}| dks0J d S )Nrg   r  r  )r#   r   r   r|   r   rR  )r   lnr    r    r!   test_none_kwargsV  s    r  c                  C   sT   g d} t jtj| tjdg ddd}t|j| D ]\}}|jd |ks4J q4d S )Nr_  rF  )r2   r   r   r   r  r  r   )r#   r  r\   r   Zuint8rm  r   r]  )r,  r  r   r+   r    r    r!   test_bar_uint8\  s     r	  zdate_timezone_x.pngr   c                  C   sj   dd t dD } tjdd tddd tj| dgd dd	 tddd tj| dgd d
d	 d S )Nc              
   S   s(   g | ] }t j d dd|tjddqS   r2      Canada/Easternr   tzinfor  rV  tzZgettzr   r    r    r!   r   f  s   
z(test_date_timezone_x.<locals>.<listcomp>r   r  rg  rA  r2   r1   r  )r  UTCr   r#   r   r  r  Z
time_indexr    r    r!   test_date_timezone_xc  s    r  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 r
  r  r   r    r    r!   r   w  s   
z(test_date_timezone_y.<locals>.<listcomp>r   r  rA  r2   r1   r  FT)r  Zxdateydater  r  r  r    r    r!   test_date_timezone_yt  s    r  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 )r  r2   r  r  r%  r   r  r    r!   r     s   z.test_date_timezone_x_and_y.<locals>.<listcomp>r   r  rA  r2   r1   r  T)r  r  z
US/Eastern)r  timezoneutcr   r#   r   r  r  r  r    r  r!   test_date_timezone_x_and_y  s    
r  zaxisbelow.pngc                  C   s   t  jdddd} d}t| |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"J q"d S )Nr   T)rv  rH  r  )Frd  TrN  rq   r  rY  r\  r  r  r5   r  )r   r   r   F)r7   rG   rH   r;   )r#   r   r   rm  r|   rx  r  rw  r  r  r  r   Zset_axisbelowZget_axisbelow)r;  settingsr   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|J d S )Nr   r  )r  Xlabel2Titler   )r#   r   r   r   r   r$   r.   r<  r   get_rendererget_window_extentr  r<  r\   isclose)	r'   r   r   Zxlabel2r*   rendererZbbox_y0_titleZbbox_y1_xlabel2Zy_diffr    r    r!   test_titletwiny  s    



r'  c                  C   sx   t  \} }| jdd | }|d |d |d d}|j| | j	 }|
| |j |kstJ d S )Nrx  )r7   ZXlabelr!  r"  )r   g(\?)r#   r   r  r   r$   r.   r*   r  r<  r#  Z_update_title_positionr=  )r'   r   r   r   r&  r    r    r!   test_titlesetpos  s    




r(  c                  C   sP   d t jd< t \} }|jd |d | j  |j	
 d dksLJ d S )Naxes.titleyr7   
xlabel topr1   p=
ף?)r   r   r#   r   rP   r   r.   r<  r   r*   r=  r&   r    r    r!   test_title_xticks_top  s    


r,  c                  C   sX   d t jd< t \} }|jdddddd |d | j  |j	 d dksTJ d S )Nr)  r+   TrA  rG   r7   r  r  r*  r1   r+  )
r   r   r#   r   r  r.   r<  r   r*   r=  r&   r    r    r!   test_title_xticks_top_both  s    


r.  zleft, center))rH   r   )r   rO   )rH   rO   )zleft title movedzcenter title keptzboth titles alignedc                 C   s   d t jd< t \}}|d |j| dd || |  | r`|s`|j d dksJ nT| s|r|j	 d dksJ n4|j d }|j	 d }|dksJ ||ksJ d S )Nr)  g   vH7BrH   r8   r1   r   )
r   r   r#   r   ro  r.   r*  Z_left_titler=  r*   )rH   rO   r'   r   Zyleftr  r    r    r!   test_title_above_offset  s    


r/  c                  C   s`   d t jd< t } | g d}|jdddddd |d}| j  |	 d dks\J d S )	Nr)  )r   rN  rx  r   r+   Tr-  Boor1   r   )
r   r   r#   r   r  r  r.   r<  r   r=  )r'   r   ttr    r    r!   test_title_no_move_off_page  s    


r2  c                  C   sB   t  \} }|g d |jjdd |j  dks>J d S )Ng   @Ag   eAg   FAr  )r$  )r#   r   r|   rS   r  get_offset_textr  r&   r    r    r!   test_offset_label_color	  s    r5  c                  C   s`   t  \} }|g d |jjddd |j  s<J |jjdd |j  r\J d S )Nr3  FT)Zlabel1Onlabel2On)r6  )r#   r   r|   rS   r  r4  r   r&   r    r    r!   test_offset_text_visible  s    r7  c                  C   s6   t  \} }|dtddg d  | j  d S )Nr1   r   g-q=gqىE)r#   r   r|   r\   r   r<  r   r&   r    r    r!   test_large_offset  s    r8  c                  C   s^   t  \} }dd tdddD }tddt|}tddt| }}||||| d S )Nc              	   S   s   g | ]}t  d ddd|qS r  r  r   rH  r%  r  r    r    r!   r   "  r   z#test_barb_units.<locals>.<listcomp>r   r  rq   r   rU  )r#   r   r   r\   r   r  Zbarbsr'   r   rI  r,   uvr    r    r!   test_barb_units   s
    r=  c                  C   s^   t  \} }dd tdddD }tddt|}tddt| }}||||| d S )Nc              	   S   s   g | ]}t  d ddd|qS r9  r%  r  r    r    r!   r   *  r   z%test_quiver_units.<locals>.<listcomp>r   r  rq   r   rU  )r#   r   r   r\   r   r  Zquiverr:  r    r    r!   test_quiver_units(  s
    r>  c                  C   sn   t j} t \}}tdD ]N}|td\}|tdtd}|D ] }| | | | ksFJ qFqd S )Nr   r   )	r)  to_rgbr#   r   r   r|   r  r  r  )r?  r'   r   rS  r  Zbrsbrr    r    r!   test_bar_color_cycle0  s    rA  c                  C   s  t dd\} \}}|ddgddg |ddgddg |jjddd |jjddd |jddD ]}| dkshJ qh|jddD ]}| dksJ q|j	d	d
d |j	ddd |jddD ]}| d
ksJ q|jddD ]}| dksJ qd S )Nr1   r2   r   ru   r   )r  r  r  r  r+   5   )rA  r%  r,   r   )rA  r  r  )
r#   r   r|   rP   r  rS   r  r{  r  r  )r  r   r   textr    r    r!   test_tick_param_label_rotation:  s    rD  c            	      C   s  t  \} }tdD ]D}|tdtd}td|}t| 	 t|ksJ qtddD ]D}|
tdtd}td|}t| 	 t|ksdJ qdtd}dD ]@}|jtdtdfi |di}t| 	 t|ksJ qtd}tddgddD ]v\}}|jtdtdfi |di}td|}t| 	 t|ksjJ t| 	 t|ksJ qd S )	Nr   zC{}rO  rB  )r   Z
facecolorsr   r   rd  )start)r#   r   r   r  r)  r  r  tupler  Zsqueezer6  r9  r  )	r'   r   rS  cctargetalZedge_targetelZface_targetr    r    r!   test_fillbetween_cycleM  s&    
 
 rK  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[  r  r(  rq   r   )
r#   r   r   Zset_xmarginrK  r~   rP   r!  r   r   )r'   r   marginZxlim0Zxlim1r   Zxlim0tZxlim1tZx0tZx1tr  r    r    r!   test_log_marginsi  s    


rM  c                  C   s   d} t | t |  }}t | d }t \}}tt  |j|||d W d    n1 sd0    Y  d}|j|||d |j|||g|  d d S )Nr   r1   rL  )r   r   r   )r\   ra   r#   r   r   r   r(  r3   )r  r+   r,   rz  r'   r   Zc_rgbr    r    r!   test_color_length_mismatchw  s    .rN  c                   C   s   t jdgdd t   d S )Nr   Labelr  )r#   r  rA   r    r    r    r!   test_eventplot_legend  s    rP  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 J d S )Nr   r1   r   )rH   r  )r   r   r   rC  r  )r#   r   r  r   r  r  )r'   r   Zrect1rect2r    r    r!   test_bar_broadcast_args  s
    rR  c                   C   s   t ddgddg tt t tj W d    n1 s@0    Y  tt t tj W d    n1 sv0    Y  tt t 	tj W d    n1 s0    Y  tt t 	tj W d    n1 s0    Y  d S rF  )
r#   r|   r   r   r(  rs   r\   r  r  rt   r    r    r    r!   test_invalid_axis_limits  s    ***rS  r  rP  r   r  c                 C   s6   t  }|g d ||  || |  d S )Nr?  )r#   r  r|   rR  r	  r5  )r  r  r   r    r    r!   test_minorticks_on  s
    

rT  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 )Nr1   r2   r   r   )r#   r   r  r   r|   r   r>  Z	intervalx)r'   r   Zxtwinr@  r   r    r    r!   test_twinx_knows_limits  s    rU  c                   C   s   t jddgddgddd d S )Nr   r1   r  )r  r   )r#   r|   r    r    r    r!   test_zero_linewidth  s    rV  c                  C   s<   t  \} }|jg g g dd |jg g g dd |  d S )Nzempty y)r  r)   zempty x)r  r)   )r#   r   r  rA   r&   r    r    r!   test_empty_errorbar_legend  s    rW  c                 C   s\   t ddd}dd |D }dd |D }dd |D }|  || | || d S )Nr&  rq   r   c                 S   s0   g | ](}d |d  d|d   d|  d qS )g@r   r  r2   g\(\@      @r    r   r    r    r!   r     r   z%test_plot_decimal.<locals>.<listcomp>c                 S   s   g | ]}t |qS r    r   r  r    r    r!   r     r   c                 S   s   g | ]}t |qS r    r   r  r    r    r!   r     r   )r\   ra   r   r|   )r   r   r  r  r+   r,   r    r    r!   test_plot_decimal  s    rY  c                 C   s0   |   jddddd |  jddddd d S )Nr   r   r   r   )r}  r  re  )r   r|   )r   r   r    r    r!   test_markerfacecolor_none_alpha  s    rZ  c                  C   sn   dt jd< dt jd< t  \} }|| j }|d || j }|j|jk sZJ |j|jk sjJ dS )z5Test that tick padding gets turned off if axis is offrM  zxtick.directionzytick.directionoffN)	r#   r   r   get_tightbboxr<  r#  rA  r  r  r'   r   bbbb2r    r    r!   test_tick_padding_tightbbox  s    


r`  c                  C   s0  d\} }t jtdd| |tdd|  | f \}}t |d t d||  t |  }t \}}||||ddddf  |d |	  dd	g}d
dg}|d |d |d |d  |d |d  g}	|j
|	d\}
}|du sJ |j  t ddgd	dgg}t |
  |ks,J dS )z:
    Ensure that inset_ax argument is indeed optional
    r(  r(  r1   r   rq   Nro   r   r   333333@r2   r  r   )boundsr   )r\   mgridr  r   r  r#   r   rP  r9  apply_aspectindicate_insetr<  r   r   r|  get_bbox
get_points)dxdyr,   r+   r  r'   r   rs   rt   r  rec
connectorsxxr    r    r!   
test_inset  s&    
*
,

rn  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 |	  |
g d}||||d dd df  |dd	g |d
dg ||  ||\}}	t|	dksJ |j  t ddgd	dgg}
t |  |
ksJJ t ddgddgg}
t jj|  |
dd d S )Nra  r1   r   rq   ro   r   )r  r  ffffff?ro  r   rb  r2   r  r   r   g=
ףp=?gKXc'?g(\?g?g-C6?Zrtol)r\   rd  r  r   r  r#   r   rP  r9  re  
inset_axesrn  ro  r:  Zindicate_inset_zoomr  r<  r   r   r|  rg  rh  r   r   r=  )ri  rj  r,   r+   r  r'   r   Zaxin1rk  rl  rm  r    r    r!   test_zoom_inset  s6    
*



rr  zinset_polar.pngc                  C   sd   t  \} }|jg ddd}t|ts,J tddd}dtj | }||| ||| d S )N)r   r   r  r  Tr  r   r2   rU  )	r#   r   rq  r   r   r\   ra   r   r|   )rv  r   axinsr  rs  r    r    r!   test_inset_polar"  s    rt  c                  C   s0   t  \} }|jg ddd}t|ts,J d S )Nr   r   r   r   hammerr  )r#   r   rq  r   r   rv  r   rs  r    r    r!   test_inset_projection/  s    rx  c                  C   s4   t  \} }|jg dtjd}t|tjs0J d S )Nru  )r/  )r#   r   rq  AAr   r   rw  r    r    r!   test_inset_subclass5  s    rz  
x_inverted
y_invertedc                 C   s   t dd\}\}}td}|||d | r8|  |rD|  |g d|\}}|\}}	}
}| rldnd}|rxdnd}||
jd |jd   dksJ ||jd |	jd   dksJ ||	jd |jd   dksJ ||jd |
jd   dksJ dS )	zR
    Test that the inset lines are correctly located with inverted data axes.
    r1   r2   rq   r   )r2   r2   r   r   ro   r   N)	r#   r   r\   ra   r|   r  r  rf  r  )r{  r|  r'   r   r   r+   r  rc  Z
lower_leftZ
upper_leftZlower_rightZupper_rightZsign_xZsign_yr    r    r!   test_indicate_inset_inverted;  s    
   r}  c                  C   s   t  \} }|d |jg ddd t| jds>J |d |jg ddd t| jdspJ |d |jg dd	d t| jdsJ d S )
Nr  )r   r   rC  rC  ru   r  r   r   r  r}  active)r#   r   r9  r  r\   r  r=  rh  r&   r    r    r!   test_set_positionU  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)rt  rt  r  r  r   Fgư>rp  )r#   r   r  rG   r$  r<  r#  Z_set_view_from_bboxr\   r   r   rh  r]  r    r    r!   !test_spines_properbbox_after_zoomb  s    r  c                  C   sH   t  \} }t|  |tjdd | j }tj	|
|jd d S )Nr1   r0  i  )r#   r   r   rC  r\   r  r<  r#  r   r   r\  rh  )r'   r   r&  r    r    r!   test_gettightbbox_ignore_nanl  s
    
r  c                 C   s^   t dd}| jtjjdd|d}| jtjjdd|d}| jg d|d}t||| d S )Nrq   rH  r  rm  rM  )r1   r1   r1   r1   r1   r   r   r   )r   r]  r\   r]   r  r#   r3   )r.  r3  r+   r,   r5   r    r    r!   "test_scatter_series_non_zero_indext  s
    
r  c                   C   s"   t g g  t jg g g g d d S )N)rc  r5   )r#   r3   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\}}|| | |g d}|d |j	
d |j
d |jd	| d
 |d
 f|jd|jtddd d S )Nr   rq   r  )gQ@r   rA  )rC  r   r   r   r   Fr   r  rW  re  )rf  )r]  r^  r_  r`  r~  )r\   r   rR  r   r#   r   r|   rq  r9  rP   r   rS   ra  Z	transDatar   r  )r+   r,   r'   r   rs  r    r    r!   test_annotate_across_transforms  s    
r  zsecondary_xy.pngc                  C   s   t jddddd\} }dd }t|D ]\}}|tddtdd |d	krZ|j}n|j}|d
||fd |ddd dd fd |ddd dd fd |d q&d S )Nr1   r2   r  T)r  r  c                 S   s8   t jdd d|  W  d    S 1 s*0    Y  d S Nr  r  r1   r\   r  r	  r    r    r!   invert  s    z!test_secondary_xy.<locals>.invertrJ  r   r   Z	functionsrC  c                 S   s   d|  S Nr2   r    r	  r    r    r!   r    r   z#test_secondary_xy.<locals>.<lambda>c                 S   s   | d S r  r    r	  r    r    r!   r    r   r  c                 S   s   | d S r  r    r	  r    r    r!   r    r   c                 S   s   | d S )Nr   r    r	  r    r    r!   r    r   rx  )r#   r   r9  r|   r\   ra   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    n1 sZ0    Y  tt |d W d    n1 s0    Y  tt |	d W d    n1 s0    Y  d S )	Nr2   rJ  r   c                 S   s   d|  S r  r    r	  r    r    r!   r    r   z%test_secondary_fail.<locals>.<lambda>r  r;   rG   )
r#   r   r|   r\   ra   r   r   r(  r  r  r&   r    r    r!   test_secondary_fail  s    0(r  c                  C   sr   t jdd\} }|tddtdd dd }|jd||fd | j  | d	 t	|
 jg d
 d S )Nr  rA  r2   rJ  c                 S   s8   t jdd d|  W  d    S 1 s*0    Y  d S r  r  r	  r    r    r!   r    s    z%test_secondary_resize.<locals>.invertr7   r  )r  r   r  )r#   r   r|   r\   ra   r  r<  r   r  r   r=  rI  )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\J |  t|j t	jszJ |d	 t   t|j t	jsJ |d
 t   t|j t	j
sJ d S )Nr  rA  r2   rJ  c                 S   s8   t jdd d|  W  d    S 1 s*0    Y  d S r  r  r	  r    r    r!   r    s    z'test_secondary_minorloc.<locals>.invertr7   r  r   rQ  )r#   r   r|   r\   ra   r  r   Z_axisZget_minor_locatorr   ZNullLocatorr5  ZAutoMinorLocatorrR  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sPJ d S )Nr   r7   )r#   r   rR  r  rP   r   r   ZScalarFormatterr<  r   r   r   r'   r   r  r    r    r!   test_secondary_formatter  s    


r  c                  C   s*   t  \} }|d}t|dks&J d S )Nr7   z<SecondaryAxis: >)r#   r   r  r/   r  r    r    r!   test_secondary_repr  s    
r  c                 C   sd  | j   | j  }g }t|j|jgD ]P\}}||}|rntj|j	|j
f|j|jdddddd}| | ||g7 }q(g }tg dD ]R\}}	|j|	 |}tj|j	|j
f|j|jdddddd}
| |
 ||g7 }q| }tj|j	|j
f|j|jd	d
dddd}| | |}||}tj|j	|j
f|j|jdddddd}| | |}||||fS )zS
    Helper for the tests below that test the extents of various axes elements
    r  r,   r   Nr   )rh  r  r   r   r   r   rt  )rG   r7   rH   r;   r   r   r  r2   r  r1   )r<  r   r#  r9  rP   rS   r\  rx  ry  r  r  rh  r  r   r  r$  )r'   r   r&  bbaxisr  Zaxxr^  Zaxisrbbspinesr   ZspinerrQ  bbaxr_  bbtbr    r    r!   color_boxes  sP    







r  c                  C   sn  t ddiH tjddd\} }| j  t|  t| |\}}}}W d    n1 sZ0    Y  g dg dg}t|D ]*\}}tj	j
||  }	t|j|	jdd	 q|g d
g dg dg dg}t|D ]*\}}tj	j
||  }	t|j|	jdd	 qg d}tj	j
| }	t|j|	jdd	 g d}tj	j
| }	t|j|	jdd	 | | jj}
t|
| jdd	 d S )N_internal.classic_modeFr  rO  rO  r  r  )g     ^@g8R@g     @g     @@)g8`U@gX@g     J@g     @r2   )decimal     b@-]@     @F8&@r  g     @r  rS  r  Nё\]@r        @gR!@r  r  r  r  g]@r  r  )g+e`U@gbhR@g{G@g{Gȏ@)r
   r#   r   r<  r   r  r  r9  r"  Bboxfrom_boundsr   rc  r=  ZtransformedtransFigurer$  )r'   r   r  r  r  r  rH  r  r  targetbbZaxbbr    r    r!   test_normal_axes  s6    

0r  c            
      C   s&  t ddiL tjddd\} }| j  |jg g d t| |\}}}}W d    n1 s^0    Y  t|D ]\}}|d u spJ qpg dg dg d	g d
g}t|D ]*\}}tj	j
||  }	t|j|	jdd qg d}tj	j
| }	t|j|	jdd g d}tj	j
| }	t|j|	jdd d S )Nr  Fr  r  r  ZxticklabelsZyticklabelsr  r  r  r  rU  Zatolr  )r        ^@r  r  )r
   r#   r   r<  r   r}   r  r9  r"  r  r  r   rc  )
r'   r   r  r  r  r  r  r  rH  r  r    r    r!   test_nodecorator?  s*    
0r  c            
      C   s  t ddiZ tjddd\} }|jg g d |jjd | j  t	| |\}}}}W d    n1 sl0    Y  g dg d	g d
g dg}t
||D ]&\}}tjj| }	t|j|	jdd qg d}tjj| }	t|j|	jdd g d}tjj| }	t|j|	jdd d S )Nr  Fr  r  r  r  )r  rY  )r        8@r  gs~8&@r  r  r  rU  r  r  )r  r  r  g     @)r
   r#   r   r}   r  rG   r  r<  r   r  rm  r"  r  r  r   rc  )
r'   r   r  r  r  r  targetsrH  Zbbspiner  r    r    r!   test_displaced_spine]  s(    
0r  c               	   C   s   g dg dgg dg dgg dg dgg} t g dD ]\}}tdd	i tjd
dd\}}|j|d |j  t||\}}}}t ddgD ]2\}	}
tj	j
| | |	  }t||
 j|jdd qW d   q:1 s0    Y  q:dS )zG
    Switch the tickdirs and make sure the bboxes switch with them
    )r  r  r  +e8&@)r  r  r  r  )r  gZӼ8[@r  88&@)g r\a@r9  r  r  )r  gqq\@r  r  )g88b@r  r  r  )r   rM  Zinoutr  Fr  r  r  rN  r   r2   rU  r  N)r9  r
   r#   r   r  r<  r   r  r"  r  r  r   rc  )r  Zdnumdirsr'   r   r  r  r  r  r  r   r  r    r    r!   test_tickdirsx  s*    
r  c            	      C   sr  t ddiN tjddd\} }| j  |jddd t| |\}}}}t| |\}}}}g d	g d
g}tdD ].}tj	j
||  }t||d  j|jdd qvtjddd\} }| j  |jddd |  |jdddd | j  t| |\}}}}g dg dg}tdD ]0}tj	j
||  }t||d  j|jdd qW d    n1 sd0    Y  d S )Nr  Fr  r  r  ru   rM  )r  r!  )r  g88[@r  r  )gCiq\a@r  r  r  r2   rU  r  r  r   r  )r  gPUUUUUB@r  gVUUUUT@)gz6P@r  goTT@r  )r
   r#   r   r<  r   r  r  r   r"  r  r  r   rc  r5  )	r'   r   r  r  r  r  r  r  r  r    r    r!   test_minor_accountedfor  s:    


r  c                 C   sR   |  dd | dd |  d}|d |d | dd d S )Nr	  Fr[  r
  Ton)r   rA  r   r    r    r!   test_axis_bool_arguments  s    


r  c                  C   sr   t  \} }d}d}d}d}|||||g}t|||||fksFJ ||f| ksZJ ||f| ksnJ d S )Nr   rq   r   r  r#   r   rA  rF  r~   r   r'   r   rZ   r[   r-  r.  r  r    r    r!   test_axis_extent_arg  s    r  c                  C   sr   t  \} }d}d}d}d}|j||||d}t|||||fksFJ ||f| ksZJ ||f| ksnJ d S )Nr   rq   r   r  )rZ   r[   r-  r.  r  r  r    r    r!   test_axis_extent_arg2  s    r  c                  C   sD   t jg dg dgdd\} }} |d dks0J |d dks@J d S )	Nr  )r   r   r   rO  r  r  r   r1   ro   rO  )r#   r`  rv  r  r    r    r!   test_hist_auto_bins  s     r  c            
      C   s   t d\} \}}g d}|tjg }||\}}}tjdd  ||\}}	}W d    n1 sh0    Y  tj|| tj||	 d S )Nr2   r  r  r  )r#   r   r\   r  r`  r  r   r   )
r'   r   r   r[  Znan_datar  r  rv  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s0J |d dks@J d S )	Nrq   r  r|  T)r   r  r   ro   r1   )r#   r`  r\   r]   r   r  r    r    r!   test_hist_range_and_density  s
    r  c            
      C   sz   t  \} }g d}|j|||ddd}|jj\}}}|jD ]8}|D ]}|j|jksDJ qD|D ]}	|	j|jks^J q^q<d S )Nr  r   r   )r+   r  r  r  rt  )r#   r   r  r  r  r   rt  )
r'   r   r+   ZbarcontZ	data_lineZcaplinesZbarlinecolsr  ZcaplineZ
barlinecolr    r    r!   test_bar_errbar_zorder  s    
r  c                  C   sR   t  \} }|  |ddg | dks2J |dg | dksNJ d S )Nr   r  rW  ro   r  )r#   r   r  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srJ d S )Nr  rA  rC  r  r   rK  logit)F]tE?g'^P?r1   r4  r  rs   r  rt   rr   r6  r   r2   )r#   r   r   r|   r}   r  r  Ztransform_bboxr=  r  rh  r   approx)r'   r   r   r    r    r!   $test_aspect_nonlinear_adjustable_box  s    
r  c                  C   s   t jdd} | g d}|ddgddg |jdddd	d
dd |d |  | t	ddgkspJ |
 d	ksJ d S )Nr  rA  r  rC  r  r   )r1   r   r  )gbeF?r  r1   r5  r  r   gS[:XL	@g'In?@)r#   r   r  r|   r}   r  re  r~   r   r  r   r&   r    r    r!   (test_aspect_nonlinear_adjustable_datalim  s    
r  c                  C   s   t  \} }| }|ddg |d | dks<J t  \}}|d |ddgddg |jd	d
d | j	  |j	  |
 }|
 }|
 }t|j|j t|j|j d S )Nrg  iX  r1   r   r   r2   rO  r  r  r4  r8  )r#   r   r   r|   set_box_aspectZget_box_aspectr  r9  r<  r   r=  r   rI  )r?  r   Zaxtwinr@  r   bb1Zbbtr_  r    r    r!   test_box_aspect)  s     



r  c                  C   s   t  \} }|g d | j  |d t  \}}|d |j  |g d | j  |j  | }| }t|j|j d S )N)r   r   r  r   r   )	r#   r   r  r<  r   r  r=  r   rI  )r?  r   r@  r   r  r_  r    r    r!   test_box_aspect_custom_positionD  s    





r  c                  C   sn   t jddtdddd\} }| j  | j }g }|jD ] }||}||j	|j
g q:t||d  d S )Nr2   r   r1   )r?  T)r  r  r   )r#   r   r  r<  r   r#  r:  r$  r  rh  r  r   )r'   r;  r&  r]  r   r^  r    r    r!   test_bbox_aspect_axes_init[  s    




r  c                  C   s4   t dd\} }|g d | j  |  d S )Nr1   r  )r#   r   r|   r<  r   Zredraw_in_framer&   r    r    r!   test_redraw_in_framej  s    
r  c                  C   sB   t  \} }| jdd us J |d | jdd u s>J d S )N)r  r  F)r#   r   r<  Zinaxesr   r&   r    r    r!   test_invisible_axes_eventsq  s    
r  c                  C   s<   dt jd< t  } | j }|D ]}|j dks J q d S Nr;  zlines.markeredgecolor)r#   r   r  rP   get_major_ticksr  get_markeredgecolorr   Zticksr  r    r    r!   "test_xtickcolor_is_not_markercolory  s
    

r  c                  C   s<   dt jd< t  } | j }|D ]}|j dks J q d S r  )r#   r   r  rS   r  r  r  r  r    r    r!   "test_ytickcolor_is_not_markercolor  s
    

r  rA  r  )TFNc           
      C   s   t  \}}td}tddd}||| t|d|  d}t|d|  d}t|d|  d}|d u rt| n|}	|d	|d
 |	| ksJ |j  t	| d	 d S )Nr   rY  r   Zget_autoscaleZ_onr   Zlimget_)rN  r   )r  )
r#   r   r\   ra   r   r3   r   r<  r   r   )
rA  r  r'   r   r+   r,   rD  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  r  r   r2   r1   r   e   )r   r|   r\   r   get_pathZ_interpolation_stepsr   )r   r   rb  r    r    r!   )test_polar_interpolation_steps_variable_r  s
    $
r  c                  C   s6   t  \} }|dd | j  | dks2J d S )Nr   g&.>)r   g	>)r#   r   r  r<  r   r   r&   r    r    r!   test_autoscale_tiny_sticky  s    
r  c                  C   sX   dt jd< dt jd< t  } | j }|D ](}|j dks@J |j dks*J q*d S )Nr  zxtick.colorr   zxtick.labelcolor)r#   r   r  rP   r  r  r  rC  r  r    r    r!   &test_xtickcolor_is_not_xticklabelcolor  s    


r  c                  C   sX   dt jd< dt jd< t  } | j }|D ](}|j dks@J |j dks*J q*d S )Nr  zytick.colorr   zytick.labelcolor)r#   r   r  rS   r  r  r  rC  r  r    r    r!   &test_ytickcolor_is_not_yticklabelcolor  s    


r  rn  c                 C   s   g | ]}|d ur|qS r   r    )r   rn  r    r    r!   r     s   r   )r  rq   rg  c                 C   st   | t jd< | t jd< t \}}|j  tddg|j|jgD ].\}}|	 D ]}|j
 ||ksPJ qPq@d S )Nzxtick.labelsizezytick.labelsizer+   r,   )r   r   r#   r   r<  r   rm  rP   rS   r  rC  r|  Z_get_tick_label_size)rn  r'   r   namerA  r  r    r    r!   test_relative_ticklabel_sizes  s    


r  c                  C   s\   t  } | jdddd\}}|g dg d |dd | }t|d	d
gsXJ d S )Nr2   r1   r|  rG  r?  )r2   r   r2   r   r  r   r   rX  )r#   r   r   r3   r  r~   r\   r  )r'   r   r   rs   r    r    r!   test_multiplot_autoscale  s    r  c                  C   sX   t  } | d}| jg d|d}| }| jdd |  | k sTJ d S )Nr  )r  r  r   r   rG  r   )rH   )r#   r   r   r  r=  r  rh  r|  )r'   r  r   Zinit_posr    r    r!   $test_sharing_does_not_link_positions  s    
r  c                 C   sz  t 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ddgddg|dd |d jt d	|dd
 |d j	t d	t d	|dd
 |d}|d jddgddg|dd |d jddgddg|dd |d jddgddg|dd |d jt d	|dd
 |d j	t d	t d	|dd
 d S )Nr   r   r   r1   r2   ro   rL  r   rq   r  r   r  )
r\   r   r   r|   rx   r3   rb  r`  ra   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}|jD ]}||| q6| jddddd}|jD ]}|  ||| q`d S )NrS  r2   rU  TrA  )r\   ra   r   r   r   r:  r|   r*  )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\} }|jD ]}|ddgd q|d g d |jD ]}| |d  ksJJ qJ|d g d |jD ]}| |d  ksJ qd S )	Nr2   r|  rA  r   zo-rz  )rN  r   r1   r   )rN  r   r2   r  )r#   r   r:  r|   r  r~   r  r   r  r    r    r!   test_shared_axes_retick  s    


r  r>   )rH   rO   r;   c                 C   sD   t  }| }|jdd| d |jd |j  | ks@J d S )Ntestr1   r=   r;   )r   r   r%   rS   Zset_label_positionrQ   ry  )r>   r'   r   r    r    r!   test_ylabel_ha_with_position  s
    r  c                  C   s   t  } ddgddg }}| ||}| |}|d j|d |d fksNJ |d  dksbJ |d  dksvJ |d j|d |d fksJ |d  dksJ |d  dksJ d S )	Nr1   r2   r   r   rO   rG   r7   r#   r  r  	bar_labelr]  ry  rz  r   r,  Zheightsr  rz  r    r    r!    test_bar_label_location_vertical  s    
r  c                  C   s   t  } |   ddgddg }}| ||}| |}|d j|d |d fksVJ |d  dksjJ |d  dks~J |d j|d |d fksJ |d  dksJ |d  dksJ d S )	Nr1   r2   r   r  r   rO   r7   rG   )r#   r  r  r  r  r]  ry  rz  r  r    r    r!   *test_bar_label_location_vertical_yinverted(  s    
r  c                  C   s   t  } ddgddg }}| ||}| |}|d j|d |d fksNJ |d  dksbJ |d  dksvJ |d j|d |d fksJ |d  dksJ |d  dksJ d S 	Nr1   r2   r   r  r   rH   rO   r;   r#   r  r  r  r]  ry  rz  r   r-  r1  r  rz  r    r    r!   "test_bar_label_location_horizontal6  s    
r  c                  C   s   t  } |   ddgddg }}| ||}| |}|d j|d |d fksVJ |d  dksjJ |d  dks~J |d j|d |d fksJ |d  dksJ |d  dksJ d S r  )r#   r  r  r  r  r]  ry  rz  r  r    r    r!   ,test_bar_label_location_horizontal_yinvertedC  s    
r  c                  C   s   t  } |   ddgddg }}| ||}| |}|d j|d |d fksVJ |d  dksjJ |d  dks~J |d j|d |d fksJ |d  dksJ |d  dksJ d S 	Nr1   r2   r   r  r   r;   rO   rH   )r#   r  r  r  r  r]  ry  rz  r  r    r    r!   ,test_bar_label_location_horizontal_xinvertedQ  s    
r  c                  C   s   t  } |   |   ddgddg }}| ||}| |}|d j|d |d fks^J |d  dksrJ |d  dksJ |d j|d |d fksJ |d  dksJ |d  dksJ d S r  )	r#   r  r  r  r  r  r]  ry  rz  r  r    r    r!   -test_bar_label_location_horizontal_xyinverted_  s    
r  c                  C   s   t  } ddgddg }}| ||}| j|dd}|d j|d d |d fksVJ |d  dksjJ |d  dks~J |d j|d d |d fksJ |d  dksJ |d  dksJ d S )Nr1   r2   r   r  rO   )Z
label_typer   r  r  r    r    r!   test_bar_label_location_centern  s    ""r  c                  C   s   t  } ddgddg }}| j||dd}| |}|d j|d |d d fksVJ |d  dksjJ |d  dks~J |d j|d |d d fksJ |d  dksJ |d  d	ksJ d S )
Nr1   r2   r   r  r  r   rO   rG   r7   r  r  r    r    r!   !test_bar_label_location_errorbars{  s    
""r  c                  C   sV   t  } | ddgddg}| j|dd}|d  dks>J |d  d	ksRJ d S )
Nr1   r2   r   r  rw  r+  r   z3.00z-4.00r#   r  r  r  rD  r   r  rz  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sBJ |d  dksVJ d S )	Nr1   r2   r   r  rV  rW  )rz  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sBJ |d jd	ksTJ |d  d
kshJ d S )Nr2   r   r1   c                 S   s   g | ]}|  qS r    r  r   rb  r    r    r!   r     r   z,test_bar_label_nan_ydata.<locals>.<listcomp>r   1r   r  rG   )r#   r  r  r\   r  r  r]  rz  r   rY  rz  r    r    r!   test_bar_label_nan_ydata  s    
r  c                  C   st   t  } |   | ddgtjdg}| |}dd |D ddgksJJ |d jd	ks\J |d  d
kspJ d S )Nr2   r   r1   c                 S   s   g | ]}|  qS r    r  r  r    r    r!   r     r   z5test_bar_label_nan_ydata_inverted.<locals>.<listcomp>r   r   r   r  rG   )	r#   r  r  r  r\   r  r  r]  rz  r  r    r    r!   !test_bar_label_nan_ydata_inverted  s    
r  c                  C   s:  t  \} }|jg dtjddgg dd}||}dd |D g dksPJ t| d	sdJ t  \} }|jg dg d
dtjdgd}||}dd |D g dksJ t| dsJ t  \} }|jg dtjddgtjtjdgd}||}dd |D g dks J t| d	s6J d S )Nr  r1   r2   rL  r  c                 S   s   g | ]}|  qS r    r  r  r    r    r!   r     r   z&test_nan_barlabels.<locals>.<listcomp>)r   r   2)rS  r  r   r   r  c                 S   s   g | ]}|  qS r    r  r  r    r    r!   r     r   )r  r   r  )rN  r  c                 S   s   g | ]}|  qS r    r  r  r    r    r!   r     r   )r#   r   r  r\   r  r  r  r   )r'   r   rY  rz  r    r    r!   test_nan_barlabels  s     
 
&
r  c               	   C   sr   t  \} }|tjd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   ro   r  r  r9  r   r"  gffffff?r   rw  r2   gr(  rs  )r#   r   rw  rx  ZWedger\   r   r   r   Zassert_array_almost_equal_nulpr   ZdataLimrc  )r'   r   Zbotr    r    r!   test_patch_bounds  s    "r  c                	   C   sL   t jtdd* tjdgdgddddd W d    n1 s>0    Y  d S )	Nz!You passed a edgecolor/edgecolorsr  r   r  r  r  r  )rj   rc  r   r   )r   r.  r  r#   r3   r    r    r    r!    test_warn_ignored_scatter_kwargs  s    r  c                     s4  t  \}   fddtdD } tdtd} td} t	
ddd} ddd}t j|gksJ t j|gksJ t j|ksJ t j|gksJ  jrJ t j|gksJ  jd |d u sJ  jd	 |d	 u sJ tjtd
d"  jt|d   W d    n1 s>0    Y  tjtdd  jd	= W d    n1 sv0    Y  tjtdd  jd	d = W d    n1 s0    Y  tjtdd  jdd = W d    n1 s0    Y  tjtdd  jd= W d    n1 s&0    Y  |   jrDJ |   jrXJ |   jrlJ |   jrJ  jrJ  jrJ tjtdd  j| W d    n1 s0    Y  tjtdd  j| W d    n1 s0    Y  tjtdd  j| W d    n1 sB0    Y  tjtdd  j| W d    n1 s~0    Y  t j|gksJ t j|gksJ t j|gksJ t j|gksJ tjtdd   j|d  W d    n1 s0    Y  t j|d gks:J tjtdd   j|d	  W d    n1 sp0    Y  t j|dd  ksJ tjtdd"  jd|d  W d    n1 s0    Y  t j|d |d |d	 gksJ tjtdd |d  jd< W d    n1 s20    Y  t j|d |d |d	 gksbJ tjtdd& |dd  jdd< W d    n1 s0    Y  t j|ksJ  jg d g |dddksJ g d j dddg|ksJ  jD ]}|  qt jdks0J d S )Nc              	      s&   g | ]}  t||d  d qS )r   r   )r|   r\   ra   r  r  r    r!   r     r   z(test_artist_sublists.<locals>.<listcomp>rO  r   )r   r   rz  r   r{  ro   zout of ranger  r1   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 propertyrf  r  r2   r   )r#   r   r   r3   r\   ra   rz   r  rw  rx  ry  rC  r  r  Zimagesr  r   Ztablesr}  r   r   
IndexErrorr  r.  r   r  r;  insert)r'   r  r  r>  r   rC  r  r    r  r!   test_artist_sublists  s    
2(,,(,,,,002&.&6("
r
  c                  C   sh   t d} t d}t \}}|| |}t|dks<J t \}}|g g }t|dksdJ d S )Nrq   )rq   r   r   r1   )r\   rv   r#   r   r|   r  )r+   r,   rv  r   rd  r    r    r!   test_empty_line_plots3  s    

r  z
fmt, match))r  z?'f' is not a valid format string \(unrecognized character 'f'\))zo+z9'o\+' is not a valid format string \(two marker symbols\))z:-z;':-' is not a valid format string \(two linestyle symbols\))Zrkz7'rk' is not a valid format string \(two color symbols\))z:o-rz=':o-r' is not a valid format string \(two linestyle symbols\)stringc                 C   sj   t  \}}|d ur |dd}tjtd| d d  |jd| |d W d    n1 s\0    Y  d S )Nnotzneither a data key norz\Az\Zr  r  r  )r#   r   replacer   r   r(  r|   )r   r  r[  r'   r   r    r    r!   test_plot_format_errorsA  s
    	r  c                  C   sx  t  \} }|g dd}|d  dks0J |d  dksDJ t  \} }|g dd}|d  dkstJ t  \} }|ddgddgdd}| j  |d  dksJ | d  dksJ t  \} }|ddgddgdd}| j  |d  dksJ | d  dks,J t  \} }|g dd	}|d  d
ks^J |d  dkstJ d S )Nr  z1.0r   )r   r   r   r   r  r   r1   r2   Zk3r   rB  )	r#   r   r|   r  r  r<  r   r  rD  r  r    r    r!   test_plot_formatQ  s*    

r  c                  C   s   t  \} }|jddddid | }| j  | d  dksJJ | d  dksbJ t  \} }|jdddddid | }| j  | d  dksJ |	 d  dksJ | d  dksJ d S )Nr   r  r  r2   r  r   r5   )
r#   r   r|   rA   r<  r   Z	get_textsrD  r  r  )r'   r   legr    r    r!   test_automatic_legendi  s    

r  c                   C   sb  t jtdd" tjg ddd W d    n1 s60    Y  t jtdd8 tjg dg dg dg ddd	gd
 W d    n1 s0    Y  t jtdd" tg ddg W d    n1 s0    Y  t jtdd  ttd W d    n1 s0    Y  t jtdd( tjddddddid W d    n1 sT0    Y  d S )Nzplot got an unexpected keywordr  r  r1   r	  zplot\(\) with multiple groupsr  r   r  r  zx and y must have same firstzx and y can be no greater than)r2   r2   r2   zUsing arbitrary long args withr   r  r5   r  r2   r  )r   r   r   r#   r|   r(  r\   rv   r    r    r    r!   test_plot_errorsz  s    0F00r  c               	   C   s   t   } t| jtdtdtddt| jddgddggt| jddgddggt| jddgddggt| j	ddgddggfD ](}d}||dj
}|j|jf|ksJ qd S )Nr   rL  r   r1   r2   )r  r  )clim)r#   r   r   r   r3   r   rz   r`  rP  r  r'  r  r  )r   Zplot_methodr  r'  r    r    r!   	test_clim  s    r  c                  C   s   ddgddgddgddgg} t jjt jjt jjt jjg}t | |}t \}}|t	| |
  | d dks|J d S )Nro   r   r1   rN  )mpathr   r   ZCURVE3Z	CLOSEPOLYr#   r   rw  rx  r   r  r   )r1  codesr   r'   r   r    r    r!   test_bezier_autoscale  s    r  c                  C   sb   t  \} }|td tdD ]8}| |  | ksBJ | |  | ks$J q$d S )Nrq   )	r#   r   r|   r\   ra   r   r  rD  r  )r'   r   r  r    r    r!   test_get_xticklabel  s
    r  )Nr2   (\  r  r   r  r  r   	functoolsr   r  r  	itertoolsr   platformr}  r   Zdateutil.tzrV  numpyr\   r   r	   r   rM   r   r
   Zmatplotlib._apir   Zmatplotlib.colorsrz  r)  Zmatplotlib.datesrI  r  Zmatplotlib.figurer   Zmatplotlib.axesr   Zmatplotlib.font_managerZfont_managerZmfont_managerZmatplotlib.markersr  r  Zmatplotlib.patchesr   rx  Zmatplotlib.pathr   r  Zmatplotlib.projections.geor   Zmatplotlib.projections.polarr   Zmatplotlib.pyplotZpyplotr#   Zmatplotlib.textrC  r  Zmatplotlib.tickerZtickerr   Zmatplotlib.transformsZ
transformsr"  Zmpl_toolkits.axisartistZ
axisartistry  Znumpy.testingr   r   r   Zmatplotlib.testing.decoratorsr   r   r   r"   r(   r0   rF   rL   rN   rT   rf   r   r   r   r   r   r   r   r   r.  r/  r   r  r  r  r0  r4  r6  r=  r   r0  rE  rL  rO  rR  re  rt  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r#  r+  r2  r  ra   r5  r8  r@  rG  rN  rS  rZ  ra  rp  rq  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/  r4  r?  rK  rO  rQ  rZ  r[  r^  ra  rf  rj  rl  rs  rt  r  r  r  r  r  r  r  ZPatchrt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1  r2  r   r4  r  r6  r7  r>  rA  rJ  rL  rM  rQ  rX  rc  re  ri  rk  rr  ru  rw  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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/  r3  r5  r7  r8  r:  rE  rQ  rU  rY  rZ  r[  r\  r]  r^  rf  rg  rj  rk  ro  rp  rr  rs  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r,  r  rc   r  r  r1  r2  r;  r<  r@  rC  r   r(  rF  rF  rG  rJ  rL  rO  r^  rd  ri  rk  rl  rn  rp  rq  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PcolorImager]   ZQuadMeshrx   r   r  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	  r  r  r  r   r'  r(  r,  r.  r/  r2  r5  r7  r8  r=  r>  rA  rD  rK  rM  rN  rP  rR  rS  rT  rU  rV  rW  rY  rZ  r`  rn  rr  rt  rx  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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
  r  r  r  r  r  r  r  r  r    r    r    r!   <module>   sv  	













'
*
41


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












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

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

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

	
	
	
	
	
	


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

,







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