
    e                     H   d dl mZ d dlZd dlZd dl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 dd
lmZ ddlmZ ddlmZmZmZ ddlmZm Z  ddl!m"Z"m#Z#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/  G d de$e"          Z0 G d de"          Z1 G d de#          Z2 G d de"          Z3 G d de3          Z4 G d de"          Z5 G d  d!e#          Z6 G d" d#ee6          Z7 G d$ d%ee"          Z8 G d& d'e8          Z9 G d( d)ee"e$          Z:dS )*    )defaultdictN)CategoricalColorMapperCustomJSFactorRangeRange1dWhisker)BoxSelectTool)jitter   )Dataset)dimension_name)dimension_sanitizerisfinite)interpolate_curve)dim   )	AreaMixin	BarsMixinSpikesMixin)compute_sizesget_min_distance   )ColorbarPlotElementPlot
LegendPlotOverlayPlot)BokehOverlaySelectionDisplay)base_propertiesexpand_batched_stylefill_propertiesline_propertiesmpl_to_bokehrgb2hex)categorize_arrayc                      e Zd Z ej        ddd          Z ej        dd          Z ej        de	e
fdd	          Z ej        de	e
fdd
	          Z ej        dddgd          Z ej        ddd          Z ej        ej        d          Z e            Zg dez   ez   ez   Z edd          Zeez   g dz   Zd Zd Zd ZdS )	PointPlotNr   NzK
      The amount of jitter to apply to offset the points along the x-axis.)defaultboundsdoca
        The current selection as a list of integers corresponding
        to the selected items.r(   r*   TN
        Deprecated in favor of color style mapping, e.g. `color=dim('color')`r(   class_
allow_Noner*   zK
        Deprecated in favor of size style mapping, e.g. `size=dim('size')`areawidthzU
        Deprecated in favor of size style mapping, e.g.
        size=dim('size')**2.r(   objectsr*   r   z
      Scaling factor which is applied to either the width or area
      of each point, depending on the value of `scaling_method`.zg
      Function applied to size values before applying scaling,
      to remove values lower than zero.)cmappalettemarkersizeanglescattersinglebatched)r8   r7   r9   c                    i i }}|                     | j                  }|                    dt          j        d                    }|rJt          |t                    r||v st          |t                    r| j        	                    d           d }|r| j
        r||fS d|j        z   }|dz  }|                    | j                  }	t          |	| j        | j        | j        |          }	|	:t#          |          j        }
| j        	                    |j         d|
 d           nt          j        |	          ||<   ||d<   ||fS )Nr8      zaCannot declare style mapping for 'size' option and declare a size_index; ignoring the size_index.size_r   z/ dimension is not numeric, cannot use to scale z size.)get_dimension
size_indexgetnpsqrt
isinstancestrr   paramwarningstatic_sourcenamedimension_valuesr   size_fnscaling_factorscaling_methodtype__name__pprint_label)selfelementrangesstyledatamappingsdimmsmap_keysizeseltypes              >lib/python3.11/site-packages/holoviews/plotting/bokeh/chart.py_get_size_datazPointPlot._get_size_dataF   ss   Bg$$T_55YYvrwqzz** 	jS)) 	bGmm
2s@S@SmJAB B B D 	!t) 	!= DI%U((99eT\"1"127 7 =']]+FJ$ccU[ccce e e e GENNDM%GFOW}    c                    |                     d          }| j        rdnd\  }}t          ||         ||                   }i }| j        r| j        rn|d d         \  }	}
|                    |	          ||	<   |                    |
          ||
<   |                     ||d d         |                                            |                     |||          \  }}|                    |           |                    |           | 	                    |||          \  }}|                    |           |                    |           d|v r?t          |d         t          t          f          rt          j        |d                   |d<   | j        r^| j        r,t          ||         | j        | j        d         	          |d
<   n+t          ||         | j        | j        d         	          |d<   |                     ||           |||fS )NT)labelr   r   r   r   xyr   r9   y_rangerangerg   x_rangerf   )
dimensionsinvert_axesdictrJ   r=   rL   _categorize_data_get_color_dataupdater_   rF   intfloatrD   deg2radr
   handles_get_hover_data)rS   rT   rU   rV   dimsxidxyidxrX   rW   xdimydimcdatacmappingsdatasmappings                  r^   get_datazPointPlot.get_datab   s"   !!!--#/;VVV
ddtDz222! 	HT\ 	HbqbJD$ 11$77DJ 11$77DJ!!$RaR'2D2D2F2FGGG..wFFxEx   --gvuEExEx   e
5>C< H HZg77E'N; 	E E%d4j$+,0L,C E  E  E  &d4j$+,0L,C E  E  E 	T7+++We##r`   c           	         t          t                    }|                     |          }d}t          |j                                        |          D ]y\  \  }}}|                     |d          j        }	 | j        j	        di d |	                                D              |                     |j
        d          }
|
                    t          | j                            |         }
|                     |||
          \  }}}
t          |
          }
|                                D ] \  }}||                             |           !|st          t#          t%          |                                                              }t)          |
| j        ||          \  }}d|v rd|vrd|v rd |d         D             |d<   d	}|	                    |           t-          |                                          D ]*\  }}|dk    rd}d	}||                             |           +|r>d|vr:|d                             t/          j        t          |                               d
| j        v r[t          |                                |          D ]8\  }}t7          |j                  }||                             |g|z             9{d |                                D             }d|v rddi|d<   |||
fS )NFplotc                 6    i | ]\  }}|t           j        v||S  r   _propagate_options.0kvs      r^   
<dictcomp>z.PointPlot.get_batched_data.<locals>.<dictcomp>   8     !P !P !P$!Q'(0N'N'N "#A'N'N'Nr`   rV   r9   __angler7   c                 P    g | ]#}t          j        t          |                    $S r   )rD   zeroslenr   ds     r^   
<listcomp>z.PointPlot.get_batched_data.<locals>.<listcomp>   s(    "L"L"L28CFF#3#3"L"L"Lr`   Thoverc                 >    i | ]\  }}|t          j        |          S r   )rD   concatenater   s      r^   r   z.PointPlot.get_batched_data.<locals>.<dictcomp>   s(    >>>A2>!$$>>>r`   fieldr   )r   list_updated_zordersziprW   itemslookup_optionsoptionsrH   rq   last
max_cyclesr   orderingr   r"   appendnextitervaluesr   _batched_style_optssortedrD   r   ru   rl   r   rK   )rS   rT   rU   rW   zorders
has_angleskeyelzorderel_optsrV   eldata	elmappingr   eldnvalsr~   r   r   r   	sanitizeds                        r^   get_batched_datazPointPlot.get_batched_data   s1   4  ''00 
!$W\%7%7%9%97!C!C "	6 "	6IS"v))"f55=GDJ Q Q !P !P'--// !P !P !P Q Q Q''g>>E$$S%7%788@E'+}}R'G'G$FIu ''E ,,.. $ $3Qs####   T&--//223344E25$:R3<eE EOE8%IT$9$9h$>N>N"L"LT(^"L"L"LY!
X&&&u{{}}-- " "1<<!A!%JQq!!!! 9gU22Y&&rxA'7'7888$,&& 2 2 4 4c:: 6 6DAq 3AF ; ;IO**A3u95555>>>>>")9!5IgY%%r`   ) rQ   
__module____qualname__rH   Numberr
   ListselectedClassSelectorrG   rr   color_indexrB   ObjectSelectorrO   rN   CallablerD   absrM   r   selection_displayr   r!   r    
style_optsrn   _plot_methodsr   r_   r   r   r   r`   r^   r&   r&      s       U\$y ?N O O OF uz$ -" # # #H &%%dC:15 <QR R RK %$T3*04 ;NO O OJ *U)&3:F2C/ ! ! !N "U\!I DD E E EN enRV 2+ , , ,G 5466@@@!"$346EFJ D	9===M)O;>Y>Y>YY  8!$ !$ !$H.& .& .& .& .&r`   r&   c                       e Zd Z ej        dd          Z ej        eefd          Z	 ej        de
eef          Z ej        dg d	d
          Z ej        dd          Z ej        dee
fdd          Z ej        dee
fdd          Z ej        dd          Z e            Zeez   ddgz   Zeddgz   Z ed          Zd Z fdZd Z xZS )VectorFieldPlotTz,
        Whether or not to draw arrow heads.r,   a:  
        Dimension or dimension value transform that declares the magnitude
        of each vector. Magnitude is expected to be scaled between 0-1,
        by default the magnitudes are rescaled relative to the minimum
        distance between vectors, this can be disabled with the
        rescale_lengths option.)r/   r*   g?r(   r/   mid)r   tiptailzn
        The point around which the arrows should pivot valid options
        include 'mid', 'tip' and 'tail'.r3   z~
        Whether the lengths will be rescaled to take into account the
        smallest non-zero distance between two vectors.Nzz
        Deprecated in favor of dimension value transform on color option,
        e.g. `color=dim('Magnitude')`.
        r.   zi
        Deprecated in favor of the magnitude option, e.g.
        `magnitude=dim('Magnitude')`.
        z
        Deprecated in favor of rescaling length using dimension value
        transforms using the magnitude option, e.g.
        `dim('Magnitude').norm()`.scaler5   segmentr<   c                                         | j                  }| j        }|r|r| j                            d           n/|r|}n*t          |t                    r                     |          }fdt          d          D             \  \  }}\  }}|rt          |t                    r|	                    d          }	nE
                    |          }	|t          |                   d         \  }
}| j        r|dk    r|	|z  }	| j        rt                    }|	|z  }	n<t          j        t#                              }	| j        rt                    }|	|z  }	|	S )NzfCannot declare style mapping for 'magnitude' option and declare a size_index; ignoring the size_index.c              3   B   K   | ]}                     |          V  d S Nri   )r   irT   s     r^   	<genexpr>z/VectorFieldPlot._get_lengths.<locals>.<genexpr>   s/      AA1gmmA..AAAAAAr`   r   T)flatcombinedr   )rA   rB   	magnituderH   rI   rF   rG   rj   r   applyrL   r   normalize_lengthsrescale_lengthsr   rD   onesr   )rS   rT   rU   size_dimmag_dimx0x1y0y1
magnitudes_max_magnitude	base_dists    `           r^   _get_lengthszVectorFieldPlot._get_lengths   s   ((99. 	5 	5JEF F F F  	5GG%% 	5++G44GAAAAaAAAR(2r 	4'3'' <$]]7]>>

$55g>>
#).*A*A#B:#N =) <mq.@.@!+m!;J# 4,W55	')3
W..J# 4,W55	')3
r`   c                 `     t                      j        | }|                    dd            |S )Nr   )super_glyph_propertiespop)rS   args
properties	__class__s      r^   r   z!VectorFieldPlot._glyph_properties
  s0    .UWW.5
w%%%r`   c                    |                     dd          }|                    d          }| j        rd\  }}t          j        dz  |z
  }nd\  }}|                     ||          |z  }|                    | j                  }	|                     |||d          \  }
}|                    |          }|                    |          }t          j	        |          |z  dz  }t          j
        |          |z  dz  }| j        d	k    r	||}}||}}n3| j        d
k    rd|dz  }}d|dz  }}n| j        dk    r|dz  d}}|dz  d}}||z   ||z
  }}||z   ||z
  }}d }| j        r1|dz  }|t          j	        |t          j        dz  z             |z  z
  }|t          j
        |t          j        dz  z             |z  z
  }|t          j	        |t          j        dz  z
            |z  z
  }|t          j
        |t          j        dz  z
            |z  z
  }t          j        |d          }t          j        |||g          }t          j        |d          }t          j        |||g          }|	r)|	j        |
v r t          j        |
|	j                 d          }n|	r|
                    |	j                  }||||d}t#          dddd          }|	r!||||	j        <   |                    |           |||fS )Nr   g      ?r   rc   rd   
line_color)rK   g       @r   r   r   r   g      @   r   r   r   r   r   r   r   r   r   )r   rL   rm   rD   pir   rA   r   rp   cossinpivotarrow_headstiler   rK   rC   rn   rq   ) rS   rT   rU   rV   input_scaleradsrx   ry   lenscdimr|   r}   xsysxoffsetsyoffsetsnxoffpxoffnyoffpyoffx0sx1sy0sy1scolor	arrow_lenxa1sya1sxa2sya2srW   rX   s                                    r^   r   zVectorFieldPlot.get_data  s1   ii-- ''** 	 JD$57T>DDJD$  &11+=$$T%566..w4@ / B Bx %%d++%%d++ 6$<<$R'6$<<$R':#X5E#X5EEZ5  hqj5Ehqj5EEZ6!!#A:q5E#A:q5EJU
SJU
S 	)bIRU1W--i77DRU1W--i77DRU1W--i77DRU1W--i77D'#q//C.#tT!233C'#q//C.#tT!233C 5	U**di 0!44 	)IIdi((ECs;;$4DT::: 	%E%#DONN8$$$gu%%r`   ) rQ   r   r   rH   Booleanr   r   rG   r   r   rr   rs   tuplepaddingr   r   r   r   rB   r   r   r   r   r!   r   _nonvectorized_stylesrn   r   r   r   r   __classcell__r   s   @r^   r   r      s       %- 3/ 0 0 0K $#C: <# $ $ $I "e!$UE7JKKKG E 8N8N8N&,- - -E
 $emD 7; < < <O &%%dC:15 <  K %$T3*04 ;  J &d 9& ' ' '
 5466 ?2gv5FFJ+w.??D	***M  @    
8& 8& 8& 8& 8& 8& 8&r`   r   c                       e Zd Z ej        deeef          Z ej	        g ddd          Z
 e            Zeez   ZeZeez   Z edd	          Zd
 Zd Zd ZdS )	CurvePlotr   g?r   )linearz	steps-midz	steps-prez
steps-postr  z
        Defines how the samples of the Curve are interpolated,
        default is 'linear', other options include 'steps-mid',
        'steps-pre' and 'steps-post'.)r4   r(   r*   line
multi_liner;   c                 
   | j         rdnd\  }}|                    |          j        }|                    |          j        }| j        r| j        si t          ||          |fS d| j        v rt          || j                  }||                    |          ||                    |          i}| 	                    ||           | 
                    |||f|                                           |t          ||          |fS )Nrc   rd   re   steps)interpolation)rm   rA   rK   rJ   r=   rn   r  r   rL   rv   ro   rl   )	rS   rT   rU   rV   rx   ry   rf   rg   rW   s	            r^   r   zCurvePlot.get_data^  s   #/;VVV
d!!$'',!!$'', 	-dl 	-ta1~~~u,,d((('t?QRRRG7++D117++D113T7+++dQFG,>,>,@,@AAAdQ!nnne,,r`   c                     | j         r!t          | j        j        j                  }d}n=t          | j                                                  |                                z   }d}|t          |          fS )Nprevnearest)line_policy)	r=   r   hmapr   kdimsoverlay_dimskeysrl   rn   )rS   rT   rw   r  s       r^   _hover_optszCurvePlot._hover_optsm  so    < 	$	,--D KK)..0011'2D2D2F2FFD#KTk22222r`   c                 b   t          t                    }|                     |          }t          |j                                        |          D ]\  \  }}}|                     |d          j        } | j        j	        d	i d |                                D              |                     |d          }	|	
                    t          | j                            |         }	|                     |||	          \  }
}}	|
s|
                                D ] \  }}||                             |           !t          |	| j        |d          \  }}|	                    |           |                                D ]&\  }}||                             |d                    't          |j        |          D ]4\  }}t%          |j                  }||                             |           5d |                                D             }d |                                D             }|||	fS )
Nr   c                 6    i | ]\  }}|t           j        v||S r   r   r   s      r^   r   z.CurvePlot.get_batched_data.<locals>.<dictcomp>|  r   r`   rV   r   )r   r   c                 L    i | ]!\  }}t          d  |D                       ||"S )c              3      K   | ]}|d u V  	d S r   r   )r   r   s     r^   r   z8CurvePlot.get_batched_data.<locals>.<dictcomp>.<genexpr>  s&      3319333333r`   )any)r   optvalss      r^   r   z.CurvePlot.get_batched_data.<locals>.<dictcomp>  sI     5 5 5ic433d333335T 5 5 5r`   c                 H    i | ]\  }}d dd                     ||          | S )r   r   re   )rC   r   s      r^   r   z.CurvePlot.get_batched_data.<locals>.<dictcomp>  sF     2 2 2q! D))--a33Q 2 2 2r`   r   )r   r   r   r   rW   r   r   r   rH   rq   r   r   r   r   r   r   r   r  r   rK   )rS   overlayrU   rW   r   r   r   r   r   rV   r   r   r   r   r~   r   r   r   r   rX   s                       r^   r   zCurvePlot.get_batched_datav  sk   4  ''00!$W\%7%7%9%97!C!C 	* 	*IS"v))"f55=GDJ Q Q !P !P'--// !P !P !P Q Q Q''G44E$$S%7%788@E'+}}R'G'G$FIu   ,,.. $ $3Qs#### 35$:R3<AG G GOE8X&&& % %1Qqt$$$$GM3// * *1/77	Y&&q))))*5 54::<< 5 5 52 2(002 2 2We##r`   N)rQ   r   r   rH   r   rr   rs   r  r	  r   r  r   r   r   r!   r   r   r
  rn   r   r   r  r   r   r`   r^   r  r  K  s        !e!(C;NOOOG(E( 2M 2M 2M19 @)* * *M 5466 ?2J)+o=D===M- - -3 3 3!$ !$ !$ !$ !$r`   r  c                   ~     e Zd Z eddg          Zeez   ez   dgz   Zedgz   Z	 e
d          Zd Zd fd
	Z xZS )HistogramPlotr  
fill_color)
color_propr5   	line_dashquadr   c                    | j         rt          dddd          }nt          dddd          }| j        rt          g g g           }n|j        d         }|                    d          }|j                            ||d	          }t          |d
          r|                                }t          ||d d         |dd                    }| 	                    ||           |||fS )Nrightleftr   top)r1  bottomr0  r/  )r1  r0  r/  r   T)edgescompute)
rm   rn   rJ   r  rL   	interfacecoordshasattrr4  rv   )	rS   rT   rU   rV   rX   rW   rf   r   r3  s	            r^   r   zHistogramPlot.get_data  s     	LwvAUKKKGGuQV7KKKG 		0BRr222DDa A--a00F%,,Wat,DDEui(( (Fss59EEED  w///gu%%r`   r   c                 H   |                     d          }||j                 d         \  }}t          |          rt          |d          nd}t          |          rt	          |d          nd}||f||j                 d<   t                                          |||          S )Nr   softr   )rA   rK   r   minmaxr   get_extents)	rS   rT   rU   
range_typekwargsr{   s0s1r   s	           r^   r=  zHistogramPlot.get_extents  s    $$Q''	"6*B#B<<.SQZZZQ#B<<.SQZZZQ%'Hty&!ww""7FJ???r`   )r   )rQ   r   r   r   r   r   r    r!   r   r
  rn   r   r   r=  r  r  s   @r^   r)  r)    s        44,@WXXX ?2_DxOJ+{m;D'''M& & &"@ @ @ @ @ @ @ @ @ @r`   r)  c                        e Zd Zej        dgz   Z ej        dd          Z ej        dd          Z ej	        dd          Z
 ej        g dd	          Zd
Z fdZd Z fdZ xZS )SideHistogramPlotr5   }   zThe height of the plotr,   zThe width of the plotFz+
        Whether to display the plot title.)savepan
wheel_zoombox_zoomresetz*A list of plugin tools to use on the plot.z
    color_mapper.low = cb_obj['geometry']['{axis}0'];
    color_mapper.high = cb_obj['geometry']['{axis}1'];
    source.change.emit()
    main_source.change.emit()
    c                      t                      j        |i | | j        r| j                            d           d S | j                            d           d S )Nybox_selectxbox_select)r   __init__rm   default_toolsr   )rS   r   r?  r   s      r^   rM  zSideHistogramPlot.__init__  sd    $)&))) 	5%%m44444%%m44444r`   c                 &   t                               | |||          \  }}}d | j                            d           D             }|r|d         nd }|                     ||i i           }|rd }	t          |t                    r@|                    |          r*|j        j	        }
| j
        rg n|                    |          }	n;||                                v r%|j	        }
| j
        rg n|                    |          }	|	|	||
<   |
|d|d<   |||fS )Nc                     g | ]}||S r   r   r   s     r^   r   z.SideHistogramPlot.get_data.<locals>.<listcomp>  s$     ( ( (A &r`   c                 6    | j                             d          S )N	color_dimru   rC   rf   s    r^   <lambda>z,SideHistogramPlot.get_data.<locals>.<lambda>  s    !)--P[B\B\ r`   r   )r   	transformr*  )r)  r   adjoinedtraverse_get_colormapperrF   r   applies	dimensionrK   rJ   r   rl   rL   )rS   rT   rU   rV   rW   rX   
color_dimsr[  cmappercvalsdim_names              r^   r   zSideHistogramPlot.get_data  sN   ,55dGVUSSgu( (!7!78\8\!]!] ( ( (
%/9JqMMT	''	7BCC 	?E)S)) Z$$W-- S(27H"&"4RBB)//':R:REg002222$>"0Yg6N6Ny6Y6Y !&X2:6=)? )?%gu%%r`   c                 2  
 t                                          |||          }d|                    di           vr|S |d         d         
| j                            d           }
fd|D             }d | j        d         j        D             }|r|sdS |d         }| j        d	         | j        d
         | j        d
         |d}| j                            | j	        rdnd          }	| j
                            dt          ||	                     |S )/
        Returns a Bokeh glyph object.
        r   r*  c                 j    | j                             d          | j                             d          fS )NrR  sourcerS  rT  s    r^   rU  z/SideHistogramPlot._init_glyph.<locals>.<lambda>  s+    AIMM+4N4N56Y]]85L5L4N r`   c                 &    g | ]\  }}|k    |S r   r   )r   r   srcr   s      r^   r   z1SideHistogramPlot._init_glyph.<locals>.<listcomp>  s"    ???9443;;3;;;r`   c                 <    g | ]}t          |t                    |S r   )rF   r	   )r   ts     r^   r   z1SideHistogramPlot._init_glyph.<locals>.<listcomp>  s6     2 2 2qq-002 2 2 2r`   r   Nr   color_mapperrc  )rh  rc  cdsmain_sourcerg   rf   )axisselectiongeometry)r   code)r   _init_glyphrC   rW  rX  ru   tools	_callbackformatrm   statejs_on_eventr   )rS   r   rX   r   retsourcesro  rj  ru   callbackr   r   s             @r^   rn  zSideHistogramPlot._init_glyph  sO    gg!!$<<'++lB7777Jl#G,-(( *N *N O O???????2 2DL06 2 2 2 	G 	Faj#'<#?!\(3,x0"-/ / >((T5E.Ncc3(OO
2H'PX4Y4Y4YZZZ
r`   )rQ   r   r   r)  r   rH   Integerheightr2   r  
show_titler   rN  rp  rM  r   rn  r  r  s   @r^   rC  rC    s        )VH4JU]3,DEEEFEM#+BCCCEu 3. / / /J EJ (= (= (=8: : :MI5 5 5 5 5& & &,        r`   rC  c                       e Zd Z ej        dd          Z e            Zd eD             ddgz   e	z   Z
e	dgz   Z edd	d
          Z ee          Zd Zd ZdS )	ErrorPlotNr+   r,   c                 L    g | ]!}|                     d           d         dv|"S )r   r   )r   	selectionnonselectionmuted)split)r   ps     r^   r   zErrorPlot.<listcomp>  sB       aggcll1o7'8 '8 '8 '8 '8r`   
lower_head
upper_headr,  baseupperlower)r  r  r  r   c                     t          | j                  }| j        ri ||fS |j        rdnd\  }}|                    |          }|                    |          }|                    d          }	t          |                                          dk    rdnd}
|                    |
          }||	z
  }||z   }|j        | j        z  rd|d<   nd|d<   t          |||          }|                     |d	|                                           |||fS )
Nrc   rd   r   r   r2   r[  rx  )r  r  r  )r  )	rn   _mappingrJ   
horizontalrL   r   rl   rm   ro   )rS   rT   rU   rV   rX   x_idxy_idxr  mean	neg_errorpos_idx	pos_errorr  r  rW   s                  r^   r   zErrorPlot.get_data  s4   t}%% 	&w%%!(!3?vvu''..''..,,Q//	7--//00144!!!,,W55	y y  00 	,#*GK  #+GK U%888dIw/A/A/C/CDDDgu%%r`   c           	      V   d |                                 D             }dD ]A}||vr|                    |          }d| }d| }||vr|||<   ||vr|| j        v r|||<   Bt          |          }| j        d         } |di t          |fi |}	|                    |	           d|	fS )ra  c                 "    i | ]\  }}d |v	||S )legendr   r   s      r^   r   z)ErrorPlot._init_glyph.<locals>.<dictcomp>8  s(    OOOtq!XQ=N=Na=N=N=Nr`   )r  alphaline_fill_r<   Nr   )r   r   r   r"   r   rn   
add_layout)
rS   r   rX   r   proppval	line_prop	fill_propplot_methodglyphs
             r^   rn  zErrorPlot._init_glyph4  s     POz'7'7'9'9OOO
& 		- 		-D:%%>>$''D&I&I
**(,
9%
**yDO/K/K(,
9%!*--
(2::d:9999::U{r`   )rQ   r   r   rH   r   r   r   r   r!   r   r   r
  rn   r  r   r   r   rn  r   r`   r^   r{  r{    s        uz$ -" # # #H 5466 "   
|$% (77J
 ,{m;twg>>>HD(((M& & &0    r`   r{  c                       e Zd Z ej        deeef          Z e	            Z
eez   ez   ZeZeZ ed          ZdZd Zd ZdS )	
SpreadPlotr  r   patchr   Fc           	         t          j        |j        j        dk    rt          j        d          nt           j        g          }t          j        |j        j        dk    rt          j        d          nt           j        g          }t          j        t          |           t          |           z  t          |           z            d         }t          j        ||          }t          j        ||          }t          j        ||          }g g }	}t          t          |||                    D ]\  }
\  }}}|
r|dd         |dd         |dd         }}}t          |          s9|t          j        ||ddd                   |gz  }|	t          j        ||ddd                   |gz  }	t          |          r<t          j        |dd                   }t          j        |	dd                   }||fS g g fS )zu
        Splits area plots at nans and returns x- and y-coordinates for
        each area separated by nans.
        Mnatr   r   Nr5  )rD   arraydtypekind
datetime64nanwherer   r  	enumerater   r   r   r   )rS   r   r  r  xnanynanr  xvalsband_xband_yr   rf   lur   s                  r^   _split_areazSpreadPlot._split_areaX  s   
 x#1E1Eu---26RSSx1AS1H1Hu---bfUVV(2,,(5//)99Xe__<LLMMaPU##&&&&R%c%&>&>?? 	4 	4LAy1a .ABB%122!""a1q66 ryAdddG,,d33FryAdddG,,d33FFv;; 	ss,,Bss,,Br6M2vr`   c                    t          dd          }|                    d          }|                    d          }|                    d          }t          |                                          dk    rdnd}|                    |          }	||z
  }
||	z   }|                     ||
|          \  }}| j        rt          ||          }nt          ||          }|||fS )Nrf   rg   re   r   r   r   r   )rn   rL   r   rl   r  rm   )rS   rT   rU   rV   rX   r  r  r  r  r  r  r  r  r  rW   s                  r^   r   zSpreadPlot.get_dataq  s    $$$((++''**,,Q//	7--//00144!!!,,W55	y y ))%>> 	,&F+++DD&F+++DWe##r`   N)rQ   r   r   rH   r   rr   rs   r  r	  r   r   r   r    r!   r   _no_op_styler
  rn   r   _stream_datar  r   r   r`   r^   r  r  K  s        !e!(C;NOOOG4466 ?2_DJL&D(((ML  2$ $ $ $ $r`   r  c                   V    e Zd Z ej        deeef          Z e	            Z
dZd ZdS )AreaPlotr  r   Fc                    t          dd          }|                    d          }t          |j                  dk    r|                    d          }n!t	          j        t          |                    }|                    d          }|                     |||          \  }}	| j        rt          |	|          }
nt          ||	          }
|
||fS )Nrf   rg   re   r   r   r   )rn   rL   r   vdimsrD   r   r  rm   )rS   rT   rU   rV   rX   r   r2  r1  band_xsband_ysrW   s              r^   r   zAreaPlot.get_data  s    $$$%%a((w}!!--a00FFXc'll++F&&q))++B<< 	.'W---DD'W---DWe##r`   N)rQ   r   r   rH   r   rr   rs   r  r	  r   r   r  r   r   r`   r^   r  r    sU        !e!(C;NOOOG4466L$ $ $ $ $r`   r  c                       e 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d	
          Z e            Zeez   ddgz   Zedgz   Z ed          Zd ZdS )
SpikesPlotg      ?zD
      The length of each spike if Spikes object is one dimensional.r,   g        z3
      The position of the lower end of each spike.Tz-
        Whether to show legend for the plot.Nr-   r.   r5   r6   r   r   c                    |                                 }i }| j        }|                     |d          j        }t	          |          dk    s| j        rg g g d}n|                    d          |d<   t          j        t	          |          |          |d<   t	          |          dk    r d|vr|                    d          |z   |d<   n|d         | j	        z   |d<   | j
        rddddd	}nddddd	}|                     ||t          |                    \  }	}
|                    |	           |                    |
           |                     ||           |||fS )
Nr   r   )rf   r   r   rf   r   r   spike_lengthr   r   )rl   positionr   r   r   rJ   rL   rD   fullr  rm   rp   rn   rq   rv   )rS   rT   rU   rV   rw   rW   posoptsrX   r|   r}   s              r^   r   zSpikesPlot.get_data  sw   !!##m""7F33;w<<1 22R00DD0033DIWs33DJ4yy1}}t!;!;$55a88<T

!$Z(99T
 	E!SDDGG 4tDDG..wULLxEx   T7+++We##r`   )rQ   r   r   rH   r   r  r  r  show_legendr   rG   rr   r   r   r   r   r!   r   r
  rn   r   r   r   r`   r^   r  r    s        5< 2G H H HL u|B -6 7 7 7H  %- 30 1 1 1K
 &%%dC:15 <QR R RK 5466 ?2fi5HHJ+vh6D	***M$ $ $ $ $r`   r  c                       e Zd ZdZ ej        dd          Z ej        dg dd          Z ej        d	g d
d          Z	 ej
        dd          Z ej
        dd          Z ej
        dd          ZdS )SideSpikesPlotzI
    SpikesPlot with useful defaults for plotting adjoined rug plot.
    Nr+   r,   top-bare)r1  r2  barer  zbottom-bareNz
        Whether and where to display the xaxis, bare options allow suppressing
        all axis labels including ticks and xlabel. Valid options are 'top',
        'bottom', 'bare', 'top-bare' and 'bottom-bare'.r3   
right-bare)r0  r/  r  z	left-barer  Nz
        Whether and where to display the yaxis, bare options allow suppressing
        all axis labels including ticks and ylabel. Valid options are 'left',
        'right', 'bare' 'left-bare' and 'right-bare'.   zDefault borders on plot2   zHeight of plotzWidth of plot)rQ   r   r   __doc__rH   r   r   r   xaxisyaxisrw  borderrx  r2   r   r`   r^   r  r    s          uz$ -" # # #H !E *? *? *?E;< < <E !E /C /C /CI9: : :E U]1*CDDDFU]2+;<<<FEM"/:::EEEr`   r  c                       e Zd ZdZ ej        dd          Z ej        dd          Z ej        de	e
fdd	          Z e            Zeez   ez   d
dgz   Zed
dgz   Z ed          ZeZeZ	 	 d fd	Zd ZddZ fdZd Zd Z xZS )BarPlotz
    BarPlot allows generating single- or multi-category
    bar Charts, by selecting which key dimensions are
    mapped onto separate groups, categories and stacks.
    TzP
       Whether the Bars should be grouped into a second categorical axis level.r,   Fz6
       Whether the bars should be stacked or grouped.Nr-   r.   	bar_widthr5   )vbarhbarr   c                    |ddd}t                                          |||||          }| j        s| j        s| j        j        dk    rz| j        s|dk    s| j        rf|dk    r`d|d<   d|d<   d|d	<   d|d
<   d|d<   d|d<   d|d<   |dk    rd|d<   d|v r|                    d          |d<   n|dk    rd|d<   d|d<   d|d<   |S )Nr   r   re   rf   rg   separator_line_widthmajor_tick_line_alpha1pxmajor_label_text_font_sizemajor_label_text_alphamajor_label_text_line_heightblackgroup_text_colornormalgroup_text_font_stylecentergroup_text_alignmajor_label_orientationgroup_label_orientationr/  middlegroup_text_baseline)r   _axis_propertiesmulti_levelstackedcurrent_framendimsrm   r   )rS   rk  r   r   r[  
ax_mappingpropsr   s          r^   r  zBarPlot._axis_properties  s7    q))J((sD)ZPP  	8 	8$:L:RUV:V:V" ;W'+s{{8H{TTWZZ,-E()-.E)* 38E././E*+45E01(/E$%-5E)*s{{,4()(E113899=V3W3W/0034/0,3()/7+,r`   c                 t    |                      ||          \  }fd|D             }| j        rg |fn|g fS )Nc                 "    g | ]}D ]}||fS r   r   )r   rf   ggvalss      r^   r   z(BarPlot._get_factors.<locals>.<listcomp>1  s*    :::E::qaV::::r`   )_get_coordsrm   )rS   rT   rU   r  r  s       @r^   _get_factorszBarPlot._get_factors.  sU    ''88u::::U:::E".?E{{UBK?r`   positivec                     g g }}t          ||          D ]a\  }}||         |         }	|dk    r
|	}
|
|z   }|}	n	|	}||z   }
|
}	|	||         |<   |                    |
           |                    |           b||fS )z
        Iterates over a x- and y-values in a stack layer
        and appropriately offsets the layer on top of the
        previous layer.
        r  )r   r   )rS   r  yvals	baselinessignbottomstopsrf   rg   baseliner2  r1  s               r^   	get_stackzBarPlot.get_stack4  s     Bu%% 	 	DAq |D)Hz!!!QhQ!!)IaLNN6"""KK}r`   c                 r     t                      j        |i |}d |                                D             S )Nc                 "    i | ]\  }}|d v	||S ))r2   r  r   r   s      r^   r   z-BarPlot._glyph_properties.<locals>.<dictcomp>L  s)    RRRA!;Q2Q2Q12Q2Q2Qr`   )r   r   r   )rS   r   r?  r  r   s       r^   r   zBarPlot._glyph_propertiesJ  s:    ))4:6::RRRRRRr`   c	                    |                      ||t          |          ||          \  }	}
d|
vrd S |
d         d         }d}d|
v r&| j        rt          |t                    r
|j        ||<   | j        s>|j        dk    r3| j        r,|
	                    |d            |	                    |d            |
                    |
           |	                                D ]\  }t          |t                    r|j        j        dv rt          ||          }vs3t                             t!          fdD                       k    r                             |           |         d<   d S )	N)factorscolorsr  rV  legend_fieldr   uifc              3   N   K   | ]}|k    t          |                   V   d S r   )r   )r   r   rW   r   s     r^   r   z*BarPlot._add_color_data.<locals>.<genexpr>d  s9      4`4`WZ^_W_W_Sc^^W_W_W_W_4`4`r`   r5  )rp   rn   r  rF   r   rK   r  r  r  r   rq   r   r  r  r$   r   r   r   )rS   dsrU   rV   r   rW   rX   r  r  r|   r}   r]  legend_propcdr   s        `        @r^   _add_color_datazBarPlot._add_color_dataN  s   ..r64;;7>v / O Ox(""F 7#K0$xD$4w 677  #'9GK | 	+11ALLd+++KKT*** 	x   [[]] 	! 	!EAr'#9:: 0rx}PU?U?U%b$//}}DG4`4`4`4`4`t4`4`4`0`0` ` `Qr"""" Q	! 	!r`   c                   +,-./0 d\  }}j         dk    rd }n| j        rd}                    d          }|j        r|j        -nI||v r/||j                                     d          r||         d         -n                    dd          -t          -          -nd}                    d          }                    d          /j        d         }| j	        d u }|r|p|n| j	        }	                    |	          }
|
r|
j        | _	        |                    d|                    d	d                    }d	|v r| j
                            d
           |                    d          }d| j        v }|di}n%                    |t          t          ddg          }|                    |j        ddi          d         \  }}| j        r0|j        d         p!|dk    rdndt%          j        |          dz
  z  +nd+|dk    r/j        dd|d}n$|dk    rd|j        +|d}n/j        |j        +|d}|
p|}fd|                                D             }|r.|s,| j	        %| j
                            d|d         z             d }|r                    |d          nd }||j        j        dv r|rt/          ||
          }|j        j        dv rd nt          |          }|/u r|rt          t/          |/                    }|^|r\| j                            t5          |                    ..fdt#          t5          |                    D             }d |D             }nd }nd\  }}t7          t                    }t7          +fd          }|                                D ]\  }}t9          |t:                    r|d         n|}|r,t9          |t<                    r|n|                    |          ,|dk    rdD ]\  }} |j         d&i |j        d         j        |i}-fd ||j                 D             }|!                    d!d|          "                    d!          }|                    /          0|                    |          }| #                    0|||          \  } }!|d         $                    |            |d         $                    |!           |/j                 $                    0           ||j                 $                    |                    |                     |re||j                 $                    |           |j        dd          D ]5}"||"j                 $                    |                    |"                     6|s| %                    ||||||||           ni|dk    r|                    /          0|                    |          },/0fd"0D             }#|d         $                    |#           ||j                 $                    |           |r |/j                 $                    0           ||&                                vr|!                    ||j         ,          }||j                 $                    |                    |                     nf|/j                 $                    |                    /                     ||j                 $                    |                    |                     |rK|dk    rE|j        dd          D ]5}"||"j                 $                    |                    |"                     6|dk    r|s| %                    ||||||||           i }$|                                D ]W\  }%}&t5          |&          dk    r|&d         |$tO          |%          <   1|&r$t%          j(        |&          |$tO          |%          <   X|                                D ]u\  }'}(d })t9          |(t<                    rtO          ||'                   })|)||'<   n3t9          |(t                    rd#|(v rtO          |(d#                   })|)|(d#<   |)	|)|$vrg |$|)<   vtO          /j                  }*|*|$v rt/          |$|*         /          |$|*<   | j)        rf|*                    |+                    d$          |+                    d          |+                    d          |+                    d	          d%           |$||fS )'NNNr   r  r  Fgroupedr   r  r2   z;BarPlot width option is deprecated use 'bar_width' instead.r5   r   	dataframe
dictionary)
group_typecontainer_typedatatyper   g{Gz?
   r   r1  r2  )rf   r1  r2  r2   r   c                 T    g | ]$\  }}d |v rt          |t                    s|v "|%S r  )rF   r   )r   r   r   rT   s      r^   r   z$BarPlot.get_data.<locals>.<listcomp>  sH     ? ? ?tq!1$Q,, 9E01W 0<r`   zaCannot declare style mapping for '%s' option and declare a color_index; ignoring the color_index.)expandedr  c                 ,    g | ]}|         d          S r  r   )r   r   styless     r^   r   z$BarPlot.get_data.<locals>.<listcomp>  s"    JJJ&)G,JJJr`   c                 Z    g | ](}t          |t                    rt          |          n|)S r   )rF   r  r#   )r   cs     r^   r   z$BarPlot.get_data.<locals>.<listcomp>  s1    TTT
1e(<(<C'!***!TTTr`   c                       ddS )Nr   )r  negativer   )r2  s   r^   rU  z"BarPlot.get_data.<locals>.<lambda>  s    V(K(K r`   ))r  )Nr   )r  r'   c                 F    g | ]}|v r                     |          nd S )r5  )index)r   r   stack_orders     r^   r   z$BarPlot.get_data.<locals>.<listcomp>  sM     "C "C "C&' ;<{:J:J+"3"3A"6"6"6PR "C "C "Cr`   _stack_orderc                 ^    g | ])}j         j        d v r|n                    |          f*S )SU)r  r  pprint_value)r   rf   gvalrz   r   s     r^   r   z$BarPlot.get_data.<locals>.<listcomp>  sO     ) ) ) ! #%(-4"7"7QQT=N=Nq=Q=QSWX ) ) )r`   r   rf   )rg   r0  r/  rx  r   ),r  r  rA   r   rK   rC   rL   r   r  r   rH   rI   ru   groupbyr   rn   logyrj   rD   log10r   r  r  r$   rV   r   r   r   rF   r  rG   r  selectadd_dimensionsortr  r   r  rl   r   r   rm   rq   r   )1rS   rT   rU   rV   	group_dim	stack_dimgroupingr{   no_cidxr   rR  r2   r5   r   r	  r   r   rX   r   style_mappingr^  r  r  rW   r  r   r  r  slcslc_ds
stack_indsr   bstsvdr   sanitized_datacolr%  rK   valr   xnamer2  r   r  r  rz   r   s1    `                                         @@@@@@r^   r   zBarPlot.get_datai  sb
   )	9=AHH\ 	1 H--a00I A'.f$$	)?)C)CI)N)N$$Y/	:%66q%@@{++KK H--a00I$$Q''}Q"d*29Oy-It?O))+66	 	.(~D 		+uyy!'<'<==eJ  : ; ; ;yy  4<' 'lGGooiG590;\/J & L LG DI
L'ABB:NB9 	jmTT		rBHRLLQRN?SFFFy   Ie!)E; ;GG""&tyF %' 'GG !Idi6TYZZG %I? ? ? ?u{{}} ? ? ? 	 	T-=-IJ  V!.q!1 2 3 3 3 DBFP(((>>>D{5((W((	::#k.%77ddT%[[Gt|||/>>??||..s7||<<JJJJeCLL6I6IJJJTTVTTT(OGV 4   K K K KLL	]]__ .	? .	?EAr"1e,,3!!A N&q#..MqqI4J4J14M4M9$$!S G GID#&RYAA"(1+*:C)@AAF"C "C "C "C+1).+A"C "C "CJ#11.!ZPPUUVdeeF0066B0066B!^^BItDDFBN))"---K&&r***O**2...(//0G0G	0R0RSSS NTY..r222"(,qrr"2 N NB M001H1H1L1LMMMM( G,,VVUD$-4gvG G G#G& Y&&((..((..) ) ) ) ) )%') ) )Z ''111TY&&r***4$ty/00444BMMOO33)))RXtDDBY^$++B,?,?	,J,JKKKKTY&&r':':4'@'@AAATY&&r':':4'@'@AAA BY..(122, B BBM(()<)<R)@)@AAAA9$$]$$$Rd%,gv? ? ?  	P 	PIC4yyA~~;?7237788 P;=>$;O;O23778  		/ 		/ID#I#s## )/>>	 )C&& )7c>>/G==	(G$.)H)H,.y) $DI..N""$4^E5JD$Q$QN5!  	ZNNS!1!17;;x;P;P%,[[%7%77;;wCWCWY Y Z Z Z w--r`   r  )r  ) rQ   r   r   r  rH   r  r  r  r   rG   rr   r   r   r   r   r    r!   r   r
  rn   r   r   _x_range_typer   _y_range_typer  r  r  r   r  r   r  r  s   @r^   r  r    s          %- 3S T T TK emE 09 : : :G
 &%%dC:15 <QR R RK 5466!O3oE'(J ,{F.CCD 0111M  MM:>$(     6@ @ @   ,S S S S S! ! !6e. e. e. e. e. e. e.r`   r  );collectionsr   numpyrD   rH   bokeh.modelsr   r   r   r   r   bokeh.models.toolsr	   bokeh.transformr
   	core.datar   core.dimensionr   	core.utilr   r   	operationr   util.transformr   mixinsr   r   r   utilr   r   rT   r   r   r   r   r}  r   r  r   r   r    r!   r"   r#   r$   r&   r   r  r)  rC  r{  r  r  r  r  r  r   r`   r^   <module>rD     s   # # # # # #      X X X X X X X X X X X X X X , , , , , , " " " " " "             , , , , , , 6 6 6 6 6 6 6 6 * * * * * * ! ! ! ! ! ! 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 G G G G G G G G G G G G 3 3 3 3 3 3                # " " " " "W& W& W& W& W&
L W& W& W&vO& O& O& O& O&l O& O& O&fL$ L$ L$ L$ L$ L$ L$ L$^ @  @  @  @  @L  @  @  @FJ J J J J J J J\< < < < < < < <@5$ 5$ 5$ 5$ 5$ 5$ 5$ 5$r$ $ $ $ $y* $ $ $63$ 3$ 3$ 3$ 3$l 3$ 3$ 3$l; ; ; ; ;Z ; ; ;>Z. Z. Z. Z. Z.iz Z. Z. Z. Z. Z.r`   