
    e&\                        d dl mZ d dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZmZ dd
lmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/  G d de!          Z0 G d de'          Z1 G d dee$e#e%          Z2 G d de2          Z3dS )    )defaultdict)partialN)CircleFactorRangeHBarVBar   )	NdOverlay)	DimensionDimensioned)sorted_context)dimension_sanitizeris_cupy_arrayis_dask_arrayisfiniteunique_iterator
wrap_tuple)univariate_kde)dim   )MultiDistributionMixin   )AreaPlot)ColorbarPlotCompositeElementPlot
LegendPlot)PolygonPlot)BokehOverlaySelectionDisplay)base_propertiesfill_propertiesline_properties)decode_bytesc                       e Zd ZdZ ej        dd          Z ej        dd          Z ej        dd          Z	 e
            ZdS )	DistributionPlotzH
    DistributionPlot visualizes a distribution of values as a KDE.
    N>
        The bandwidth of the kernel for the density estimate.defaultdocr	   D
        Draw the estimate to cut * bw from the extreme data points.T9
        Whether the bivariate contours should be filled.)__name__
__module____qualname____doc__paramNumber	bandwidthcutBooleanfilledr   selection_display     >lib/python3.11/site-packages/holoviews/plotting/bokeh/stats.pyr$   r$      s          T 0A B B BI %,q 'G H H HC U]4 .< = = =F 5466r7   r$   c                       e Zd ZdZ ej        dd          Z ej        dd          Z ej        dd          Z	 ej
        d	eefd
          Z edd          ZdS )BivariatePlotz
    Bivariate plot visualizes two-dimensional kernel density
    estimates. Additionally, by enabling the joint option, the
    marginals distributions can be plotted alongside each axis (does
    not animate or compose).
    Nr%   r&   r	   r)   Fr*   
   zD
        A list of scalar values used to specify the contour levels.r'   class_r(   cmapT)
color_propis_cmap)r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   ClassSelectorlistintlevelsr   r5   r6   r7   r8   r:   r:   /   s          T 0A B B BI %,q 'G H H HC U]5 /< = = =F !U T3K FG H H HF 54PTUUUr7   r:   c                   >    e Zd Z ej        dd          Z ej        deefdd          Z	e
Zdd	d	d
dZd eez   D             d eez   ez   D             z   d eez   D             z   g dz   Zeg dz   ZdZ ed          ZddZd fd	Zd Z fdZd Zd Z xZS )BoxWhiskerPlotFz-
        Whether to show legend for the plot.r&   NTzR
        Deprecated in favor of color style mapping, e.g. `box_color=dim('color')`r'   r=   
allow_Noner(   whiskerboxoutlier)segmentvbarhbarcirclec                     g | ]}d |z   S )whisker_r6   .0ps     r8   
<listcomp>zBoxWhiskerPlot.<listcomp>W       IIIA:a<IIIr7   c                     g | ]}d |z   S )box_r6   rR   s     r8   rU   zBoxWhiskerPlot.<listcomp>X   s    UUU6!8UUUr7   c                     g | ]}d |z   S )outlier_r6   rR   s     r8   rU   zBoxWhiskerPlot.<listcomp>Y   rV   r7   )	box_widthr>   box_cmap)r[   whisker_widthr>   r\   	box_colorr?   c                 j    t          ||          }| j        r|j        s| j        rd}|j        ||<   |S )N)sourcelegend_label)dictshow_legendkdimsoverlaidlabel)	selfplotelementra   rangesstylegroup
propertieslegend_props	            r8   _glyph_propertiesz BoxWhiskerPlot._glyph_propertiesb   sH    %///
 	4GM 	4dm 	4(K&-mJ{#r7   c                 D   |j         dk    r!|                    t          j                  }nO|                    t          j                  }t	          |t
                    r|}n|                    |fg          }t                                          |||||          S )Nr   )function)	ndims	aggregatenpmean
isinstancer   clonesuper_apply_transforms)rh   rj   datark   rl   rm   agg	__class__s          r8   rz   z BoxWhiskerPlot._apply_transformsi   s    =1'''99GG##RW#55C#{++ 2!--#11ww(($uMMMr7   c                 ,   j         sj        gg }}nsd                     j                   j                                        D             }j        dk    rt          |          }fd|D             }d |D             }|g }}| j        r||fn||fS )3
        Get factors for categorical axes.
        c                     g | ]}|S r6   r6   rS   keys     r8   rU   z/BoxWhiskerPlot._get_factors.<locals>.<listcomp>{   s    QQQssQQQr7   r   c           	      h    g | ].}t          d  t          j        |          D                       /S )c              3   F   K   | ]\  }}|                     |          V  d S Npprint_valuerS   dks      r8   	<genexpr>z9BoxWhiskerPlot._get_factors.<locals>.<listcomp>.<genexpr>~   s2      SS41aQ^^A..SSSSSSr7   )tuplezipre   )rS   r   rj   s     r8   rU   z/BoxWhiskerPlot._get_factors.<locals>.<listcomp>~   sL     + + + SS3w}c;R;RSSSSS + + +r7   c                 H    g | ]}t          |          d k    r|d         n| S r   r   lenrS   fs     r8   rU   z/BoxWhiskerPlot._get_factors.<locals>.<listcomp>   .    CCCas1vv{{qttCCCr7   )re   rg   groupbyr{   keysrs   sortedinvert_axes)rh   rj   rk   xfactorsyfactorsfactorss    `    r8   _get_factorszBoxWhiskerPlot._get_factorst   s     } 		-")-"hHHQQgoogm&D&D&I&N&N&P&PQQQG}q   //+ + + +")+ + +GCC7CCCG!("hH'+'7Q(##h=QQr7   c                     t          |j        t          t          t          f          sd S t                                          ||           d S r   )rw   glyphr   r   r   ry   _postprocess_hover)rh   rendererra   r}   s      r8   r   z!BoxWhiskerPlot._postprocess_hover   sC    (.64*>?? 	F""8V44444r7   c                    t           }t                    }t                    }|rdd l}|j        |j         }n|rdd lm} |j        nt          j         |                   |st                    rfdt          ddd          D             \  }}}	|	|z
  }
t          |	d|
z  z   k             
                                |	          }t          |d|
z  z
  k                                             |          }nd\  }}}	d\  }}|k    |k     z           }|ru|                                |                                |	                                |                                |                                |                    |          fS |r|                    |||	|||          S |||	|||fS )Nr   c              3   2   K   | ]} |           V  dS )qNr6   )rS   r   
percentilevalss     r8   r   z,BoxWhiskerPlot._box_stats.<locals>.<genexpr>   s2      LLA**TQ///LLLLLLr7      d   g      ?)r   r   r   )r   r   )r   r   r   cupyr   
dask.arrayarrayru   r   rangemaxminitemasnumpycompute)rh   r   	is_finiteis_daskis_cupyr   daq1q2q3iqrupperloweroutliersr   s    `            @r8   
_box_statszBoxWhiskerPlot._box_stats   s   	%%%% 	'KKKJII 	'######JJJIIdOO$ 	 c$ii 	 LLLLLr39K9KLLLJBBr'CTR#c'\126688"==ETR#c'\126688"==EE JBBLE5$,78 	6GGIIrwwyy"''))UZZ\\JJLL$,,x"8"8: : 	6::b"b%AAAr2ueX55r7   c                    |j         rGt          d          5  |                    |j                   j        }d d d            n# 1 swxY w Y   nt	          |j        |fg          }t          |j        d         j                  }d t          d          D             \  }}d t          d          D             \  }}	d t          d          D             \  }
}t          t          dg |g i          }|                    dd	          }|                    d
d          dz  }d|v r| j                            d           | j        rddd|d}ddddd}d|d}nddd|d}ddddd}d|d}t	          |          }| j        5|                    | j                  }|                    | j                  }nd\  }}g }|j        d         j        }|                                D ]{\  }}|j         rHt+          d t-          |j         |          D                       }t/          |          dk    r|d         }n|}d| j        v }|G||j        k     r<|                    |                    t9          |          |                              n|                    |           |j                            ||d          }|                     |          \  }}}}}} ||fD ]}!|!d                             |           ||	fD ]8}!|!d                             |           |!d                             |           9|
|fD ][}!|!d                             t9          |          | fz              |!d                             t9          |          |fz              \|d                             |           |d                             |           |d                             |           |d                             |           |d                             |           |	d                             |           |d                             |           |	d                             |           |
d                             |           |
d                             |           |d                             |           |d                             |           t/          |           r|dxx         |gt/          |           z  z  cc<   ||xx         t          |           z  cc<   |r[t-          |j         t9          |                    D ]8\  }"}#|t          |"j                  xx         |#gt/          |           z  z  cc<   9|rt-          |j         t9          |                    D ]e\  }"}#t          |"j                  }$|$|v r||$                             |#           n|#g||$<   |$|v r||$                             |#           _|#g||$<   f||v r||                             |           n|g||<   ||v r||                             |           u|g||<   }| j        rd nd!}%|%d"z   ||%d#z   |d$|d%|	d&|
d'|d(|i}!|%d"z   ||%d#z   |d$|d%|d&|d'|d(|i}&||||	|fD ]3}'|'                                D ]\  }#}(tA          j!        |(          |'|#<   4|j         s|!|&|fS |||j        k    rtE          d          }nJ||t          |j                  <   ||t          |j                  <   t          tG          |                    }| j$        r
|j        |d)<   |!|&|fS )*NFr   c              3   "   K   | ]
}g g g d V  dS ))indextopbottomNr6   rS   is     r8   r   z*BoxWhiskerPlot.get_data.<locals>.<genexpr>   s,      UUqbrBBUUUUUUr7   r   c              3   $   K   | ]}g g g g d V  dS )x0y0x1y1Nr6   r   s     r8   r   z*BoxWhiskerPlot.get_data.<locals>.<genexpr>   .      WW2RrDDWWWWWWr7   c              3   $   K   | ]}g g g g d V  dS r   r6   r   s     r8   r   z*BoxWhiskerPlot.get_data.<locals>.<genexpr>   r   r7   r   r[   gffffff?r]   g?g       @widthz>BoxWhisker width option is deprecated use 'box_width' instead.r   r   yleftrightheightr   r   r   r   r   r   r   r   )r   x)r   r   r   r   r   r   r   r   r   r   )NNc              3   F   K   | ]\  }}|                     |          V  d S r   r   )rS   r   vs      r8   r   z*BoxWhiskerPlot.get_data.<locals>.<genexpr>   s2      TTDAqannQ//TTTTTTr7   r   hover)r   rN   rM   _1_2	segment_1	segment_2	segment_3	segment_4circle_1legend_field)%re   r   r   r{   rc   rg   r   vdimsnamer   r   rB   getpopr/   warningr   color_indexget_dimensionget_dimension_indexitemsr   r   r   handlesrs   appendr   r   	interfacevaluesr   ru   r   r   r   rd   ))rh   rj   rk   rl   groupsvdimr1_datar2_datas1_datas2_dataw1_dataw2_dataout_datar   r]   vbar_mapseg_mapout_map	vbar2_mapcdimcidxr   r   grg   r   r   r   r   r   r   r   r   r{   kdr   kd_name	bar_glyphmappinggdatar   s)                                            r8   get_datazBoxWhiskerPlot.get_data   s   = 	6&& = = 77<= = = = = = = = = = = = = = = GM73455F"7=#3#899 VUERSHHUUUWWeTUhhWWWWWeTUhhWWWtgr4%<== 		+s++		/377:eJ  : ; ; ; 	0$ehRWXXH!TFFG#$//GG$UhQVWWH!TFFG#$//GNN	 '(()9::D..t/?@@DD#JD$}Q$llnn A	) A	)FC} TTCs<S<STTTTTu::??!!HEt|+E D$6$6t00C1FGGHHHHu%%% ;%%au%==D151F1F.BBuh !'* , ,W$$U++++ '* ) )T
!!%(((T
!!%(((( '* F FT
!!*U"3"3m^4E"EFFFT
!!*U"3"3]4D"DEEEEEN!!"%%%EN!!"%%%H$$R(((H$$R(((DM  '''DM  '''DM  $$$DM  $$$DM  '''DM  '''DM  '''DM  '''8}} T!!!eWS]]%::!!!$x..0 T!$W]JsOO!D!D T TA !4RW!=!=>>>1#c(mmBSS>>>> ) 
3@@ 	/ 	/EB1"'::G'))(//2222,-3('))(//2222,-3((7??DM((,,,,%'DGDM7??DM((,,,,%'DGDM #.:FFF	dNGYt^Wk7+wW
 dNHinig+wW
 w(C 	, 	,E"[[]] , ,	68F++a, } 	(%'' <4..W%%DD6=G'	2236=G'	223?73344G 	1'+yH^$We##s    AA
Ar   )r+   r,   r-   r/   r3   rd   rA   strrC   r   r   _x_range_type_style_groupsr   r!   r    
style_opts_nonvectorized_styles_stream_datar   r5   rp   rz   r   r   r   r  __classcell__)r}   s   @r8   rF   rF   F   s       %- 40 1 1 1K
 &%%dC:15 <UV V VK
  M !*5%S\]]MII)HIIIUU__%D_%TUUUVII)HIIIJ 4334J
 ,.`.`.``L44LLL   	N 	N 	N 	N 	N 	NR R R 5 5 5 5 5
 6  6  6DK$ K$ K$ K$ K$ K$ K$r7   rF   c                      e Zd Z ej        dd          Z ej        ddd          Z ej        dd          Z ej	        g d	d
d          Z
 ej        deefd          Z ej        dd          Z ej        deefdd          Zdddd
dd
dZg dZd eez   ez   D             d eez   D             z   d dD             z   g dz   Zd d D             Z ed!"          Zd# Zd$ Zd% Zd& ZdS )'
ViolinPlotNzl
        Allows supplying explicit bandwidth value rather than relying
        on scott or silverman method.r&   r   zB
        A tuple of a lower and upper bound to clip the violin at.)r'   lengthr(      r)   )rJ   	quartilesstickNrJ   z
        Inner visual indicator for distribution values:

          * box - A small box plot
          * stick - Lines indicating each sample value
          * quartiles - Indicates first, second and third quartiles
        )objectsr'   r(   z-
       The dimension to split the Violin on.r<   g?z$
       Relative width of the violinTzU
        Deprecated in favor of color style mapping, e.g. `violin_color=dim('color')`rG   violinoutlinestatsmedian)patches
multi_linerL   rM   scatterrN   )r  r  rL   rM   rN   rO   r  c                 "    g | ]}d D ]}||z   S ))violin_rX   r6   rS   rT   r   s      r8   rU   zViolinPlot.<listcomp>b  s@     5 5 5q 35 5 7 5 5 5 5r7   c                 "    g | ]}d D ]}||z   S ))stats_outline_r6   r  s      r8   rU   zViolinPlot.<listcomp>d  s@     8 8 8q 68 8 7 8 8 8 8r7   c                 &    g | ]}d D ]	}| d| 
S ))rJ   r  r  r  _r6   r  s      r8   rU   zViolinPlot.<listcomp>f  sO     F F Fa DF F >>a>> F F F Fr7   )coloralpha)r>   r\   violin_cmapc                 D    g | ]}t          t          j        |           S )r   )r   ru   r   )rS   r   s     r8   rU   zViolinPlot.<listcomp>j  s'    CCC!,,,CCCr7   )r   2   K   violin_fill_colorr_   c                     t          | j        t                    rt          | j                  n| j        fd|j        D             }||j        d         fS )Nc                 .    g | ]}r|j         k    |S r6   	dimensionrS   r   	split_dims     r8   rU   z-ViolinPlot._get_axis_dims.<locals>.<listcomp>p  +    ZZZ9ZiFY@Y@Y@Y@Y@Yr7   r   )rw   splitr  r   re   r   )rh   rj   re   r.  s      @r8   _get_axis_dimszViolinPlot._get_axis_dimsn  sT    '1$*c'B'BRC
OOO
	ZZZZgmZZZgmA&&&r7   c                    t          | j        t                    rt          | j                  n| j        fd|j        D             s|j        gg }}nnd |                              j                                        D             }|j	        dk    rt          |          }fd|D             }d |D             }|g }}| j        r||fn||fS )r   c                 .    g | ]}r|j         k    |S r6   r+  r-  s     r8   rU   z+ViolinPlot._get_factors.<locals>.<listcomp>x  r/  r7   c                     g | ]}|S r6   r6   r   s     r8   rU   z+ViolinPlot._get_factors.<locals>.<listcomp>|  s    IIIssIIIr7   r   c           	      ^    g | ])}t          d  t          |          D                       *S )c              3   F   K   | ]\  }}|                     |          V  d S r   r   r   s      r8   r   z5ViolinPlot._get_factors.<locals>.<listcomp>.<genexpr>  s2      KK41aQ^^A..KKKKKKr7   )r   r   )rS   r   re   s     r8   rU   z+ViolinPlot._get_factors.<locals>.<listcomp>  sH     + + + KK3uc??KKKKK + + +r7   c                 H    g | ]}t          |          d k    r|d         n| S r   r   r   s     r8   rU   z+ViolinPlot._get_factors.<locals>.<listcomp>  r   r7   )rw   r0  r  r   re   rg   r   r{   r   rs   r   r   )rh   rj   rk   r   r   r   re   r.  s         @@r8   r   zViolinPlot._get_factorss  s    (2$*c'B'BRC
OOO
	ZZZZgmZZZ 		-")-"hHHIIgooe&<&<&A&F&F&H&HIIIG}q   //+ + + +")+ + +GCC7CCCG!("hH'+'7Q(##h=QQr7   c                    &'( |j         }|d         } j        r( | j                  }|                    |g          }||                    |j                  }|                    |          }	t          |          dk    rCt          d                    t          |          d                    |                              |	                    t          |          t          |j                  |	          }t          |f|j        t          |          d|}
d	'nd d g}d t          |fd
|j        i|i}
d'|                    |          }g g g g f\  }}(}t          |          D ]w\  }}|
                    |          &&)t!          j        g           t!          j        g           }}n&fdt          d          D             \  }}t%          |          |dk    z  }||         ||         }}|dk    r|dz  }n|d d d         }|d d d         }|rt          |          ra|                    |d         gt)          |          z   |d         gz              |                    dgt)          |          z   dgz              n*|                    g            |                    g            |d d d         }|t)          |          z  }(t)          |          z  (yt!          j        |          }t!          j        (          (|rd |D             }' (fd|D             }t          (          r4(t!          j        t!          j        (                    z   j        'z  z  ng (fd(D             (|(d}|r||d&n|&t1          |
t2                    rd |D             &t          |          <   t5          t(                    t5          t(                    i }}}|                    |          }|t%          |                   }t          |          snS j        dk    rt          |          r j        D ]} ||          }t!          j        t!          j        ||z
                      }||         (|         }}|d                             |           |d                             |d          fz              |d                             |           n j        dk    rt          |          r|D ]}t!          j        t!          j        ||z
                      }||         (|         }}|d                             |           |d                             |d          fz              |d                             |           n؉ j        dk    r͉dz   }                     |          \  } }!}"}#}$}%|d                             |           |d                             |$           |d                             |#           |d                             |           |d                             |            |d                             |"           ||d<   |!|d<   &||||fS )Nr   )r   )r   )re   r   zaThe number of categories for split violin plots cannot be greater than 2. Found {} categories: {}z, )r,  r      r,  c              3   B   K   | ]}                     |          V  d S r   )dimension_values)rS   idimkdes     r8   r   z'ViolinPlot._kde_data.<locals>.<genexpr>  s1      LL4C0066LLLLLLr7   c                 6    g | ]}t          j        |          S r6   )ru   asarray)rS   r   s     r8   rU   z(ViolinPlot._kde_data.<locals>.<listcomp>  s     666rz!}}666r7   c                     g | ]S}t          |          r@fd |t          j                                                  z  j        z  z  D             ng TS )c                     g | ]}|fz   	S r6   r6   rS   r   r   s     r8   rU   z3ViolinPlot._kde_data.<locals>.<listcomp>.<listcomp>  s    \\\qqd
\\\r7   )r   ru   absr   violin_width)rS   fyr   scalerh   yss     r8   rU   z(ViolinPlot._kde_data.<locals>.<listcomp>  ss     = = =.0#b''*\\\\Rr

0@0@-@4CTUZCZ,[\\\\')= = =r7   c                     g | ]}|fz   	S r6   r6   rC  s     r8   rU   z(ViolinPlot._kde_data.<locals>.<listcomp>  s    %%%QcQDj%%%r7   )rH  xsc                 ,    g | ]}t          |          S r6   r  )rS   r   s     r8   rU   z(ViolinPlot._kde_data.<locals>.<listcomp>  s    #?#?#?qCFF#?#?#?r7   r  r   r   r   r  rJ   r   r   r   r   ) r   cliprx   re   applyr   
ValueErrorformatjoinadd_dimensionreprr   r   r   	enumerater   ru   r   r   r   rB   nanmaxrD  rE  rw   r
   r   r;  inner	_stat_fnsargminr   ))rh   rj   elr   r.  
split_catskwargsr   r   all_catskdesx_rangerJ  fill_xsfill_ysr   cat_xs_ysmasklinebarssegmentsr  r   stat_fnstatsidxsxsyvaluexposr   r   r   r   r   r!  r=  rG  rH  s)   `  `                                  @@@r8   	_kde_datazViolinPlot._kde_data  s   Qx9 	(4di(((D''B ..B r**H:"" >>DfJ:)>)>?@ ?@A A A !!$y//3rx==(KKB!"]	4	??]]V\]]DEEJ.KKtyKFKKLDE((4..#%r2r> GR
++ 	 	FAs((3--C{8B<<"SLLLL588LLLSC==CE*D4y#d)CAvvr	$$B$i$$B$i 's88 'NNGAJ<S		#972;-#GHHHNNA3tCyy=!#45555NN2&&&NN2&&&dddmG$s))OB$s))OBBXb\\Xb\\  	=66g666G= = = = = = =4;= = =GEHWWTb26"::&&&):5)@AART%%%%"%%%## 	 00CCCdI&& 	@#?#?J#?#?#?CY "-d"3"3[5F5Fh$$T**(()6{{ 	Z;&&2ww .#~ . .G"76??D9RVBtG__55DXr$xBSM((,,,TN))#2wj.999TN))"----Z7""2ww .# . .E9RVBuH%5%566DXr$xBSM((,,,TN))#2wj.999TN))"----Z5  t8D*.//&*A*A'BBuaSM  &&&TN!!%(((TN!!%(((IT"""N!!"%%%Kr"""GCLGCLD(D'11r7   c           	      $	  ! t          | j        t                    rt          | j                  n| j        !!fd|j        D             }|rBt          d          5  |                    |          j        }d d d            n# 1 swxY w Y   nt          |j	        f|fg          }!ro!j
        j        }||v r-!j        s&d||         v r||                             d          }n4!r/t          t          !                    |                              }nd }| j        r.ddddd}d	d
d}	| j        dk    rddddd}
nddddd}
ddd}d}n-ddddd}d
d	d}	| j        dk    rddddd}
nddddd}
ddd}d}| j        | j        d}i i }}d t+          d          D             \  }}}}}|                                D ]v\  }}t/          |          }|j        r,t1          d t3          |j        |          D                       } | j        |||!|fi |\  }}}}}|                                D ]\  }}||xx         |z  cc<   |                                D ]\  }}||xx         |z  cc<   |                                D ] \  }}||                             |           !|                                D ] \  }}||                             |           !|                                D ]C\  }}!r!|D ]}||                             |           (||                             |           Dx||d<   |	|d<   ||d<   |	|d<   |r&d |                                D             |d<   |
|d<   |r,d |                                D             ||dz   <   |||dz   <   |r&d  |                                D             |d!<   ||d!<   !rcd" |D             }|                     !||t          |          d#d$|%          } t;          !          | d&|d'<   | j        rt;          !          |	d(<   |                                D ]C}|                     d)          r,|!                    |          ||"                    d$d*          <   Dd+|d,<   |||fS )-Nc                 .    g | ]}rj         |k    |S r6   r+  r-  s     r8   rU   z'ViolinPlot.get_data.<locals>.<listcomp>  s,    ZZZ9Z	@SWY@Y@Y@Y@Y@Yr7   Fr   r   r   r   g?r   rH  rJ  )rJ  rH  rJ   r   r   r   r   r   rN   )r   r   r   r   r   rM   )r1   r2   c              3   >   K   | ]}t          t                    V  d S r   )r   rB   r   s     r8   r   z&ViolinPlot.get_data.<locals>.<genexpr>  sC       A
 A
"#KA
 A
 A
 A
 A
 A
r7   r  c              3   F   K   | ]\  }}|                     |          V  d S r   r   r   s      r8   r   z&ViolinPlot.get_data.<locals>.<genexpr>#  s2      RR$!QANN1--RRRRRRr7   multi_line_1	patches_1c                 x    i | ]7\  }}|t          |d          t                    r|nt          j        |          8S rM  rw   r   ru   r   rS   r   r   s      r8   
<dictcomp>z'ViolinPlot.get_data.<locals>.<dictcomp>;  sM     !? !? !?%)Q "#AaD%)@)@$QAAbhqkk !? !? !?r7   r   c                 x    i | ]7\  }}|t          |d          t                    r|nt          j        |          8S rM  rx  ry  s      r8   rz  z'ViolinPlot.get_data.<locals>.<dictcomp>?  sT     $B $B $B(,1 %&JqtU,C,C'TqqRS $B $B $Br7   r   c                 x    i | ]7\  }}|t          |d          t                    r|nt          j        |          8S rM  rx  ry  s      r8   rz  z'ViolinPlot.get_data.<locals>.<dictcomp>C  sS     !C !C !C%)Q "#AaD%)@)@$QAAbhqkk !C !C !Cr7   	scatter_1c                 ,    g | ]}t          |          S r6   rL  )rS   r   s     r8   rU   z'ViolinPlot.get_data.<locals>.<listcomp>H  s    222!s1vv222r7   violin_color_mapperr  )r   rm   r   )field	transformr(  r   violin_liner  r   violin_line_width)#rw   r0  r  r   re   r   r   r{   rc   rg   r,  r   opsr   rB   r   rO  r   rW  r1   r2   r   r   r"   r   r   rp  r   _get_colormapperrT  rd   copy
startswithr   replace)"rh   rj   rk   rl   re   r   
split_namer[  bar_mapkde_mapr   scatter_mapr  r\  r  r{   kde_data	line_dataseg_databar_datascatter_datar   r   r=  rf  segsrg  r  r   r   r   r   cmapperr.  s"                                    @r8   r  zViolinPlot.get_data  sH   '1$*c'B'BRC
OOO
	ZZZZgmZZZ 	9&& 5 5 //45 5 5 5 5 5 5 5 5 5 5 5 5 5 5 W],g6788F 	",1JV##IM#i6R\K]>]>]#J/33I>>

 M!/)//'2J2J"K"KLL
J  	 %6 6G!..GzU""!%TCHH!$Ct4HH ##..KII8#c3 3G!..GzU""!$Ct4HH!$Ct4HH ##..KI#~dh??BA
 A
',QxxA
 A
 A
=)Xx llnn 	- 	-FCs##C} SRR#gmS:Q:QRRRRR-;T^CJ. .:@. .*CtT7 

 ! !1q 

 ! !1q  * *1Q&&q))))

 ' '1!##A&&&&99;; - -4 -! . . **1----. QK&&t,,,,-  )^")$[& 	+!? !?-5^^-=-=!? !? !?D#*GK  	.$B $B080@0@$B $B $BD4 &-GIdN# 	/!C !C-9-?-?-A-A!C !C !CD#.GK  	:22z222G++7FDKK>S , 1 1G 48	??QX)Y)YE%& :*.y//' 	E 	EA||M** E8=		!aii)445%&!"We##s   BB	B)r+   r,   r-   r/   r0   r1   NumericTuplerN  r2   ObjectSelectorrW  rA   r  r   r0  rE  rC   r   r  _draw_orderr   r    r!   r  rX  r   r5   r1  r   rp  r  r6   r7   r8   r  r  :  sF       T 0) * * *I 5d1 ;E F F FD %,q 'G H H HC !E )L)L)L). 5  E  Ec3Z F0 1 1 1E  5< 2' ( ( (L
 &%%dC:15 <XY Y YK
 !)	 '8"$ $M \[[K5 5OO$CO$S 5 5 58 8OO$C 8 8 88F F+= F F F	F 6556J DClCCCI44@STTT' ' '
R R R$j2 j2 j2Zc$ c$ c$ c$ c$r7   r  )4collectionsr   	functoolsr   numpyru   r/   bokeh.modelsr   r   r   r   corer
   core.dimensionr   r   core.ndmappingr   	core.utilr   r   r   r   r   r   operation.statsr   util.transformr   mixinsr   chartr   rj   r   r   r   pathr   	selectionr   stylesr   r    r!   utilr"   r$   r:   rF   r  r6   r7   r8   <module>r     s   # # # # # #            8 8 8 8 8 8 8 8 8 8 8 8       4 4 4 4 4 4 4 4 , , , , , ,                . - - - - - ! ! ! ! ! ! + + + + + +       C C C C C C C C C C       3 3 3 3 3 3 E E E E E E E E E E      7 7 7 7 7x 7 7 7"V V V V VK V V V.p$ p$ p$ p$ p$+-A<Q[ p$ p$ p$h[$ [$ [$ [$ [$ [$ [$ [$ [$ [$r7   