
    e#*                         d dl mZ d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ dd	lmZmZ  G d
 de          ZdS )    )SkipTestN)CategoricalColorMapperLinearColorMapper)Violin)univariate_kde)property_to_dict)dim   )TestBokehPlotbokeh_rendererc                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestBokehViolinPlotc                     	 dd l }n# t          $ r t          d          w xY wt                                                       d S )Nr   z)Violin plot requires SciPy to compute kde)scipyImportErrorr   supersetUp)selfr   	__class__s     Nlib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_violinplot.pyr   zTestBokehViolinPlot.setUp   sW    	HLLLL 	H 	H 	HFGGG	Hs    "c                 v   t           j                            d          t                                        d          }fdt          ddd          D             \  }}}}}||z
  }t          |d|z  z   t          j                            }t          |d|z  z
  t          j	                            }	|                    d          \  }
}t          |d	
          fdt          d          D             \  }}||                                z  dz  }d d|fd|d d d         ffD             }t          j        ||d d d         g          |dt          j        |          }|                     |j        d         j        dg           |                     |j        d         j        |
           |                     |j        d         j        |           |                     d|j                   |                     d|j                   |j        d         }|                     |j        d         dg           |                     |j        d         |	g           |                     |j        d         |g           |j        d         }|                     |j        d         dg           |                     |j        d         |g           |j        d         }|                     |j        d         d         g           |                     |j        d          d         g           d S )!Nd   gffffff?)violin_widthc              3   D   K   | ]}t          j        |           V  dS )qNnp
percentile.0r   valuess     r   	<genexpr>z9TestBokehViolinPlot.test_violin_simple.<locals>.<genexpr>   sF       "< "<&' #%-!"<"<"< "< "< "< "< "< "<    r   }      g      ?   cutc              3   B   K   | ]}                     |          V  d S N)dimension_values)r!   ikdes     r   r#   z9TestBokehViolinPlot.test_violin_simple.<locals>.<genexpr>!   s1      <<a#&&q))<<<<<<r$      gffffff?c                 0    g | ]\  }}|D ]}d ||z  fz   S ))  )r!   signvsys       r   
<listcomp>z:TestBokehViolinPlot.test_violin_simple.<locals>.<listcomp>#   s4    TTT($QSTTAeT!VIoTTTTr$   r
   xr5   x_ranger1   y_rangescatter_1_glyph_renderervbar_1_glyph_renderersegment_1_sourcer9   )r1   r   y0y1scatter_1_sourcer5   patches_1_sourcexsys)r   randomrandr   optsrangeminnanmaxmaxnanminr   concatenater   get_plotassertEqualhandlesfactorsstartendassertIndata)r   violinqminq1q2q3qmaxiqrupperlowerr1r2rC   rD   plot
seg_sourcescatter_sourcepatch_sourcer.   r"   s                     @@r   test_violin_simplez&TestBokehViolinPlot.test_violin_simple   s   $$$$#$66"< "< "< "<+03r??"< "< "<b"b$2gBSL")F"3"344BSL")F"3"344aBV+++<<<<588<<<BkF#TTBx!R"X.GTTT^RDDbDN33"==&v..i082$???i06;;;i04b9990$,???-t|<<<\"45
-y999.888.888&89,S1G9===,S1B4888|$67*403s8*===*403s8*=====r$   c                     t          ddgdz  g ddz  t          j                            d          fddgd	          }t	          j        |          }|j        d
         }|                     |j        g d           d S )NAB   )   
   r
   rk      GroupCategoryValuer:   ))rg   1)rg   3)rg   10)rh   rp   )rh   rq   )rh   rr   )	r   r   rE   randnr   rN   rP   rO   rQ   )r   boxra   r:   s       r   test_violin_multi_levelz+TestBokehViolinPlot.test_violin_multi_level7   s    c3Z]JJJrM29??23F3FGj)74 4&s++,y) +V +V +V 	W 	W 	W 	W 	Wr$   c                 *   t           j                            d          t                                        d          }t          |d          }|                    d          t          j        |          }| 	                    d|j
                   |j
        d         }fd	t          d
dd
          D             \  }}}fd|||fD             \  }}	}
|                     |j        d         t          j        ||	|
g                     d S )Nr   	quartilesinnerr'   r(   r   segment_1_glyph_rendererr>   c              3   D   K   | ]}t          j        |           V  dS r   r   r    s     r   r#   zBTestBokehViolinPlot.test_violin_inner_quartiles.<locals>.<genexpr>G   s2      KKQbmFa000KKKKKKr$   r&   c              3   v   K   | ]3}t          j        t          j        |z
                               V  4d S r+   r   argminabsr!   vrC   s     r   r#   zBTestBokehViolinPlot.test_violin_inner_quartiles.<locals>.<genexpr>H   s>      HHab26"Q$<<001HHHHHHr$   r9   )r   rE   rF   r   rG   r   r,   r   rN   rT   rP   rH   rO   rU   array)r   rV   r.   ra   rb   rX   rY   rZ   r?   r@   y2r"   rC   s              @@r   test_violin_inner_quartilesz/TestBokehViolinPlot.test_violin_inner_quartiles?   s   $$$$;$77V+++!!!$$&v..0$,???\"45
KKKK%3r:J:JKKK
BHHHHBB<HHH
B-rxR/E/EFFFFFr$   c                    t           j                            d          }t          |                              d          }t          |d          }|                    d          t          j        |          }| 	                    d|j
                   t          j        fd|D                       }|                     |j
        d	         j        d
         |           d S )Nr   stickrx   r'   r(   r   rz   c           	      n    g | ]1}t          j        t          j        |z
                               2S r2   r}   r   s     r   r6   z?TestBokehViolinPlot.test_violin_inner_stick.<locals>.<listcomp>R   s4    IIIQR	"&A,, 7 78IIIr$   r>   r9   )r   rE   rF   r   rG   r   r,   r   rN   rT   rP   r   rO   rU   )r   r"   rV   r.   ra   segmentsrC   s         @r   test_violin_inner_stickz+TestBokehViolinPlot.test_violin_inner_stickK   s    $$$$7$33V+++!!!$$&v..0$,???8IIII&IIIJJ&89>sC!	# 	# 	# 	# 	#r$   c                 r   t          t          j                            ddd          t          j                            d          fdg                                          }|                    d          \  }}t          j        |          }| 	                    |j
        d         j        dd	g           d S )
Nr   r/   r   rg   )kdimsr
   r:   0rp   )r   r   rE   randintrF   sortrH   r   rN   rO   rP   rQ   )r   rV   r_   r`   ra   s        r   test_violin_multiz%TestBokehViolinPlot.test_violin_multiV   s    **1a55ry~~c7J7JKTWSXYYY^^``aB&v..i083*EEEEEr$   c                    t          g           }t          j        |          }|j        d         }|                     |j        d         g g           |                     |j        d         t          j        g           g           d S )NrB   rC   rD   )r   r   rN   rP   rO   rU   r   r   )r   rV   ra   rd   s       r   test_violin_emptyz%TestBokehViolinPlot.test_violin_empty\   sx    &v..|$67*402$777*4028B<<.AAAAAr$   c                     dgdgd}t          |dd                              d          }t          j        |          }|                     |j        d         j        d	g           d S )
Nr
   r8   r9   r5   )rU   r   vdimsrt   rx   r:   rp   )r   rG   r   rN   rO   rP   rQ   )r   rU   rV   ra   s       r   test_violin_single_pointz,TestBokehViolinPlot.test_violin_single_pointc   sp    Ss##TC888==E=JJ&v..i083%@@@@@r$   c                    t          j        t          j        d          d          }t          j        t          j        d          d          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d         }|j        d	         }|                     |j	        d
         t          j        d                     | 
                    |t                     |                     |j        d           |                     |j        d           |                     t          |j                  d
|d           d S )Nr'   r&   abdviolin_colorrB   violin_color_color_mapperpatches_1_glyphr   r      field	transformr   repeataranger   rG   r   rN   rP   rO   rU   
assertTruer   lowhighr   
fill_colorr   r   r   rV   ra   sourcecmapperglyphs           r   test_violin_linear_color_opz/TestBokehViolinPlot.test_violin_linear_color_opn   s<   IbillA&&IbillA&&Ary}}-Sz3??DDRUDVV&v..01,:;./^4billCCC!2333a(((q))))%*:;;~dk=l=lmmmmmr$   c                    t          j        t          j        d          d          }t          j        g dd          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d	         }|j        d
         }|                     |j	        d         |d d d                    | 
                    |t                     |                     |j        g d           |                     t          |j                  d|d           d S )Nr'   rg   rh   CDEr&   r   r   r   r   rB   r   r   r   r   r   r   r   r   rG   r   rN   rP   rO   rU   r   r   rQ   r   r   r   r   r   rV   ra   r   r   r   s           r    test_violin_categorical_color_opz4TestBokehViolinPlot.test_violin_categorical_color_op|   s,   IbillA&&I///33Ary}}-Sz3??DDRUDVV&v..01./,:;^4a!f===!7888*C*C*CDDD)%*:;;~dk=l=lmmmmmr$   c                 <   t          j        t          j        d          d          }t          j        t          j        d          dz  d          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d	         }|                     |j	        d
         t          j        d          dz             |                     t          |j                  dd
i           d S )Nr'         $@r&   r   r   r   )violin_alpharB   r   r   r   r   r   r   r   rG   r   rN   rP   rO   rU   r   
fill_alphar   r   r   rV   ra   r   r   s          r   test_violin_alpha_opz(TestBokehViolinPlot.test_violin_alpha_op   s    IbillA&&Ibill3&**Ary}}-Sz3??DDRUDVV&v..01./^4bill36FGGG)%*:;;g~=VWWWWWr$   c                 0   t          j        t          j        d          d          }t          j        t          j        d          d          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j	        d	         t          j        d                     |                     t          |j                  d
d	i           d S )Nr'   r&   r   r   r   )violin_line_widthmulti_line_1_sourcemulti_line_1_glyphoutline_line_widthr   r   r   r   r   rG   r   rN   rP   rO   rU   r   
line_widthr   s          r   test_violin_line_width_opz-TestBokehViolinPlot.test_violin_line_width_op   s    IbillA&&IbillA&&Ary}}-Sz3??DDWZD[[&v..3412%9:BIaLLIII)%*:;;gG[=\]]]]]r$   c                 R   t          j        t          j        d          d          }t          j        t          j        d          d          }t          ||t          j        d          fddgd                              t          d          dk              }t          j        |          }|j        d         }|j        d	         }|j        d
         }g d}| 	                    |j
        d         |           | 	                    t          |j                  d|d           d S )Nr'   r&   r   r   r   r/   splitrB   r   violin_color_mapper)
FalseTruer   r   r   r   r   r   r   r   z
dim('b')>2r   )r   r   r   r   rG   r	   r   rN   rP   rO   rU   r   r   )	r   r   r   rV   ra   r   r   r   r"   s	            r   test_violin_split_op_multiz.TestBokehViolinPlot.test_violin_split_op_multi   s   IbillA&&IbillA&&Ary}}-Sz3??DD3s88TU:DVV&v..01./,45fff\2F;;;)%*:;;|bi=j=jkkkkkr$   c                    t          j        t          j        d          d          }t          |t          j        d          fdgd                              d          }t          j        |          }|j        d         }|j        d         }|j        d	         }|                     |j	        d
         ddg           |                     t          |j                  d
|d           d S )Nr/   r'   rk   r   r   r   rB   r   r   zdim('a')r   rp   r   )r   r   r   r   rG   r   rN   rP   rO   rU   r   r   )r   r   rV   ra   r   r   r   s          r   test_violin_split_op_singlez/TestBokehViolinPlot.test_violin_split_op_single   s    IbillA&&BIbMM*SE377<<3<GG&v..01./,45Z03*===)%*:;;z`g=h=hiiiiir$   c                    t          j        t          j        d          d          }t          j        t          j        d          d          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d         }|j        d	         }|                     |j	        d
         t          j        d                     | 
                    |t                     |                     |j        d           |                     |j        d           |                     t          |j                  d
|d           d S )Nr'   r&   r   r   r   	box_colorvbar_1_sourcebox_color_color_mappervbar_1_glyphr   r   r   r   r   r   s           r   test_violin_box_linear_color_opz3TestBokehViolinPlot.test_violin_box_linear_color_op   s9   IbillA&&IbillA&&Ary}}-Sz3??DDsDSS&v..o.,78^,[129Q<<@@@!2333a(((q))))%*:;;{ah=i=ijjjjjr$   c                    t          j        t          j        d          d          }t          j        g dd          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d	         }|j        d
         }|                     |j	        d         |d d d                    | 
                    |t                     |                     |j        g d           |                     t          |j                  d|d           d S )Nr'   r   r&   r   r   r   r   r   r   r   r   r   r   r   s           r   $test_violin_box_categorical_color_opz8TestBokehViolinPlot.test_violin_box_categorical_color_op   s)   IbillA&&I///33Ary}}-Sz3??DDsDSS&v..o.^,,78[11SSqS6:::!7888*C*C*CDDD)%*:;;{ah=i=ijjjjjr$   c                 <   t          j        t          j        d          d          }t          j        t          j        d          dz  d          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d	         }|                     |j	        d
         t          j        d          dz             |                     t          |j                  dd
i           d S )Nr'   r   r&   r   r   r   )	box_alphar   r   r   r   r   r   s          r   test_violin_box_alpha_opz,TestBokehViolinPlot.test_violin_box_alpha_op   s    IbillA&&Ibill3&**Ary}}-Sz3??DDsDSS&v..o.^,[129Q<<3CDDD)%*:;;g{=STTTTTr$   c                 0   t          j        t          j        d          d          }t          j        t          j        d          d          }t          ||t          j        d          fddgd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j	        d	         t          j        d                     |                     t          |j                  d
d	i           d S )Nr'   r&   r   r   r   )box_line_widthr   r   r   r   r   r   s          r   test_violin_box_line_width_opz1TestBokehViolinPlot.test_violin_box_line_width_op   s    IbillA&&IbillA&&Ary}}-Sz3??DDTWDXX&v..o.^,%56	!EEE)%*:;;gGW=XYYYYYr$   )__name__
__module____qualname__r   re   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r      si           > > >@W W W
G 
G 
G	# 	# 	#F F FB B BA A An n nn n nX X X^ ^ ^
l 
l 
lj j jk k kk k kU U UZ Z Z Z Z Z Zr$   r   )unittestr   numpyr   bokeh.modelsr   r   holoviews.elementr   holoviews.operation.statsr   holoviews.plotting.bokeh.utilr   holoviews.util.transformr	   	test_plotr   r   r   r2   r$   r   <module>r      s              B B B B B B B B $ $ $ $ $ $ 4 4 4 4 4 4 : : : : : : ( ( ( ( ( ( 4 4 4 4 4 4 4 4RZ RZ RZ RZ RZ- RZ RZ RZ RZ RZr$   