
    I.eΌ                    8   d dl Z d dlmZ d dlZd dlZd dlZd dlZ	d dl
Zd dlmZ d dlmZ d dlmZmZ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!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZAmBZB d dlCmDZD d dlEmFZF d dlmGZGmHZH ddlImJZJ ddlKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^ ddl_m`Z`  eja        d          Za G d de          Zb G d d          ZcdS )    N)partial)	HoverTool)	Dimension)
DynamicMapHoloMapCallable)	NdOverlay)StoreCyclePalette)NdLayout)	max_range)CurveScatterAreaBars
BoxWhiskerDatasetDistributionTableHeatMapImageHexTilesQuadMesh	Bivariate	HistogramViolinContoursPolygonsPointsPathLabelsRGB	ErrorBarsVectorField
RectanglesSegments)OverlayPlotcolormap_generator)process_cmap)	histogram
apply_when)BufferPipe)dim)Version)DatetimeIndex
MultiIndex   )_transfer_opts_cur_backend)filter_opts
hv_version
is_tabular	is_seriesis_dask	is_intakeis_cudf
is_streamzis_ibis	is_xarrayis_xarray_dataarrayprocess_crsprocess_intakeprocess_xarraycheck_libraryis_geodataframeprocess_derived_datetime_xarrayprocess_derived_datetime_pandas_convert_col_names_to_str)hvplot_extensionbokehc                   D    e Zd ZdZ ej                    ZddZd Zd Z	dS )StreamingCallablezy
    StreamingCallable is a DynamicMap callback wrapper which keeps
    a handle to start and stop a dynamic stream.
    Nc                     d | j                                         D             }t          |fi |}|| j        n|} | j        |fi |S )zw
        Allows making a copy of the Callable optionally overriding
        the callable and other parameters.
        c                 "    i | ]\  }}|d v	||S ))callablename .0kvs      0lib/python3.11/site-packages/hvplot/converter.py
<dictcomp>z+StreamingCallable.clone.<locals>.<dictcomp>9   s3     1 1 11/// !///    )paramget_param_valuesdictrN   	__class__)selfrN   	overridesoldparamss        rU   clonezStreamingCallable.clone4   sl    
1 1
 ; ; = = 1 1 1c''Y''$,$44==(t~h11&111rW   c                 n    | j         j        s| j                                          dS t          d          )z-
        Start the periodic callback
        z!PeriodicCallback already running.N)periodic_runningstart	Exceptionr\   s    rU   rd   zStreamingCallable.start?   s;     }% 	AM!!!!!?@@@rW   c                 n    | j         j        r| j                                          dS t          d          )z,
        Stop the periodic callback
        zPeriodicCallback not running.N)rb   rc   stopre   rf   s    rU   rh   zStreamingCallable.stopH   s:     =! 	=M     ;<<<rW   N)
__name__
__module____qualname____doc__rX   	Parameterrb   r`   rd   rh   rP   rW   rU   rK   rK   ,   sd         
 u  H	2 	2 	2 	2A A A= = = = =rW   rK   c            =       2   e Zd ZdZg dZddgZ eeez   g dz             Zg dZg dZ	g dZ
g d	Zg d
Zg dZi ddgdddgdg ddg ddg dddgdg ddg ddg dddd gd!g d"d#g d$d%g d&d'g d(dd d)gd*dd+gd,g d-d.gdgdd gd/d0gd1Zi ded2ed3eded4edededed5edededed!ed#ed6ed,edeeee e!ee"e#ee$e%e&d7Z'g d8Z(d9Z)d:d:d;d<d:d:d;d=Z*d>e+j,        d?         d@dAdBZ-dCdCd;dCdDdEd:d:dCi dCd;dCdCdCdCdCdCdCdCdCdCdCdCd:dCd:d:dCd:d:dCdCdCdCd:d;dCdCdCd:d:dCdCd:g dCdCd:g dCd:d:d;dFi dCdCdCdCdCf=dGZ.dH Z/dI Z0dJ Z1dK Z2dL Z3dM Z4dN Z5dO Z6ddQZ7dR Z8dS Z9ddUZ:dV Z;e<dW             Z=dX Z>dY Z?dZ Z@dd[ZAdd\ZBdd]ZCd^ ZDdd_ZEdd`ZFddaZGddbZHddcZIdddZJddeZKdf ZLddgZMddhZNddiZOddjZPddkZQddlZRddmZSddnZTddoZUddpZVddqZWddrZXddsZYddtZZdduZ[dv Z\dw Z]ddxZ^ddyZ_ddzZ`dd{Zadd|Zbdd}Zcdd~ZdddZeddZfddZgdCS )HoloViewsConvertera   
    Generic options
    ---------------
    autorange (default=None): Literal['x', 'y'] | None
        Whether to enable auto-ranging along the x- or y-axis when
        zooming. Requires HoloViews >= 1.16.
    clim: tuple
        Lower and upper bound of the color scale
    cnorm (default='linear'): str
        Color scaling which must be one of 'linear', 'log' or 'eq_hist'
    colorbar (default=False): boolean
        Enables a colorbar
    fontscale: number
        Scales the size of all fonts by the same amount, e.g. fontscale=1.5
        enlarges all fonts (title, xticks, labels etc.) by 50%
    fontsize: number or dict
        Set title, label and legend text to the same fontsize. Finer control
        by using a dict: {'title': '15pt', 'ylabel': '5px', 'ticks': 20}
    flip_xaxis/flip_yaxis: boolean
        Whether to flip the axis left to right or up and down respectively
    grid (default=False): boolean
        Whether to show a grid
    hover : boolean
        Whether to show hover tooltips, default is True unless datashade is
        True in which case hover is False by default
    hover_cols (default=[]): list or str
        Additional columns to add to the hover tool or 'all' which will
        includes all columns (including indexes if use_index is True).
    invert (default=False): boolean
        Swaps x- and y-axis
    frame_width/frame_height: int
        The width and height of the data area of the plot
    legend (default=True): boolean or str
        Whether to show a legend, or a legend position
        ('top', 'bottom', 'left', 'right')
    logx/logy (default=False): boolean
        Enables logarithmic x- and y-axis respectively
    logz (default=False): boolean
        Enables logarithmic colormapping
    loglog (default=False): boolean
        Enables logarithmic x- and y-axis
    max_width/max_height: int
        The maximum width and height of the plot for responsive modes
    min_width/min_height: int
        The minimum width and height of the plot for responsive modes
    padding: number or tuple
        Fraction by which to increase auto-ranged extents to make
        datapoints more visible around borders. Supports tuples to
        specify different amount of padding for x- and y-axis and
        tuples of tuples to specify different amounts of padding for
        upper and lower bounds.
    rescale_discrete_levels (default=True): boolean
        If `cnorm='eq_hist'` and there are only a few discrete values,
        then `rescale_discrete_levels=True` (the default) decreases
        the lower limit of the autoranged span so that the values are
        rendering towards the (more visible) top of the `cmap` range,
        thus avoiding washout of the lower values.  Has no effect if
        `cnorm!=`eq_hist`.
    responsive: boolean
        Whether the plot should responsively resize depending on the
        size of the browser. Responsive mode will only work if at
        least one dimension of the plot is left undefined, e.g. when
        width and height or width and aspect are set the plot is set
        to a fixed size, ignoring any responsive option.
    rot: number
        Rotates the axis ticks along the x-axis by the specified
        number of degrees.
    shared_axes (default=True): boolean
        Whether to link axes between plots
    transforms (default={}): dict
        A dictionary of HoloViews dim transforms to apply before plotting
    title (default=''): str
        Title for the plot
    tools (default=[]): list
        List of tool instances or strings (e.g. ['tap', 'box_select'])
    xaxis/yaxis: str or None
        Whether to show the x/y-axis and whether to place it at the
        'top'/'bottom' and 'left'/'right' respectively.
    xformatter/yformatter (default=None): str or TickFormatter
        Formatter for the x-axis and y-axis (accepts printf formatter,
        e.g. '%.3f', and bokeh TickFormatter)
    xlabel/ylabel/clabel (default=None): str
        Axis labels for the x-axis, y-axis, and colorbar
    xlim/ylim (default=None): tuple or list
        Plot limits of the x- and y-axis
    xticks/yticks (default=None): int or list
        Ticks along x- and y-axis specified as an integer, list of
        ticks positions, or list of tuples of the tick positions and labels
    width (default=700)/height (default=300): int
        The width and height of the plot in pixels
    attr_labels (default=None): bool
        Whether to use an xarray object's attributes as labels, defaults to
        None to allow best effort without throwing a warning. Set to True
        to see warning if the attrs can't be found, set to False to disable
        the behavior.
    sort_date (default=True): bool
        Whether to sort the x-axis by date before plotting
    symmetric (default=None): bool
        Whether the data are symmetric around zero. If left unset, the data
        will be checked for symmetry as long as the size is less than
        ``check_symmetric_max``.
    check_symmetric_max (default=1000000):
        Size above which to stop checking for symmetry by default on the data.

    Resampling options
    ------------------
    aggregator (default=None):
        Aggregator to use when applying rasterize or datashade operation
        (valid options include 'mean', 'count', 'min', 'max' and more, and
        datashader reduction objects)
    dynamic (default=True):
        Whether to return a dynamic plot which sends updates on widget and
        zoom/pan events or whether all the data should be embedded
        (warning: for large groupby operations embedded data can become
        very large if dynamic=False)
    datashade (default=False):
        Whether to apply rasterization and shading (colormapping) using
        the Datashader library, returning an RGB object instead of
        individual points
    downsample (default=False):
        Whether to apply LTTB (Largest Triangle Three Buckets)
        downsampling to the element (note this is only well behaved for
        timeseries data). Requires HoloViews >= 1.16.
    dynspread (default=False):
        For plots generated with datashade=True or rasterize=True,
        automatically increase the point size when the data is sparse
        so that individual points become more visible
    rasterize (default=False):
        Whether to apply rasterization using the Datashader library,
        returning an aggregated Image (to be colormapped by the
        plotting backend) instead of individual points
    resample_when (default=None):
        Applies a resampling operation (datashade, rasterize or downsample) if
        the number of individual data points present in the current zoom range
        is above this threshold. The raw plot is displayed otherwise.
    x_sampling/y_sampling (default=None):
        Specifies the smallest allowed sampling interval along the x/y axis.

    Geographic options
    ------------------
    coastline (default=False):
        Whether to display a coastline on top of the plot, setting
        coastline='10m'/'50m'/'110m' specifies a specific scale.
    crs (default=None):
        Coordinate reference system of the data specified as Cartopy
        CRS object, proj.4 string or EPSG code.
    features (default=None): dict or list
        A list of features or a dictionary of features and the scale
        at which to render it. Available features include 'borders',
        'coastline', 'lakes', 'land', 'ocean', 'rivers' and 'states'.
        Available scales include '10m'/'50m'/'110m'.
    geo (default=False):
        Whether the plot should be treated as geographic (and assume
        PlateCarree, i.e. lat/lon coordinates).
    global_extent (default=False):
        Whether to expand the plot extent to span the whole globe.
    project (default=False):
        Whether to project the data before plotting (adds initial
        overhead but avoids projecting data when plot is dynamically
        updated).
    projection (default=None): str or Cartopy CRS
        Coordinate reference system of the plot specified as Cartopy
        CRS object or class name.
    tiles (default=False):
        Whether to overlay the plot on a tile source. Tiles sources
        can be selected by name or a tiles object or class can be passed,
        the default is 'Wikipedia'.
    )imagecontourcontourfquadmeshrgbpointsdatasetpathspolygons)rv   vectorfieldlabelshexbin	bivariate)histkdeviolinboxdensity)xykindby	use_indexuse_daskdynamiccrsvalue_labelgroup_labelbacklogpersist	sort_date)geor   featuresproject	coastlinetiles
projectionglobal_extents)"widthheightshared_axesgridlegendrotxlimylimxticksytickscolorbarinverttitlelogxlogyloglogxaxisyaxis
xformatter
yformatterxlabelylabelclabelpadding
responsive
max_height	max_width
min_height	min_widthframe_heightframe_widthaspectdata_aspect	fontscale)	coloralphacolormapfontsizeccmap	color_keycnormrescale_discrete_levels)	datashade	rasterize
x_sampling
y_sampling
downsample
aggregatorresample_whenareay2	errorbarsyerr1yerr2r}   )	bandwidthcutfilledlevelsrr   )zr   logzrs   rw   columnsheatmap)Creduce_functionr   r|   )r   r   gridsizer   	min_countr~   )bins	bin_rangenormed
cumulativerq   r   r   r   )	bw_methodindr   r   r   r{   )textr   xoffsetyoffset	text_fonttext_font_sizeohlc)	bar_width	pos_color	neg_color
line_colorrv   )smarkerr   scaler   r   ru   bandsscatter)r   r   r   r   r   whereanglemag)steptablert   rz   barbarhr   r   line)r|   r   rx   rv   ry   rt   ru   r   r   rz   r   )r}   rr   rs   r   rq   r|   rt   ry   )	top_righttop_leftbottom_leftbottom_rightrightlefttopbottomFTr   )r   r   show_legendlegend_position	show_gridr   r   kbc_rglasbey_category10
colorwheelcoolwarm)linearcategoricalcyclic	divergingNvaluei  i@B cA                   ST || _         || _        || _        || _        |                     |||||||%|&||
|	||||1|6|;|<|A           || _        t          |,||+|*|4|7|>g          | _        | j        r|                     ||          nd | _	        | j	        | _
        |4| _        |7| _        |>| _        |8| _        |9| _        | j        s| j        dk    r#	 dd l}Bn# t$          $ r t%          d          w xY w| j        rg| j        | j        vr4t*          j        j                            d| j        d| j                   ddlm	S ddlm}C t7          |*t8                    rgSfdt;          S          D             }D|*|Dv r|*d	k    r t=          S|*                      }*n)|*d	k    rt=          S|*          }*nt?          d
|D           |*p|8rSj         n| j	        | _
        |8r| j
        Sj         k    rt?          d          | j	        |*k    rZ|s|rVSj         j!        j"        \  }E}F}G}H|p|E|Gf\  }I}J|p|F|Hf\  }K}L|I|K|J|Lf}M |C|M| j	        | j
                  \  }I}K}J}L|r|I|Jf}|r|K|Lf}|$!t          |"|!|#g          st?          d          |$| _#        |!| _$        |"| _%        |#| _&        |0| _'        |)| _(        |-| _)        |2| _*        |3| _+        || _,        |rtZ          nt\          | _/        t`          j1        | _2        tf          j4        | j2        | _5        ntf          j4        | _5        || _6        to          | j8        fi | 9                                T|tu          |          Td<   |tu          |          Td<   |@Btv          ty          d          k     r%t*          j        j                            d           n|@Td<   || _=        ||p|}|p|}||Td<   ||Td<   ||Td<   |t}          |          Td<   || j?        v r|Td<   n(|dvr$t?          dt          | j?                  z            g d}N|ND ]}O|O|Av r|AA                    |O          T|O<   | B                    |AT          \  | _C        T}AdD ]I}P|P|Av rC|AA                    |P          }Q|Qsd T|P<   #|Qdk    r|QT|P<   /|PTv rTA                    |Pd            J|.rdTd<   |/rdTd<   | j        rTD                    d          sdTd<   g d }Rt          Tfd!|RD                       s2TD                    d"d#          Td"<   TD                    d$d%          Td$<   t7          | t|                    r| Td&<   n4| j        | jE        v rdTd&<   n | j%        rTD                    d&d          Td&<   d'|Av r:d'| jF        D                    | j        i           v r|AA                    d'          Td'<   |r| j        d(k    Td)<   |r|rd*nd+}Q|T|Q<   t          |5          p"t          TD                    d,g                     }5|d-k    rd.}n
|| j$         }|rHt          d/ |5D                       s/|d0v r|5G                    |           n|5G                    d1           |5Td,<   | j	        r|+r|+Td2<   |*r
| j
        Td3<   ||nt=          | d4d           }||Td5<   | j        | jE        v s| j%        s| j$        s| jH        r#	 |s| I                    |||:          }| jC        D                    d6          | j$        s| j%        r| j(        d7t9          | j(                  v r| jJ        r| j,        r[t7          | jK        t                    sA| jK        Pt          t          | jN                  t          | jO                  z
            dk    r| jP        d8         | jC        d6<   n-|r| jP        d9         | jC        d6<   n| jP        d:         | jC        d6<   ||Td;<   n# t          $ r Y nw xY w|=|=Td<<   |?tv          ty          d=          k    r|?Td><   T| _R        d? | jR        S                                D             | _T        |(TD                    d@           dA| _U        |A| _V        || _        |rdB|ini | _W        dC|pdDi| _X        | Y                    |A           |'rdto          | jZ        | jK        | jJ        | j        | j[        | j\        E          }At*          j        j                             dFj]        dGi |A           d S d S )HN	geopandasr   zIn order to use geo-related features the geoviews library must be available. It can be installed with:
  conda install geoviewsz$geo option cannot be used with kind=zJ plot type. Geographic plots are only supported for following plot types: )r   )project_extentsc                     g | ]E}t          t          |                    r|d vr|d                                         s|dk    C|FS ))ABCMetaCRSr   GOOGLE_MERCATOR)rN   getattrisupper)rR   projccrss     rU   
<listcomp>z/HoloViewsConverter.__init__.<locals>.<listcomp>  sl     6 6 6D#GD$$7$7886'9997??,, :#444	   544rW   r  zOProjection must be defined as cartopy CRS or one of the following CRS string:
 zTiles can only be used with output projection of `cartopy.crs.GOOGLE_MERCATOR`. To get rid of this error remove `projection=` or `tiles=`zpAt least one resampling operation (rasterize, datashader, downsample) must be enabled when resample_when is set.r   r   z1.16.0z+autorange option requires HoloViews >= 1.16	autoranger   r   r  r   r   )TFNzRThe legend option should be a boolean or a valid legend position (i.e. one of %s).)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   Tinvert_xaxisinvert_yaxisr   r3   )r   r   r   r   r   c              3   B   K   | ]}                     |          V  d S ri   )get)rR   opt	plot_optss     rU   	<genexpr>z.HoloViewsConverter.__init__.<locals>.<genexpr>5  s/      ==#9==%%======rW   r   i  r   i,  r   r   r   invert_axes	yrotation	xrotationtoolsr   Fc              3   L   K   | ]}t          |t                    s|d v |V   dS ))hovervlinehlineN)
isinstancer   rR   ts     rU   r  z.HoloViewsConverter.__init__.<locals>.<genexpr>M  sO       B B1Ay1I1I B !%@ @ @  @ @ @ @B BrW   )r%  r&  r$  global_extentr   _titler   r   	count_catr  r	  r  	symmetricr   z1.15.0r   c                 Z    i | ](\  }}|t           j                                        v %||)S rP   )r(   rX   objectsrQ   s      rU   rV   z/HoloViewsConverter.__init__.<locals>.<dictcomp>u  sD     C C Ctq!!"k&7&?&?&A&A!A!A  !A!A!ArW   r   )	framewiseaxiswiselabelr   NN)r   r   r   r   groupbyr   zbPlotting {kind} plot with parameters x: {x}, y: {y}, by: {by}, groupby: {groupby}, row/col: {grid}rP   )^_redimr   r   r2  _process_datar   anyr   _process_crsr   output_projectionr   r   r   r   r   datatypegeoviewsImportErrorr   
_geo_typesrX   mainwarningcartopygeoviews.utilr  r'  strdirr  
ValueErrorr  boundaryboundsr   r   r   r   	dynspreadr   
precomputer   r   subplotsr   r	   _by_typer
   current_backend_backendrH   compatibility_backend_compatstackedrZ   _default_plot_opts_process_plottupler6   r0   r   bool_legend_positionslistpop_process_style_style_optsr  _colorbar_types_kind_optionsappend
_color_dim_process_symmetricr   r   lenset	variablesindexes_default_cmaps	TypeError
_plot_optsitems_overlay_opts
_norm_optskwds_relabel_dim_ranges_validate_kwdsr   r4  r   format)Ur\   datar   r   r   r   r   r   r   r   r   r   r   fieldsr4  r   r   r   r   r   r   r   climr-  r   r   r   r$  rI  r2  r   rO  r   r   r   r   r   rowcoldebugr0  r   r   r*  r   rH  
flip_xaxis
flip_yaxisrG  
hover_colsr   r   r   r"  attr_labelsr   r   r   check_symmetric_max
transformsstreamr   r   r   r  rh  r;  r  all_crspx0py0px1py1x0x1y0y1extentsplotwdsplotwd	axis_nameaxisignore_optsr  r  sU                                                                                      @@rU   __init__zHoloViewsConverter.__init__|  s   * "&
$1b'3XWe[+Z	
 	
 	
 S-WiQYZ[[378E4$$T3///!%" 
" 8 	6t}336 6 6 6! #5 6 6 66
 8 (	$y//
 ((A49 A A-1_A AB B B ,+++++555555*c** I6 6 6 6CII 6 6 6
 ((Z;L-L-L!:z!:!:!<!<JJ#444!(z!:!:JJ$H>EH HI I I &0%`E4_D4H4HW[W_D" /43GGG 7  
 x:%%4%4%%)%9%B%I"S#s+#sB+#sBr2r*!0$(DDZ![![BB $8D $8D $S)Y
1S-T-T$I   +""$"$$$$ !$,;)-)1#'=D  #3#AD 0 1 1--//1 1	 %dIf %dIf GH----
 (()VWWWW)2	+&>6D>6D $If $If%)Ik"'+F||Im$T++++1I'((... I#D$:;;< = = =, , ,  	5 	5F~~$(HHV$4$4	&!,0,?,?i,P,P))T+ 	3 	3ID  xx	** 3+/Ii((T\\+/Ii(()++MM)T222 	-(,In% 	-(,In%8 	)IMM-88 	)'(Im$\\\========= 	?!*w!<!<Ig"+--#">">Ihh%% 	D$,Ij!!Y$...$(Ij!!^ 	D$-MM*d$C$CIj!T>>f(:(>(>ty"(M(MMM $ 0 0If 	;'+yF':Im$ 	""(9;;kD!IdOU?tIMM'2$>$>??;EE]&E 	& B B B B B B B 	&***U####W%%%"	'8 	7 	7)6Io& 	=&*&<Il#*h0M0M!&IgI----4>-UYUd- ^ $ 7 7	4I\ ] ]I#''//7 Q4> Q@W[fjmnrn}j~j~[~[~' \*.- \$TVT22 \7;v~#cRVR`NaNadghlhtduduNuJvJvyzJzJz373F}3U(00" Q373F{3S(00373Fx3P(0(-6Ik*   !&Ig".:ARAR3R3R3JI/0#C Ct/D/D/F/F C C C )29==Q^C_C_?_``	 
,19%((r!56 	D!!! 	g$&DFtwTY $49> > >DJ$$ &^ &WW]&f &f`d&f &f g g g g g	g 	gs   C C-	D_ 
_('_(c                    |||S t          | j                  rK| j        | j                 }t          |dd          r|j        rdS t          |          r|j        |k    rdS ndS | j        r| j        | j                 }nd S |j        dk    rdS t          j	        |d          }t          j	        |d          }t          |dk     o|dk              S )N
_in_memoryTFr   g?gffffff?)r>   rm  r   r  chunksr?   sizer\  npnanquantilerS  )r\   r-  ro  rw  rm  cmincmaxs          rU   r]  z%HoloViewsConverter._process_symmetric  s     D$4TY 	9TV$D4t44  u"4(( 9222 5 3 u_ 	9T_-DDF9>>5~dD))~dD))D1H)***rW   c                 D   t          |d          r+|j        j        |j        j                                        }n't	          |di                               |pd|          }	 t          |          S # t          $ r"}|rt          d| d|           Y d}~dS d}~ww xY w)zPGiven crs as proj4 string, data.attr, or cartopy.crs return cartopy.crs
        rioNattrsr   'zV' must be either a valid crs or an reference to a `data.attr` containing a valid crs: )hasattrr  r   to_wktr  r  r@   rD  )r\   rm  r   _crses        rU   r8  zHoloViewsConverter._process_crs  s     4 	EDHL$<8<&&((DD 4"--11#,DDD	Bt$$$ 	B 	B 	B B A A A=>A AB B BB B B B B B	Bs   $A3 3
B=BBc                 $   ,-./01 | j         v }d}d , _        t                     _         j        r                                t	                    rt          |	p|
          t                     _        t          t                    sg|t          |t                    s|g}g /|/
                    |           |/
                    |           d}t                    r t          d          rdnd} _        ||dk    rd j        D             }nGt          j        j                  j                            dd                              dd          g}t)          |          d	k    rt+          d
          t          |          d         }|dk    rd}n|dk    rd}n|dv rd}|1|/|                    d|                    d|                    |d<   d }n.t          t.          j                  rd} _        n	t3                    r!d}|
r                                n _        nt7                    rd} _        nt9                    rd} _        nt;                    rd}j         _        t           j        t.          j                  r j        j        d d          _        j          _!        d} _"        j         dk    rtG           j                   _$        ntK           j        |d           _$        j$        &                                '                     j$        j(                   ntS                    rdd l*}|+                    d          }t          |j,                  r't)          j-                  dk    rt+          d          |;t          |j,                  rt          j-                  d         }nj.        p|p|}|r2t          |j,                  rt          |t                    s|         | _/        pg |pg z   /z   00fdj0        D             }0fd j1        D             .||s|rte          fd!||fD                       rrt          j0                  g d"k    rd#}d}nSt)          |          d	k    rd$}n=t)          |          d%k    s#|r|st)          .fd&|D                       d%k    rd'}d}nd(}|	rdnd}|rd)}d}|d#k    r(d*|v r
|d*         g}nfd+j0        D             d         }ng },tg          ||||	|
|||||,          \  }}}}| j4        vr||}|r/fd-D             sm/skt          ,|j5                  r,6                                 _7        n<t          ,|j,                  r' tq          |j5        j6        ,                       _7         _        n$t+          d.t                    j        z            |z|rt+          d/          | _$        d  _"        t          |tF                    rd _!        n<t          |tJ                    rd0 _!        nt+          d1t          |          z            d}|g }g |rfd2D             } ts          |           \  } }!}!t          |j,                  rt          j-                  nj.        g}"t          j0        j:                  1||1vr1
                    |           ||1vr1
                    |           j1        D ]-tw          -fd31D                       sj0        D ]w}#|#1vrq-hty          |#         j1                  k    rR1
                    -            j        =                    -|#i           _        |#|z   vr
                    -           xt          j0                  |"z    _>        r)| r't+          d4|  d5t          j0                             n|r0|d6vr,t+          | d7t           j                  j         d8          t          d9          r0t          j?        d:          rj?        j.        r|sj?        j.        }n|sd;}t          j?        t.          j@                  rN|d<v rJ|H|sFA                                B                    d	          C                    d=|i>           _        |}d?}t           j        t.          j                  rJ j        jD        jE        d gk    r j        jD        j.        pd?g1nwt           j        jD        jE                  1nXt           j        d@          r+ fdA j        B                                j?        D             1n fdB j        j?        D             1t)          1          d%k    r|s|s|s|dCk    r1\  }}n	|dDv r1\  }}1t           j        j?                  z    _>        1fdED             }$|$r j        B                    |$           _        t          |t          jG        t.          jH        f          rg }%nt          |t                    r|n|g}%1 fdF|%z   D             } t           j        | 1          \  }  _        r.| r,t+          d4|  d5t           j        j?                             |r* tY           j        1          jJ        dUi |j         _        | _K        | _L        |pd$ _M        | _N        | _O        | _P        |	 _Q        1 _:        |pd; _R        t          |t          jG        t.          jH        f          rC j        S                    |G           _        dHg _T         j>        
                    dH           n)|sg  _T        nt          |t                    r|n|g _T         _U        / _V        | _W        |sg  _X        nt          |t                    r| _X        nc|dIk    r jY        r j>         _X        nI|dIk    r  jY        s fdJ j>        D              _X        n#|dIk    rt          |t                    r|g _X         jN        dKv rdL  jX        D              _X        ,|du s|D	 ,fdM,j0        D             }&t          ,|j,                  r'|&[                    ,fdN,j-        D                        n!|&
                    ,j.        ,j\        f           i }'i }(|&D ]K\  })}*|)dO})t          |*+                    dP          t                    r|*dP         |'|)<   dQ|*v r|*dQ         |(|)<   L ]                    |'dR           _^         ]                    |(dS           _^        d S # t          $ r<}+|du r-t          ja        j`        b                    dT|+            Y d }+~+d S Y d }+~+d S d }+~+ww xY wd S )VNF	geom_typer  spatialpandasc                 .    h | ]}d |v r
|dd         n|S )Multi   NrP   )rR   gts     rU   	<setcomp>z3HoloViewsConverter._process_data.<locals>.<setcomp>  s,    ![![![bGrMM"QRR&&r![![![rW   r   Dtyper3   zRThe GeopandasInterface can only read dataframes which share a common geometry typer   Pointrv   Polygonry   )
LineStringLineRingLinerx   r   r   pandasdaskcudfibisstreamzTupdatingrm  )rm  lengthindexr   z+Cannot plot an empty xarray.Dataset object.c                 >    g | ]}|         j         d k    r|v|S rP   shaperR   r   rm  ignores     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s9     + + +AQ0C0C6// )//rW   c                 >    g | ]}|         j         d k    r|v|S r  r  r  s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s9     ) ) )!DGMR,?,? 'rW   c              3   *   K   | ]}|j         v V  d S ri   coords)rR   r   rm  s     rU   r  z3HoloViewsConverter._process_data.<locals>.<genexpr>  s*      4V4V!Q$+5E4V4V4V4V4V4VrW   )bandr   r   ru   r      c                     g | ]}|v |	S rP   rP   )rR   r   dimss     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>!  s%    :Z:Z:ZPQUYPYPY1PYPYPYrW   rq   r~   xarrayr   c                      g | ]
}|pg v|S rP   rP   )rR   dr4  s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>/  s(    !U!U!UAgmQS<T<T!<T<T<TrW   r   c                     g | ]}|v|	S rP   rP   )rR   gr   s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp><  s    ???$1rW   z$Supplied data type %s not understoodz4Cannot supply streamz.DataFrame and stream argument.	streamingz!Stream of type %s not recognized.c                 &    g | ]}|j         v|S rP   r  )rR   r  rm  s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>\  s%    DDDqq/C/C/C/C/CrW   c              3   6   K   | ]}|         j         v V  d S ri   )r  )rR   r   rm  data_dims     rU   r  z3HoloViewsConverter._process_data.<locals>.<genexpr>f  s.      EE8tAw|3EEEEEErW   z"The supplied groupby dimension(s) z. could not be found, expected one or more of: )rv   rw   zN plot type requires gridded data, e.g. a NumPy array or xarray Dataset, found z typer   rO   Variable)Nr  level_1)r   r  reset_indexc                 0    g | ]}|j         j        v|S rP   rm  r   rR   r   r\   s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  2     : : :ty'888 888rW   c                 0    g | ]}|j         j        v|S rP   r  r  s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  r  rW   r   )r   r   c                     g | ]}|v |	S rP   rP   )rR   r  ra  s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s    @@@11<<Q<<<rW   c                 P    g | ]"}|t          j        j                  z   v |#S rP   )rU  rm  r   )rR   r  ra  r\   s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s6    ```qqTYEV@W@WX_@_7_7_7_7_7_rW   )_byr  allc                 &    g | ]}|j         v|S rP   ra  rR   rT   r\   s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s%    RRRQAT\<Q<Qq<Q<Q<QrW   r  r  c                     g | ]
}|d k    |S geometryrP   rR   r   s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s    LLLQQ^^q^^^rW   c                 .    g | ]}||         j         fS rP   r  rR   vardas     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s$    HHHssBsGM2HHHrW   c                 .    g | ]}||         j         fS rP   r  r  s     rU   r  z4HoloViewsConverter._process_data.<locals>.<listcomp>  s$    &T&T&TRW]';&T&T&TrW   r
  	long_nameunitsr2  unitz0Unable to auto label using xarray attrs because rP   )c_gridded_typesdata_sourcer8   to_framer:   rA   rG   source_datar'  rU  r[  rD   r  rm  r  typer  dtyperj   replacer^  rD  rV  pd	DataFramer9   r   r;   r=   r<   exampleiloc_stream_typestream_typecbr.   ry  r-   gathersinksendr>   r  r  r   	data_varsrO   r   r  r  r  rB   _stats_types	DataArray_title_for_slicer+  r   rE   ra  r7  r_  	set_indexr`  r   r2   stackr  renamer  namesr  ndarraySeriesrF   	transformr   r   r   r:  griddedgridded_datar   r   assignr   r4  r   r  ru  r   rB  extendr  _merge_redimr5  re   rX   r>  r?  )2r\   r   rm  r   r   r   r4  rp  rq  r   r   r   r2  r   r   ru  rv  rx  ry  rh  r  r  r  r:  
geom_typesr  xrr   r  
other_dimsby_newgroupby_new	not_found_r  coordgroupby_indexby_cols
var_tuplesr{   r  var_name	var_attrsr  r  r  r  r   r  ra  s2   ` `   `                                     @@@@@@rU   r6  z HoloViewsConverter._process_data  s    $--  "4> 	#==??DT?? 	=!$(;G<<D )..z'4'@'@iG>*R"6"6>B?DKK,,,?DKK,,,	4   q	[&-dK&@&@U{{oHDI|{**![![DN![![![JJ"&t}':";";"D"L"LWVX"Y"Y"a"abikm"n"n!oJz??Q&&$ &D E E E ,,Q/	''#DD)++%DD"DDD"D} $$((32B2B C CWbl++ [	[HDIIT]] X	[H*1;tDIIT]] U	[HDIIT]] R	[HDII O	[ HDI$)R\22 / IN2A2.	#0DIDG J.."	222$$)G5QQQK  %%dk&67777t__ B	[A$
++ Tt~&&!++$%RSSSydBJ// :T^,,Q/AA	9U9kA :dBJ77 
1d@S@S AwDFmb1D8F+ + + + + + + +F) ) ) ) )ty ) ) )D |a|1|4V4V4V4VPQSTv4V4V4V1V1V|$$(:(:(::: D"GG[[A%%!DD[[A%%!%%c:Z:Z:Z:Zf:Z:Z:Z6[6[_`6`6`"D"GG!D!)7vvxH $##u}}d??"&w-JJ!U!U!U!UT[!U!U!UVW!XJJ
B.<aB7G{JT/; /; /;+D!Q 4,,,:Fr?kG @????g???  O4 Ob",// O"$"5"5"7"7DKKBJ// O"L'",*G"L"L"N"NDKDIICd4jjFYYZZZ Y !WXXX DKDG&$'' U#-  FF++ U#.   !DtF||!STTTI :Br?bG J	HDDDDGDDDI=dINNOIq!0:40L0L]T^,,,SWS\R]I4;.//G}'!1!1q!!!}'!1!1q!!! I 9 9EEEEEWEEEEE 9!% 9 9 //XJ#d5kFVBWBW4W4W#NN8444(,	(;(;Xu<M(N(NDI$GBJ66 'x 8 8 8!$+..:DN B9 B  "Ai "A "A-1$+->->"A "A B B B  K4'<<< D "J "J*.ty//*B"J "J "J K K K tY'' )GDL&,I,I )dlN_ )hs )"l/  )($,66 1;O;OTUT]fhT] JJLL44Q77>>	S^G_>``	  $)R\22 
:9?(TF22#y3>w?GG"49?#899GGM22 :: : : :di&;&;&=&=&E : : :: : : :di&7 : : : 7||q  ! q B 9$$"DAqq_,,#EAr$tDI,='>'>>DN A@@@@@@M A I11-@@	"rz29566 ? *2t 4 4>""2$`````GGO```I#B49iY`#a#a Ity H9 H  "Gi "G "G-1$)2C-D-D"G "G H H H  	Q=	733=KK
KKPDI NF	 ( &4*b2:ry122 	;	((R(00DIgDGN!!%(((( 	;DGG&r400:bbrdDG	" 		+ DOO
D)) 	+(DOO5  T^ "nDOO5   RRRR$.RRRDOO%Jz#$>$>)lDO=:::LL$/LLLDO>kT11[5H7HHHHbiHHH
b"*-- ;%%&T&T&T&Tr|&T&T&TUUUU%%rw&9:::+5 = ='Hi'#*!)--"<"<cBB B+4[+Ax()++*3G*<h"//@@"//v>> 7 7 7$&&J$,, .623.6 .6 7 7 7 7 7 7 7 7 7 '&&&&&7% 6I5Hs   C8w 
x+xxc                 >   | j         }t          j        d          }| j        |         j        }||v r||         j        d         j        ni }|                    d          r
| j        |d<   |dk    r+| j        r$t          j	        j        
                    d           |S )NrI   backendplotr   rO  r~   zcStacking for histograms is not yet implemented in holoviews. Use bar plots if stacking is required.)r   r
   options_kind_mappingrj   groups
startswithrO  rX   r>  r?  )r\   r   r  elnamer  s        rU   rQ  z HoloViewsConverter._process_plot  s    y-000#D)2>D>O>OGFO*62::UW	??5!! 	0#'<Ii 6>>| X
 (( *W X X X rW   c                    | j         }| j        |         }t          j        | j                 }||v r||         j        ng dg d}D ]>}||vst          ||         t                    r|v r&t          ||                   ||<   ?t          j	        | j                  }|j
        }	|	|v r||	         j        d         j        ni }
fd|
                                D             } |j        di fd|                                D              t                                        |          }t#          |          dk    rt%          d          |r'|                    |                                          nd |                    d	|                    d
d                     }|U| j        s| j        r]|| j        | j        fv rM| j                            | j        |                   | _        dx|d	<   }| j                            d           nmt          |t8          j        t<          j        f          rB| j                            |          | _        dx|d	<   }| j                            d           n||d	<   t          |t                    sh|| j        v r_d
| j         !                    |g           v rB| j        |         j"        j         dv rp| j#        d         n|!                    dd          |d<   t          tH                    r| j#        v r| j#                 |d<   d	|v r	|d	         }nit          tJ                    s?r:tM          fd|D                       rtO          p| j#        d         d          }n}n|!                    d	          }|
                                D ]\  }}t          |t                    rt          |tH                    r|k    r|tP          j)        vr5|*                                tP          j)        v r|*                                }n)tW          tO          |                    tP          j)        |<   tQ          |          ||<   t          |t                    rt          |          ||<   |||<   |                    d|                    dd                     }|2|!                    dd          }| j        s| j        r$tX          j-        j,        .                    d           t          |t8          j        t<          j        f          rWt9          j/        |          |z  }| j                            |          | _        d|d<   | j                            d           nt          |tH                    r(t9          j/        ta          |                    |z  |d<   nKt          |t`                    st9          j/        |          |z  |d<   ndv rt9          j/        d          |d<   d|v r,d| j         | j                  v r|                    d          |d<   |||fS )N)r   r   r   )
accentcategorydark
colorblindpastelset1set2set3pairedglasbeyr  stylec                 N    i | ]!\  }}t          |t                    |v||"S rP   )r'  r   )rR   rS   rT   	cmap_optss      rU   rV   z5HoloViewsConverter._process_style.<locals>.<dictcomp>  s:    hhhtq!Jq%<P<PhUV^gUgUgaUgUgUgrW   c                 $    i | ]\  }}|v 	||S rP   rP   )rR   rS   rT   
valid_optss      rU   rV   z5HoloViewsConverter._process_style.<locals>.<dictcomp>  s$    NNNdaa:ooQooorW   r3   z:Specify at most one of `cmap`, `colormap`, or `color_key`.r   r   )_colorr.  OSUr  r   Tr   c              3       K   | ]}|v V  	d S ri   rP   )rR   r   r   s     rU   r  z4HoloViewsConverter._process_style.<locals>.<genexpr>4  s'      ::!AI::::::rW   r  valuesr  r   r   zThere is no reasonable way to use size (or s) with rasterize or datashade. To aggregate along a third dimension, set color (or c) to the desired dimension.)_sizer4     r   rP   )1r   r  r
   registryrN  
style_optsr'  rU  r   r  rj   r  kwargsre  updater_  intersectionr^  rc  rV  r   r   r   r   rm  r  r`  r[  r  r   r  r  rZ  r  r  rb  rB  rZ   r7  r*   r   	colormapsr   r)   rX   r>  r?  sqrtr/   )r\   rh  r  r   eltyper6  
categoriesr  r  r  r)  r7  	cmap_kwdsr   rS   rT   r  r   r   r+  r-  s                     @@@rU   rW  z!HoloViewsConverter._process_style  su   y#D)N4#78X!&)4JJJ5	C C C
 	) 	)C4z$s)T'B'By  d3i((DII -(<===:@G:K:K&w/66QShhhhu{{}}hhh

OONNNNdjjllNNNOOO 	NN//55	y>>A + , , , -6?txx	(((4$((3"5"566 	,$. 	,e?O6O6O I,,DIe4D,EE	.66
7#e%%h////EBJ	#:;; , I,,E,::	.66
7#e%%h////&+
7#eT** Lu/F/Ft)--dB77779U#).%77E4#6}#EDD,5MM*d,K,KIj)dC   	-TT-@%@%@&t,D!%Jvj  w'EED$'' 	, ::::z::::: $T%OT-@-O]abbbNN7++EKKMM 	* 	*DAq!U## 
*
1c(:(: 
*D==G$555%++--7K\:\:\ %3ElSXFYFY3Z3Z)%0$+ENNJqMMt,, *$)$7$7$7JqMM$)JqM xxd 3 344HHWa((E M$. M
 ((LM M M $RY 788 ;wt}}u, I,,4,88	%,
6"%%g....D#&& ;%'WSYY%7%7%%?
6""c** ;%'WT]]U%:
6"z!!!#Jv tD,>ty,I I I#'88H#5#5Jx 9d**rW   c           
        	
 | j                             | j        g           	| j        }| j        |         }|t          j        | j                 v r#t          j        | j                 |         j        
ng 
ddgt          	
fd|D                       }|sd S d|v rL|	                    |
                    d                     t          j        j                            d           d|v rL|	                    |
                    d                     t          j        j                            d           | j        | j        z   | j        z   | j        z   	z   
z   }| j        dk    r
|| j        z   }|D ]P}t'          j        ||          }t          j        j                            | d	| j         d
| j         d|            Qd S )Nmax_px	thresholdc              3   0   K   | ]}|z   z   v|V  d S ri   rP   )rR   rS   ds_opts	kind_optsr-  s     rU   r  z4HoloViewsConverter._validate_kwds.<locals>.<genexpr>l  s7      UU!q	'8I*8T/T/TA/T/T/T/TUUrW   axzhvPlot does not have the concept of axes, and the ax keyword will be ignored. Compose plots with the * operator to overlay plots or the + operator to lay out plots beside each other instead.figsizezhvPlot does not have the concept of a figure, and the figsize keyword will be ignored. The size of each subplot in a layout is set individually using the width and height options.rI   z option not found for z plot with z; similar options include: )rZ  r  r   r  r
   r6  rN  r7  sortedrV  r  rX   r>  r?  _data_options_axis_options_op_options_geo_options_style_optionsdifflibget_close_matches)r\   rh  r   r=  
mismatchescombined_optsmismatchsuggestionsrD  rE  r-  s           @@@rU   rk  z!HoloViewsConverter._validate_kwdsc  s(   &**49b99	y#D)U^D$8999(<=fEPJJJ[)UUUUUUtUUUUU
 	F:NN:++D11222J$$ &* + + +
 
""NN:++I66777J$$ &R S S S
 +d.@@)**+-679CD 7**)D,??M" 	 	H!3HmLLKJ$$ R R49 R R'R RDOR R   	 	rW   c                    #$%&'  j         p|}t           |          & j        } j                            dg           't          't                    s'g'| j        z  } j        r|dk    s
| j	        z  }|st          '          dk    rd j        rt          d           j        # j        s/t           fd|D                       r#                                # j        dv r5d #j        D             } j        rdd	gnd
dg}t'          #||z             $nӉ j        dk    rdd l}t          #|j                  rt|dk    rXt+          #j                                                  }t+           j                  |z
  }	#fd|	D             }
 #j        dIi |
#t'          # j                  $n;#j        p j        p j        }t'          # j        |          $nt'          #          $ $j        dIi  j        $|r$                    | j                  %t          '          dk    rtA           j!        '          g%j"        z   } j        r8% fd}tG          ||          }$&fd}|$                    |dd          }ntK          $&'fd%j        &                                D             |          }n$&fd}%$                    |dd          }n}t          '          dk    rWtA           j!        '          g} j        rtG          $&fd|          }n4tK          $&fd'D             |          }n &$j                  } j        rH j	        rA|dk    s; j'        r|(                     j	                  n|)                     j	                  } j        r0|                     j                  *                    ddd          }nW j        rJtW          &          } j,        |}nt[          | j,                  }tG          | j.        g           }n j/        # j        dv r5d! #j        D             } j        rdd	gnd
dg}t'          #||z             $n j        dk    r[dd l}t          #|j                  rt'          # j                  $nt#j        p j        p j        }t'          # j        |          $nH	 t'          # j                  $n# t`          $ r t'          #          $Y nw xY w $j        dIi  j        $ &          }$|_1         j2        r' j3        r dd l4}|3                    | j5        "          } j6        s4 j7        s- j8        s& 9                    |          }tu          |          }|S tw           j                  } j<                            d#           j<        d#         |d#<    j<                            d$           j<        d$         |d$<    j8        r	 dd%l=m>} n# t~          $ r t          d&          w xY w j@        r
 j@        |d'<    j<                            d(           j<        d(         |d)<    A                    |||          }tu          |          }|S 	 dd*lBm6}m7}mC} dd+lDmE} n# t~          $ r t          d,          w xY wd} j	        r- j'        s&|F                     j	        d                   |d-<   d}nt           jG        t                    rt           jG                  dk    sA jG        bt          t+           jH                  t+           j                  z
            dk    r( j         d.v r|F                     j!                  |d-<   d} jI        rndd lD} jI        }t          |t                    r, jK        r%|d/k    } t          ||           jK                  }nt          ||jF        |j	        f          }||d-<   n$ jK        r|L                     jK                  |d-<    jM        r
 jM        |d0<    j@        r
 j@        |d'<    jN        r
 jN        |d1<    j<                            d(           j<        d(         |d)<    j<                            d2           j<        d2         |d3<   d4 jO        v r^ j6        rW j<                            d5          } jO        d4         }t          |tv                    r||d6<   nt          |||7          |d4<   d8 jO        v r jO        d8         |d8<   i } j6        rJ|} d4|v rd6|vr|d4         |d6<   d9}!d: j<        v r j<        d:         |d:<   d; j<        v r j<        d;         |d;<   n j7        r|} t          t          jS                  t          d<          k     rd=}!n j	        rd>nd=}!d4 jO        v r jO        d4         |d4<    jT                            d?d@          d@k    r jT        d?         |dA<    A                    | ||          }" jC        r@ ||" j                            dBdC           j                            dDdE          F          }"t          |!tw           j<        fi |dG          }  9                    |"          j*        |!fi |dHdi}tu          |          }|S )JNr   rv   r3   z)Streaming and groupby not yet implementedc              3   *   K   | ]}|j         v V  d S ri   r  )rR   r  r\   s     rU   r  z.HoloViewsConverter.__call__.<locals>.<genexpr>  s*      'J'JaT\(9'J'J'J'J'J'JrW   r  c                     g | ]
}|d k    |S r  rP   r  s     rU   r  z/HoloViewsConverter.__call__.<locals>.<listcomp>  s    FFFa:oo1ooorW   	LongitudeLatituder   r   kdimsr  r   rq   c                 \    i | ](}|t          j        |         j        d                    )S )r   )r  aranger  )rR   r  rm  s     rU   rV   z/HoloViewsConverter.__call__.<locals>.<dictcomp>  sG     &C &C &C*/ ',RYtE{7H7K-L-L &C &C &CrW   )r   r2  c                      |                      j                  } j        di | }|                    |                    |          g          S )N)vdimsrP   )rV  r   selectreindexget_dimension)r8  r   dsdatasetsr\   s      rU   	z_wrapperz.HoloViewsConverter.__call__.<locals>.z_wrapper  sS     &

4+; < <A!0!:!:6!:!:B#%::R5E5Ea5H5H4I:#J#JJrW   c                 z    | j         d         j        } |||| j                  }j        |_        | |_        |S )Nr   r  )r^  rO   rm  _transforms_dataset)rb  r   r   r   elrw   methods        rU   method_wrapperz3HoloViewsConverter.__call__.<locals>.method_wrapper  sA     " 0A!'1abg!>!>!>B-4-@BN*,BK#%IrW   TF)r   r   per_elementlink_inputsc                 R    i | ]#\  }}D ]}|f|z    ||                   $S rP   rP   )	rR   rS   rT   r   rw   ri  r   r   zss	       rU   rV   z/HoloViewsConverter.__call__.<locals>.<dictcomp>  sg     'V 'V 'V+/1aRT'V 'VMN )*tAvvvaAwqz/J/J 'V 'V 'V 'VrW   c                 T     ||| j                   }j        |_        | |_        |S Nr  )rm  rf  rg  )rb  r   r   rh  rw   ri  s       rU   rj  z3HoloViewsConverter.__call__.<locals>.method_wrapper  s1    #VAqrw777)0)<&(!	rW   c                 ,     | j                   S rp  r  )r   rw   ri  r   r   s    rU   <lambda>z-HoloViewsConverter.__call__.<locals>.<lambda>  s    vvaAGL/Q/Q/Q rW   c           	      :    i | ]}| |j                    S )r  r  )rR   r   rw   ri  r   r   s     rU   rV   z/HoloViewsConverter.__call__.<locals>.<dictcomp>  s0    "U"U"UQ1ffQ17<&H&H&H"U"U"UrW   r  rI   )shared_xaxisshared_yaxisr  )rb   )streamsc                     g | ]
}|d k    |S r  rP   r  s     rU   r  z/HoloViewsConverter.__call__.<locals>.<listcomp>  s    JJJQ!z//q///rW   r   r   r   )downsample1dz&Downsampling requires HoloViews >=1.16r   r   x_range)r   r   rG  )
reductionszIn order to use datashading features the Datashader library must be available. It can be installed with:
  conda install datashaderr   )r   r   r   r,  rH  r   r   y_ranger   color_levelsr   r1  
line_widthr#   r   r   z1.18.0a1r   
ImageStackr   r3  ro  rA     rB        ?)rA  rB  r  r  rP   )Vr   r  r4  rh  r  r'  rU  r   r  r   r^  r  NotImplementedErrorrm  r7  r  r:  r   r   r   r  r_  r  keysra  assign_coordsrO   r2  r   redimr5  r   r   r   rZ  r   applyr   re  rI  layoutoverlayoptsr   r  rK   ry  r  re   rg  r   r   r;  r9  r   r   r   _apply_layersr4   rZ   rd  holoviews.operation.downsamplery  r<  r   _resample_objholoviews.operation.datashaderrG  
datashaderr{  r,  r   r`  r   rB  r\  meanrH  r   rX  r*   r0   hv__version__rj  r5   )(r\   r   r   r   r  r   
shape_dimsr	  dims_with_coordsmissing_coords
new_coordsrO   
dimensionsrd  objrj  r  
cbcallablegvlayersr  ry  r   r   rG  r{  r  rb  aggr   r   r)  	operationr=  	processedrm  rw   rc  ri  rn  s(   ` ``                               @@@@@rU   __call__zHoloViewsConverter.__call__  s   y Dt$$Y]]3##"d##.2$R$)< 	 0 0dgF d	'SWWq[[~ W)*UVVV9D< *C'J'J'J'J6'J'J'J$J$J *''))} >>>FFdlFFF:>(Rk:66c

!$j.@AAA(**####dBJ// 
@w+.t{/?/?/A/A+B+B(*-dl*;*;>N*N&C &C &C &C3A&C &C &C
1t1??J??%dDL99GG9F
Fd6FD%dDL$??GG!$--#gm22dk22G %6"??64<?HHr77Q;;"+D,<R"H"H"H!I(.!XJ| iK K K K K K )*EEE& & & & & & "ii!qd`eiff% 'V 'V 'V 'V 'V 'V 'V 'V3;=3F3F3H3H'V 'V 'V]gi i i" " " " " "
 #..1t5: ) < <CCR1'(8DDDE
< 4$%Q%Q%Q%Q%Q%Q%Q+57 7 7CC ""U"U"U"U"U"U"URT"U"U"U(24 4 4CC fQ555| U U0@0@-1]Tcjj)))DG@T@Ty fhhty))..Dt]d.ee~ 'VQ**7?!#JJ!22!H!H!HJ dk]CCC'=$BBBJJ$,JJJG>Bh!V+z!:!:SRUJJ%d*W2DEEEGG]h..''''!$
33 D")$"="=#yJDJJ$:J")$d"C"C0")$"="=$ 0 0 0")$--0+gm::dk::GfQll&8 	E 	E!!!!**ST-C*DDC 	$. 	DO 	'',,F/77FMDL)))?w''3 OG4DM?x((4!_X6DN? 	LGGGGGGG L L L!"JKKKL  5%)_\"""6**6"&/&"9Y''c4@@F/77FM	*VVVVVVVVVV------- 	* 	* 	* ) * * *	* 7 	4= 	!+!5!5dgaj!A!ADKK$&$'' 	CKK!OOtv~RUVYZ^ZhViViloptp|l}l}V}R~R~  BC  SC  SCi666!+!5!5d6F!G!GDK? 
	B####/C#s## E E![0.gj#..t??(r|RU.CDD!$D_ 	B!+!A!AD? 	1!%D? 	1!%D? 	1!%D?v&&2"of5DO?v&&2"of5DOT%%%$.%_((88F#F+D$%% S$([!!+D&kRRRV4+++!%!1,!?D> 	6!I~~kT&9&9$(L[!F$/)) $ 8W(DO;;26/B[2\./^ 		6!Ir~&&)<)<<< )-=g))) $ 0 8f##C66,FF $ 0 5f&&y#t<<	> 	M!	)DIMM(A4N4N,0IMM+s,K,KM M MI 64#A#A5#A#A7SSS3##I..3FTTdTTGTTT+F33s*   4T
 
T&%T&(X/ /Y	0[ [c                 n      fd} j         t          |t          |fi ||          }n	 ||fi |}|S )Nc                 4    t          |           j        k    S ri   )r^  r   )r  r\   s    rU   exceeds_resample_whenz?HoloViewsConverter._resample_obj.<locals>.exceeds_resample_whenn  s    t99t111rW   )r  	predicate)r   r,   r   )r\   r  r  r  r  r  s   `     rU   r  z HoloViewsConverter._resample_objm  su    	2 	2 	2 	2 	2 )"!)44t44/  II "	#....IrW   rI   c           	          t          | j        fi t          | j        fi | j        }|                    |           t          |||          S )Nr  )rZ   rd  rX  rg  r9  r5   )r\   r=  r  customr  s        rU   	_get_optszHoloViewsConverter._get_opts{  sU    DOQQtD,<'P'P'P'PQQF649999rW   c                    | j         rdd l}|j        j                                         }| j         dv r|                    | j                   }n5| j         dur,t
          j        j                            d| j         z             ||                    | j                  z  }| j	        rdd l}t          | j	                  D ]}t          |j        |          }|t          d|z            |                                }t          | j	        t                    rO| j	        |         }|dvr(t
          j        j                            d|z             n|                    |          }|j        d	v r|                    | j                  |z  }||                    | j                  z  }| j        rL| j        sE|                     | j        t&          j        j        t&          j        j        j                  }||z  }n]| j        rV| j        rOdd l}|                     | j        |j        j        |j        j        t&          j        j        j        f          }||z  }|S )
Nr   )10m50m110m)r   TzIcoastline scale of %s not recognized, must be one '10m', '50m' or '110m'.rx  zvFeature %r was not recognized, must be one of 'borders', 'coastline', 'lakes', 'land', 'ocean', 'rivers' and 'states'.zJFeature scale of %r not recognized, must be one of '10m', '50m' or '110m'.)LandOcean)r   r;  featurer`   r  rX   r>  r?  r9  r   reversedr  rD  r'  rZ   groupr   r   
_get_tilesr  elementtile_sourcesTilesWMTS)r\   r  r  r   r  feature_objr   r   s           rU   r  z HoloViewsConverter._apply_layers  s   > 		J!!!!
,2244I~!777%NNN@@		t++
 ((.04?@ @ @ 	$2HIIIC= 	T!!!!#DM22 T T%bj'::&$13:;< < < *//11dmT22 D M'2E$:::
(00E   
 '2&6&6U&6&C&C$(999%**d6L*MMPSSCC  0 0D<R 0 S SSCC: 	dh 	OO

'
 & E
 #+CCZ 	DH 	!!!!OO
,"*"2"89 E
 #+C
rW   c                 2   | j         dk    rdn| j         }|du r |d                     }nm||v r ||                     }nX||                                v r |            }n7t          ||          r|}n$| dt          |           d}t	          |          |S )NESRIEsriImageryTOSMz' tiles not recognized, must be one of: z or a tile object)r   r3  r'  rH  rD  )r\   sourcesourcestypestile_sourcer   msgs          rU   r  zHoloViewsConverter._get_tiles  s    '+zV';';mm$"GEN$$EEG##(GK(**EEGNN,,,,KMMEEU++ 	"EE iivgiii  S//!rW   rangec                 x   t          | j                  }|                                D ]\  }}||i}||v r|||         }t          |t                    r |j        di |}nSt          |t                     rd|vrt          |fi |}n,t          |t          t          f          rt	          |fi |}n|}|||<   |S )Nr  rP   )rZ   r5  re  r'  r   r`   rR  rB  )r\   rangesattrr  rS   rr  r/   s           rU   r  zHoloViewsConverter._merge_redim  s    T[!!LLNN 	 	DAqQiGEzzAhc9-- 4##)..g..CCT** 4wc/A/As..g..CCeS\22 4#C33733CE!HHrW   c                     t          |t                    r|j        j        }t          |t                    r|| j        v r|S d S d S ri   )r'  r/   	dimensionrO   rB  r`  )r\   r  s     rU   _validate_dimz HoloViewsConverter._validate_dim  sS    i%% 	1!+0Ii%% 	)t~*E*E	 	*E*ErW   c                 \    |                      | j                            d                    S )Nr   )r  rX  r  rf   s    rU   r\  zHoloViewsConverter._color_dim  s'    !!$"2"6"6w"?"?@@@rW   c                    dD ]k}| j                             |          }|r|ng |z   }|                     |          }|=||vr*|                    |           |                    |           lt	          | j        dd           }|.||vr*|                    |           |                    |           | j        D ]9}t          |t                    r"|| j	        v r||vr|                    |           :||fS )N)r   r  r   r   column)
rX  r  r  r[  r  r   ru  r'  rB  r`  )r\   rZ  r^  r)  r  r  agg_cols          rU   _get_dimensionsz"HoloViewsConverter._get_dimensions  s)   9 	- 	-E(,,U33I#(0%%bE9J**955I *,,Y'''!!),,,$/8T::j((W%%%!!'*** 	( 	(I9c** (yDN/J/JZ//Y'''e|rW   c                 X     |j         di |ddi}|r |j         di |d| j        i}|S )Nr  rI   rP   )r  rN  )r\   r  cur_optscompat_optss       rU   _set_backends_optsz%HoloViewsConverter._set_backends_opts  sW    ',;;;;7;;; 	P"glOO[OO$:NOOOGrW   c                      | j         |fddi|| j        dk    r=|                      || j                  }fd|                                D             }ni }|fS )Nr  rI   r  c                 $    i | ]\  }}|v	||S rP   rP   )rR   rS   rT   r  s      rU   rV   z7HoloViewsConverter._get_compat_opts.<locals>.<dictcomp>  s0       A8I8I18I8I8IrW   )r  rN  re  )r\   el_namer  r  r  s       @rU   _get_compat_optsz#HoloViewsConverter._get_compat_opts  s    !4>'EE7EfEE7**..$:N.OOK   !,!2!2!4!4  KK K$$rW   c                     |s| j         |         }|t          j        | j                 vrt	          |d| j        d          dS )zZ
        Raise an error if the element is not available with the current backend.
        z plot not supported by the z	 backend.N)r  r
   r6  rL  r  )r\   r   r  s      rU   _error_if_unavailablez(HoloViewsConverter._error_if_unavailable  s]      	/(.G%.777%PPdmPPP   87rW   c           
          |dk    r j         rdndgng } j        s|                     j         rdnd           n j        s
| j        d<   d j        v rd|vr|                    d           d j        v rd|vr|                    d                                |j        |d          }                     |j        | j                  }||fD ]2}d	|v r,|d	         |j	        v rt          j        |d	                   |d	<   3|j        |d
t          d
t           j        d          d          i}	|j        |d
t          d
t           j                   j                  i}
|g}|t          u r+ j                            d          r| j        d         gz  }|t$          u rR j                            d          r8 j                            d          r| j        d          j        d         gz  }n4|t$          u r+ j                            d          r| j        d         gz  }                     |g|          \  }} j        r|t*          u r j        st/           fd|D                       r|                                }   |||r|gng  j        z   |          j        di  j        j        di  j                            |	d                              |
 j                  S  t;          | j        |z   |                              ||| j                  j        di  j        } j        r|                                n|                     d          }n  ||||          j        di  j        } |j        di  j                            |	d                              |
 j                  S )Nr  r   r   r2  r   r   rI   labelledr  r   r	   Fbatchedr  r   r   r   c              3   *   K   | ]}|j         v V  d S ri   r  )rR   r   r\   s     rU   r  z2HoloViewsConverter.single_chart.<locals>.<genexpr>@  s*      55QqDL(555555rW   sortrP   )!r   r8   r[  r2  ri  rd  r  rO   rN  r   r  r/   r5   rZ   rf  r   rh  r  r$   r  r   r   rI  r7  r  relabelr  r5  r  r   tor  r  )r\   r  r   r   rm  r  cur_el_optscompat_el_optsopts_r  r  ysrZ  r^  charts   `              rU   single_chartzHoloViewsConverter.single_chart  s6   45LL4;/CCC00b~ 	'OO4;7CCC8888 	'%&DM'"t&&3h+>+>OOC   t&&3h+>+>OOC   nnW\HgnVVxQUQeff!>2 	8 	8E%E'Ndl$B$B!#g!7!7gL+[$t7ISX2Y2Y2Ycjkkk

 L.[$t7I2J2JTXThiii

 Sd??ty}}T22?49T?##BiDIMM'$:$:ty}}W?U?U49W%ty'9::BB	!!dimmG&<&<!49W%&&B++QC44u7 	I$t}5555"55555 .++--D !a'7ssR&@"EE 2 2#'=2 2. .!%. . h88k43GHH	J
8GD$'%-77::tw0 007I I:>-I IE&*mRELLNNNE9R9REE7GGD%//7HH$-HHE**dk**h00k4+?@@	BrW   c                     |du rdS |p j         k    r j         nd}|K j        r j        }nt          |j                  } fd|D             }t          |          r|d         nd}|s|st          d          |S )z*This should happen before _process_chart_yFNc                 N    g | ]!}|j         j        z   j        z   gz   v|"S rP   r   r4  r   )rR   r   r\   r   s     rU   r  z7HoloViewsConverter._process_chart_x.<locals>.<listcomp>[  s:    OOO1DGDL,@,JA3,N#N#N!#N#N#NrW   r   z2Could not determine what to plot. Set x explicitly)r   r   ra  rU  r   r^  rD  )r\   rm  r   r   single_yr>  xss   `  `   rU   _process_chart_xz#HoloViewsConverter._process_chart_xP  s    ::42DFaKK$&&T9~ (\$,''OOOOOROOOBR*1dA 	S 	SQRRRrW   c                     |p j         }|p fdj        D             }t          |          dk    r*ddlm fd|D             }t          |          dk    r|}t          |          dk    s|r|d         n|}|S )z)This should happen after _process_chart_xNc                 N    g | ]!}|gj         z   j        z   j        z   v|"S rP   r  )rR   r   r\   r   s     rU   r  z7HoloViewsConverter._process_chart_y.<locals>.<listcomp>f  s9    YYYQqc$'k$,6Nty6X-X-X!-X-X-XrW   r3   r   )is_numeric_dtypec                 6    g | ]} |                   |S rP   rP   )rR   r/   rm  isnums     rU   r  z7HoloViewsConverter._process_chart_y.<locals>.<listcomp>j  s,    @@@#uuT#Y/?/?@#@@@rW   )r   r   r^  pandas.api.typesr  )r\   rm  r   r   r  r  num_ysr  s   ```    @rU   _process_chart_yz#HoloViewsConverter._process_chart_yb  s    K9YYYYYT\YYYB2ww{{FFFFFF@@@@@@@@v;;!##BRA1rArW   c                 d     j         n j        st                                         ||||          }                     |||          }| j        r j        dk    rddlm} | j	        v r_ j	        
                    |          } |j        |                   r.                     j	        
                    |                    n/|j        v r& ||                   r                    |           j        r5t!           fd j        D                       r                                g }|| j         j        fD ]1}	|	-|                    t+          |	t,                    r|	n|	g           2 fd|D             }
t/          |
 j	                  \  }||fS )Nr>  r  r   )is_datetime64_any_dtyper  c              3   @   K   | ]}|j         v r|j        v|V  d S ri   ra  r   rR   r   rm  r\   s     rU   r  z9HoloViewsConverter._process_chart_args.<locals>.<genexpr>  sH       "9 "9"#t|"3"3"#4<"7"7 #$"7"7"7"7"9 "9rW   c                 &    g | ]}|j         v|S rP   r`  rR   r/   r\   s     rU   r  z:HoloViewsConverter._process_chart_args.<locals>.<listcomp>  s%    LLLS#T^2K2KS2K2K2KrW   )rm  r  rG   r  r  r   r:  r  r  ra  r  axes
sort_indexr   sort_valuesr   r7  ru  r  r   r  r'  rU  rF   )r\   rm  r   r   r  r>  is_datetimer  r  rq  r  r  s   ``          rU   _process_chart_argsz&HoloViewsConverter._process_chart_argsp  s   <9DD" 	3,T22D!!$1h:!NN!!$1h77 =T^=0I0IOOOOOODL  **1--;ty/00 G??0B0B10E0E?FFDdl"";tAw'' /++A..D > 	&c "9 "9 "9 "9 "9T_ "9 "9 "9 9 9 	& ##%%D 
q$'4?3 	K 	KC!!C)>)>"I##SEJJJLLLLJLLL	1$	4<PP4QzrW   c           
         |                      |||          \  }}}|r6|r4t          |t          t          f          s|                     ||||          S |r3|r1t          |          dk    r|                     |||d         |          S |dk    r| j        rdndgng }| j        dk    r|                    | j        rdnd           d| j	        v rd|vr|                    d           d| j	        v rd|vr|                    d           |j
        |                     |j
        |d	
          dt          dt          | j        d          d	          i}|j
        |                     |j
        || j        
          dt          dt          | j                  | j                  i}g }|D ]s}	|                     |g|	g          \  }
}  |||
|          j        di |	| j        i}|                    |	  |j        di | j        j        di | j        f           t|                     || j        d                              |d	                              || j                  S )z'Helper method for simple x vs. y chartsr3   r   r  r   r   r
  r   r   rI   r  r	   Fr  r  r  rP   )r  r'  rU  rR  r  r^  r   r   r[  rd  rO   r  r5   rZ   rf  rN  r  r  r  ri  r5  rJ  r   r  )r\   r  r   r   rm  r  r  r  chartsr   rZ  r^  r  s                rU   r  zHoloViewsConverter.chart  s   --dAq99
a 	= 	=:a$77 	=$$WaD999 	=1 	=Q1$$Wa1t<<<45LL4;/CCC00bw&&OO4;7CCC888t&&3h+>+>OOC   t&&3h+>+>OOC    L$..RY.ZZ[$t7ISX2Y2Y2Ycjkkk

 L$..RVRf.gg[$t7I2J2JTXThiii

  	T 	TA//aS99LE55GGD%//5NND<L8MNNEMM1Bmem<<dm<<BQQT[QQRSSSSfd&6UCCh00k4+?@@	BrW   c                 f    |                      d           |                     t          |||          S )Nr   )r  r  r   r\   r   r   rm  s       rU   r   zHoloViewsConverter.line  s.    ""6***zz%At,,,rW   c                     | j                             dd          }|                     |||                              dd|z             S )Nr   midr   zsteps-)interpolation)rh  r  r   r  )r\   r   r   rm  r   s        rU   r   zHoloViewsConverter.step  sD    	gu--yyAt$$,,WHUN,SSSrW   c                 f    |                      d           |                     t          |||          S )Nr   )r  r  r   r  s       rU   r   zHoloViewsConverter.scatter  s.    ""9---zz'1a...rW   c                     |                      d           |                     t          |||          }| j        r%|                    t          j        t                    }|S )Nr   )r  r  r   rO  mapr  r	   )r\   r   r   rm  areass        rU   r   zHoloViewsConverter.area  sQ    ""6***

4At,,< 	5IIdj)44ErW   c                 f    |                      d           |                     t          |||          S )Nr   )r  r  r$   r  s       rU   r   zHoloViewsConverter.errorbars  s.    "";///zz)Q4000rW   c                 ~    |dk    r j         rdndgng } j        dk    r|                     j         rdnd           d j        v rd|vr|                    d           d j        v rd|vr|                    d                                |j        |          \  }}|g}t           fd|D                       r|                                }|||gz            }t          |d	          rd
dl	m
}	 nt          j
        }	 |	||g j         j                  }
| j        g} j        g j        z   } j        r8t          |
||                              ||                                          }n ||
||          }  |j        di  j        j        di  j                             j        ||          S )K
        Helper method to generate element from indexed dataframe.
        r  r   r   r
  r   r   )r  c              3   *   K   | ]}|j         v V  d S ri   r  r  s     rU   r  z4HoloViewsConverter._category_plot.<locals>.<genexpr>  s*      22QqDL 222222rW   r  r   melt)id_varsr  
value_namer  r  rP   )r   r   r[  rd  r  rO   r7  r  rC   dask.dataframer  r  r   ru  rI  r   r  r  r  r5  r  ri  r  r  )r\   r  r   r   rm  r  r  r  r  r  dfrZ  r^  r  s   `             rU   _category_plotz!HoloViewsConverter._category_plot  s    56LL4;/CCC00bw&&OO4;7CCC888t&&3h+>+>OOC   t&&3h+>+>OOC    $ 5 5glX 5 V V+#2222'22222 	&##%%DAqcE{v&& 	+++++++7DT$d.>4K[\\\D$%!"4?2= 	,"eU++..w::AACCCC'"eU++C0		((DK((0AA4=AAt.{[[	]rW   c                    |                      d           |                     |||| j                  \  }}}|s| j        r{|ry| j        s/t          |t          t
          fpt          |          dk              sCt          |t          t
          f          r|d         n|}|                     t          |||          S | 	                    t          |t	          |          |          S )Nr   r  r3   r   )
r  r  r   r'  rU  rR  r^  r  r   r  r  s       rU   r   zHoloViewsConverter.bar  s    ""5)))--dAqTW-MM
a 	7 	7a 	7TW 	7Jq4-B^SVWXSYSY]^S^4_4_ 	7"1tUm44;!!A$$T1a666""4DGGT:::rW   c                 Z    |                      |||                              dd          S )Nr   T)r  )r   r  r  s       rU   r   zHoloViewsConverter.barh  s+    xx1d##((T(BBBrW   c                 J   |                      |d|          \  }}}i }d| j        v r,t          |t                    rdnd}| j        d         ||dz   <    | j        |j        fi |\  }}| j                            dd          }	t          |t          t          f          sQ||	i}
   ||| j        |          j        j        di |
j        di | j                            | j        ||          S | j        d	k    r| j        rd
ndgng }| j        dk    r|                    | j        rdnd
           d| j        v rd|vr|                    d           d| j        v rd
|vr|                    d
           ||d<   | j        g}|t          |                   }t-          |d          rddlm} nt2          j        } ||| j        | j                  }t          |          r^|| j                 j        ||d                  j        ur9|| j                                     ||d                  j                  || j        <   |                     | j        |	i          }   |||| j                  j        di |j        di | j                            | j        ||          S )r  Fr   r   r   _fill_colorr   r3  r  Groupr   r   r
  r   r   r  r  r   r  r  r  rP   )r  rX  
issubclassr   r  rO   rd  r  r'  rU  rR  r   r  r  r  ri  r  r  r   r   r   r[  rC   r  r  r  r  astyper  )r\   r  r   rm  r   r  prefixr  r  r   r  r  rZ  r  r  r  s                   rU   _stats_plotzHoloViewsConverter._stats_plot  s    --dE1==
ad&&&!+GV!<!<GXX%F+/+;G+DF6-'( 5 5gl M Mf M M+""6<88!dE]++ 	aYFK9GGD$'1--39CCFCCK\\dm\\U42XS^U__a 594D4O4O4;/CCC00UWw&&OO4;7CCC888t&&3h+>+>OOC   t&&3h+>+>OOC    (!"DGG}v&& 	+++++++7DT$!1d>NOOO77 	Qr$*+1ad9III#%d&6#7#>#>tAaDz?O#P#PBt !!4#3T":;;K:E4#344:CCUCCK\\dm\\t.{[[	]rW   c                     |                      d            |                     t          ||          j        di | j        S )Nr   rP   )r  r"  r   r  r5  r  s       rU   r   zHoloViewsConverter.box1  sC    ""5))):t
At44:IIT[IIIrW   c                     |                      d           	 ddlm} n# t          $ r t          d          w xY w |                     |||          j        di | j        S )Nr   r   )r   z-Violin plot requires HoloViews version >=1.10rP   )r  holoviews.elementr   r<  r"  r  r5  )r\   r   r   rm  r   s        rU   r   zHoloViewsConverter.violin5  s    ""8,,,	O0000000 	O 	O 	OMNNN	O6t4006EEEEEs    8c           	      	   |                      d           |                     |d|          \  }}}| j        rdgndg}d| j        v rd|vr|                    d           d| j        v rd|vr|                    d           |                     d|d	          t          d
| j        d          d}|                     d| j                  t          d
| j        | j                  d}| j	        
                    dd           | j	        
                    dd          | j	        
                    dd          d}d| j	        v r-| j	        d         }t          |t                    r||d<   n||d<   t          |t          t          f          s}d| j	        vr||         }	|	                                |	                                }}
t#          |	          r)|
                                |                                }}
n7t'          |	          r(|
                                |                                }}
|
|f|d<   t+          || j                  }| j        rbt/          |                    | j                  fd|i|x}}|j        }| j        r|                                n|                    d          }nt/          |fd|i|} |j        di | j                            |d                              || j                  S g }|D ]}d| j	        vr||         }	|	                                |	                                }}
t#          |	          r)|
                                |                                }}
n7t'          |	          r(|
                                |                                }}
|                    |
|f           |rtA          |          |d<   t+          |          }g }|D ]8}t/          |fd|i|}|                    | |j!        di | j"        f           9 | #                    |d          j        di | j                            |d                              || j                  S )Nr~   Fr   r   r   r   r   rI   r  r	   r  )r   r	   r   r   r   )r   r   r   r   num_binsr  r  rP   )$r  r  r   rd  r[  r  r5   rf  rN  rh  r  r'  intrU  rR  minmaxr9   computer=   executer   r   r+   r4  lastrI  r  r  r  r5  r  r   r  ri  rJ  )r\   r   r   rm  r  r  r  	hist_optsr   r  yminymaxrb  r~   histsr  rq  s                    rU   r~   zHoloViewsConverter.hist=  s   ""6***--dE1==
a K2C55cUt&&3h+>+>OOC   t&&3h+>+>OOC    hPWXX$[$2DgVVV
 

 T=QRR$[$2DdNbccc
 
 #')--T"B"B#y}}Xu==#'9==u#E#EG G	 TY9V$D$$$ )(,	*%%$(	&!!dE]++ 	F$)++!W ffhhd2;; @!%$DDR[[ @!%$D)-t	+&tw''Bw @(JJtw''   34 8A    u z*.-VU]]PU]=V=V!"???Y??EK..$+..T(GT44T+t/CTDDF  	, 	,C$)++#Y ffhhd2;; @!%$DDR[[ @!%$DtTl+++ 	7%.v%6%6Ik"T]] 	? 	?CR<<3<)<<DLL#|t|<<dm<<=>>>>e%00& && &h00k4+?@@	BrW   c           	      (   |                      d           | j                            dd           }| j                            dd           }||t          d          t	          | j                  }|                     |||          \  }}} | j        dddi||                     dd          t          d	t	          | j        d
          d          d} | j        dd| j	        i||                     d| j	                  t          d	| j        | j	                  d}| j
                            dd          }	t          |t          t          f          s~||	i}
| j        rat!          |                              t$          |g | j                  }| j        r|                                n|                    d          }nt%          ||g           }n| j        |	i}
||         }|                    | j        | j                  }t!          |          }t3          |          rR|                    t$          | j                  }| j        r|                                n|                    d          }n6| j        dz   }t5          d
t7          g | j        |          i| j        g          }|                     |
          }  |j        di |j        di | j                             |d                               || j	                  S )Nr   r   r   z)hvplot does not support bw_method and indr   r  rI   r  r	   r   )legend_limit)r   r   r	   r   r3  Fr  r  z Density)r   rP   )!r  rh  rV  rD  rZ   r  r  r5   rf  rN  rd  r  r'  rU  rR  r   r   r  r   rI  r  r  r   r  r   r^  r	   r   r  r  r  ri  r  )r\   r   r   rm  r   r   	dist_optsr  r  r   r  distsr  rb  vdimr  s                   rU   r   zHoloViewsConverter.kde  s   ""5)))IMM+t44	immE4(( COHIIIOO	--dAq99
a*DNXX7XiXXNN>7NCC$[$t7IXY2Z2Z2Zdklll
 
 +DNee4CWe[deeNN>4;ONPP$[$2DdNbccc
 
 ""6<88!dE]++ 	6YFw 2((q"dgFF*.-VU]]PU]=V=V$T1b11&-F7DD$4AQRRBB2ww 6lD,<==*.-VU]]PU]=V=V'*4!1d2t/?&F&F"G#'#3"46 6!!&))       * *=* * h00k4+?@@		BrW   c                 0    |                      |||          S ri   )r   r  s       rU   r   zHoloViewsConverter.density  s    xx1d###rW   c                 (   || j         n|}| j        rIt          | j                  dk    r| j        | j        gnd } t          ||          j        di | j        S  t          || j	        
                    d                    j        di | j        S )Nr  rY  r   rP   )rm  r  r^  ra  r   r   r   r  r5  rh  r  )r\   r   r   rm  rZ  s        rU   rw   zHoloViewsConverter.dataset  s     Ltyyd< 	P(+DL(9(9Q(>(>TVTV$$DE374u---3BBdkBBB@74y!9!9::@OO4;OOOrW   c                    |                      d           || j        n|}|                     d          \  }}srdk    r2d|j        j        fv r"g |d<   d\  |j        |j        |j        f}dg}nb| j                            dfd	|j        D             d
                   }|g| j	        z   }d| _
        |                     |d          \  }|                     |d
         | j        d         i          }t          |g|fi | j        }d| j        v r!|                    | j        d                   } |j        di |                    | j        ||          S )Nr   r   r   r  r  )r   r  r
  r   c                      g | ]
}|fv|S rP   rP   rR   r   r   r   s     rU   r  z.HoloViewsConverter.heatmap.<locals>.<listcomp>  s"    #O#O#O!qAArW   r   FTr  r   r   )functionr  rP   )r  rm  r  r  rO   r   r3  rh  r  ru  r   r  r  rj  r   ri  	aggregater  r  r  )	r\   r   r   rm  r  r  r   r  hmaps	    ``      rU   r   zHoloViewsConverter.heatmap  s   ""9--- Ltyyd $ 5 5i @ @+ 		MQ 		MANNqWdjo4N/N/N#%HZ %DAqL$*dk:D	AA	c#O#O#O#O#Ot|#O#O#OPQ#RSSAdo%A"DN11$1t1LLJD!Q!!1Q4)9#)>"?@@taVQ88$-88	))>>495F+G>HHD
##U##t.{[[	]rW   c                    |                      d           d| _        |                     |||d          \  }}}| j                            d          r| j        d         gng }|| j        z  }|                     d          \  }}d| j        v r| j        d         |d<   d	| j        v r| j        d	         |d	<   d
| j        v r| j        d
         |d
<   |                     |r|d         nd| j        d         i          }| 	                    d          }t          | j                  }	| j        r
| j        |	d<     ||||g|pg fi |	j        di |                    | j        ||          S )Nr|   FTr<  r   r   r   r   r   r   r   Countr   r   r  rP   )r  r   r  rh  r  ru  r  r  rj  _get_elementrZ   ri  r   r   r  r  r  )
r\   r   r   rm  r   r  r  r  r  r_   s
             rU   r|   zHoloViewsConverter.hexbin  s   ""8,,,--dAq4-HH
a $	c 2 2:TYs^	T_ $ 5 5j A A+	))%)Y/@%AH\"""#'9Z#8HZ $)##$(Ik$:H[!!!A$:AaDD7T=Mc=R"STT##H--dm$$8-TXVE]>q!fag28888>GGGGt.{[[	]rW   c                 :   |                      d           d| _        |                     |||d          \  }}} | j        di | j        \  }}|                     d          }  ||||g          j        di | j                            | j	        ||          S )	Nr}   FTr<  r   r  )r   rP   )
r  r   r  r  rh  rB  r  r5  r  r  r\   r   r   rm  r  r  r  s          rU   r}   zHoloViewsConverter.bivariate  s    "";///--dAq4-HH
a 5 5 O OTY O O+##K00+q!f%%+::dk::t.{[[	]rW   c           	      ,                          dt                                           dt                     | j        n|}E fd j        D             }||d                  j        j        dk    r	|d         n j        d          j        	                    dd          }|!fd|j
        D             d d         \  }}}}	n|\  }}}}	 j        	                    d	d
           j        	                    dd          }}
t          |          t          |	          k                        |
|d          }t          |g||||	g          }|j                 j        j        dv rt          |||	g          }nt          |          rjt          j        t          j        |                             |z  dz  }|                    t                    |z
  t                    |z             }n1|                    t                    t                              }t          |d|d|	g          }t          |||g          }                     d          \  }}|                    d           ||d<                        d          \  }}|                    dg           }d|v rDt+          dz  fdd|z  fdd|z  fdd|z  fdd|	z  fg          ||                    d          <   ||d<    j        	                    dd          |d<   d |vrd!k    rd"n|d <   d#|vrd"|d#<    |j        d%i  j                             j        ||$          } |j        d%i  j                             j        ||$          }||z  S )&Nr   c                 &    g | ]}|j         v|S rP   r  )rR   r  r\   s     rU   r  z+HoloViewsConverter.ohlc.<locals>.<listcomp>  s%    RRR#T\:Q:Q:Q:Q:QrW   r   Mr   r  c                      g | ]
}|k    |S rP   rP   )rR   rq  r   s     rU   r  z+HoloViewsConverter.ohlc.<locals>.<listcomp>
  s    BBB##rW      r   redr   green)TFSUOg       @)lbounduboundrM  rN  r&   r"  r   r'   r$  z@{%s}OpenHighLowClose)tooltipsr   blackr   r  r  r   r  rP   )r  r&   r'   rm  r`  r  r   ra  rh  r  r   r/   
categorizer   r^  r  r)  diffr  r  rV  r   r  r  r5  r  r  )r\   r   r   rm  r`  r   ohlr   negpos	color_exprb  rectssamplingsegmentsrect_cur_optsrect_compat_optsseg_cur_optsseg_compat_optsr"  s   ``                    rU   r   zHoloViewsConverter.ohlc  s   ""6:666""68444 Ltyyd9RRRRRRRIIaL!',33aLLO	k3//9BBBBBBB2A2FJAq!QQJAq!Q9==e44dimmKQX6Y6YSVVCFF]..c#/F/FGG	TA3Aq!--71: E))rAq!Q<00EE2ww @6"'"Q%..11E9"<\\QQ\QQ\\QA\??rHa1#=>>EBAq!--*.*?*?*M*M'''"""!*g(,(=(=j(I(I%o  "--e*3GaK 67Q;"7&'A+9N!$w!&<> + + +E%++g&&' !&W!%|W!E!Eg<''+,<<RRQL"<''%'L"HN))T[))U4*(o  G G 	 EK&&$+&&U4*)7G  I I 	
 %rW   c                    |                      d           || j        n|}t          |j        t          t
          f          r|                                }|                     d          \  }}|                     d          }  ||| j	        
                    d          g           j        di | j                            | j        ||          S )Nr   r   r   r  rP   )r  rm  r'  r  r1   r2   r  r  rB  rh  r  r  r5  r  r  rD  s          rU   r   zHoloViewsConverter.table6  s    ""7+++ Ltyyddj=*"=>> 	&##%%D $ 5 5g > >+##G,,AdimmI66;;APPDKPPt.{[[	]rW   c                 >  
 |                      d           d| _        |                     |d          \  }| j                            d          }|sfd|j        D             d         }n*||j        vr!|
|                    
fdd	
          |d<   d}|                     g|g          \  }}|                     d          \  }}| 	                    d          }	  |	|||          j
        di | j                            | j        ||          S )Nr{   FTr<  r   c                      g | ]
}|fv|S rP   rP   r;  s     rU   r  z-HoloViewsConverter.labels.<locals>.<listcomp>H  s"    ???!qAArW   r   c                      j         di | S )NrP   )rl  )rp  template_strs    rU   rr  z+HoloViewsConverter.labels.<locals>.<lambda>K  s    3F<3F3M3M3M3M rW   r3   r  r2  r"   r  rP   )r  r   r  rh  r  r   r  r  r  rB  r  r5  r  )r\   r   r   rm  r   rZ  r^  r  r  r  rh  s    ``       @rU   r{   zHoloViewsConverter.labelsA  sI   ""8,,,--dAq4-HH
ay}}V$$ 	?????t|???BDD%%L JJ'M'M'M'MTUJVVDMD++QFTF;;u $ 5 5h ? ?+##H--1eU++1@@DK@@t.{[[	]rW   c                 z     j         n|p j        }|p j        }|p j                            d          }t                    r6dd l}t          |j                  r	                    j
        pd          t                    r j        r5t           fd j        D                       r                                g }|| j         j        fD ]1}|-|                    t          |t$                    r|n|g           2 fd|D             }t'          | j                  \  }	|||fS )Nr   r   r
  )rO   c              3   @   K   | ]}|j         v r|j        v|V  d S ri   r  r  s     rU   r  z;HoloViewsConverter._process_gridded_args.<locals>.<genexpr>c  sH       &= &=A&'4<&7&7&'t|&;&; '(&;&;&;&;&= &=rW   c                 &    g | ]}|j         v|S rP   r  r  s     rU   r  z<HoloViewsConverter._process_gridded_args.<locals>.<listcomp>m  s%    PPPc6O6O6O6O6OrW   )rm  r   r   rh  r  r>   r  r'  r  
to_datasetrO   r7   r   r7  ru  r  r   r  rU  rF   ra  )
r\   rm  r   r   r   r	  r  r  r  r  s
   ``        rU   _process_gridded_argsz(HoloViewsConverter._process_gridded_argsX  s    LtyydKK#s##T?? 	B$-- BDI,@AAd 	U~ *# &= &= &= &= &= &= &= &= #= #= * ''))JDGT_= a a	(%%:i3N3N&_iiU^T_```PPPP
PPPI5dIt|TTGAtQ1}rW   c                 `    | j         |         }| j        rdd l}t          ||j                  }|S )Nr   )r  r   r;  r  rj   )r\   r   r  r;  s       rU   rB  zHoloViewsConverter._get_elementr  s9    $T*8 	:OOOh(899GrW   c                 V   |                      d           |                     ||||          \  }}}}|r|s t          |j                  d d d         \  }}|st          |j                  d         }|g| j        z   }t          | j                  }|                     d          \  }}| 	                    |d         | j
        d         i          }|                     d          }	| j        r
| j        |d<     |	|||g|fi |j        di |                    | j        ||          S )	Nrq   r   r   r   r   r  rP   )r  rm  rU  r  r  ru  rZ   ri  r  r  rj  rB  r   r   r  r  r  )
r\   r   r   r   rm  r_   r  r  r  r  s
             rU   rq   zHoloViewsConverter.imagey  sH   ""7+++224AqAAaA 	)a 	)	??44R4(DAq 	(T^$$Q'AC$/!dm$$ $ 5 5g > >+!!1Q4)9#)>"?@@##G,,8-TXVE]8q!fa226228AA5AAt.{[[	]rW   c                 T                          d                                ||||          \  }}}} fd|j        D             }t          |          dk     rt	          d          |p|d         }|p|d         } j                            d|d                   }|t          |j                  d         }||         }t          |j        |                   }|dk     rt	          d	||fz            t           j
                  }d
|j        v r|j        d
         nd\  }	}
|	dk     r|j        |         d d d         n|j        |         }|
dk     r|j        |         d d d         n|j        |         }||f}t          |          D ]}| |j        di ||ij        fz  }                     d          }                     d          \  }} j        r
 j        |d<    ||||g|j        d |         fi |} |j        di  j                             j        ||          S )Nru   c                 F    g | ]}|j         j        z   j        z   v|S rP   r  r  s     rU   r  z*HoloViewsConverter.rgb.<locals>.<listcomp>  s3    TTTATWT\5I$)5S,S,S!,S,S,SrW   r  z-Data must be 3D array to be converted to RGB.r  r3   r   r   zgSelected bands coordinate (%s) has only %d channels,expected at least three channels to convert to RGB.res)r3   r3   rp  r#   r   r  rP   )r  rm  r  r^  rD  rh  r  rU  r  rZ   ri  r  r  iselr3  rB  r  r   r   r^  r  r5  r  r  )r\   r   r   r   rm  r  r   nbandsr_   xresyresr  r  eldatabr  r  r  ru   s   `                  rU   ru   zHoloViewsConverter.rgb  sk   ""5)))224AqAAaATTTTT[TTTv;;??LMMMNN	gvay119T^$$Q'AAwT['((A:: S#V_- . . . dm$$*/4:*=*=TZ&&6
d%)AXXT[^DDbD!!4;q>%)AXXT[^DDbD!!4;q>bv 	8 	8Ayty..E1:..577FF##E** $ 5 5e < <+8-TXVE]gfq!fgmGVG&<GGGG	((DK((t.{[[	]rW   c                 |   |                      d           |                     ||||          \  }}}}|r|s3t          d |j                                        D                       \  }}|st          |j                  d         }|g| j        z   }t          | j                  }| 	                    |d         | j
        d         i          }|                     d          }|                     d          \  }}	| j        r
| j        |d<     ||||g|fi |j        di |                    | j        ||	          S )	Nrt   c              3   6   K   | ]\  }}|j         d k    |V  dS r3   Nr  rQ   s      rU   r  z.HoloViewsConverter.quadmesh.<locals>.<genexpr>  ,      HHdaQVaZZZZZZHHrW   r   r   r   r   r  rP   )r  rm  rU  r  re  r  ru  rZ   ri  r  rj  rB  r  r   r   r  r  r  )
r\   r   r   r   rm  r_   r  r  r  r  s
             rU   rt   zHoloViewsConverter.quadmesh  s\   "":...224AqAAaA 	Ia 	IHHdk&7&7&9&9HHHHHDAq 	(T^$$Q'AC$/!dm$$!!1Q4)9#)>"?@@##J// $ 5 5j A A+8-TXVE]8q!fa226228AA5AAt.{[[	]rW   c                    |                      d           ddlm} d| j        v rLdd lm} | j        d         }t          ||j                  r$t          ||j                  st          d          | 
                    d          \  }	}
|                     ||||          }| j        r9dd lm} ddlm} | j                            d|j                  } |||          }|rd|	d	<   |	d
         rd|	d<   | j                            dd          }t          |t$                    r||	d<    ||||                              | j        |	|
          S )Nrr   r   )contoursr   zcinvalid transform: Spherical contouring is not supported -  consider using PlateCarree/RotatedPole.r   )r   rx  
line_alphar   Fr   r   r  r}  )r   r   r  )r  holoviews.operationr  rd  cartopy.crsr   r'  r  
ProjectionrD  r  rt   r   r;  r   r  r  rh  r(  r  r  )r\   r   r   r   rm  r   r  r  r)  r  r  qmeshr   r   r   s                  rU   rr   zHoloViewsConverter.contour  s   ""9---0000004?**&&&&&&-A!TX&& Mz!T_/M/M M  "L M M M !% 5 5j A A+aAt,,8 	:&&&&&&((((((,,\4;OPPJGEj999E 	'%&H\"J 	,&+H]#x++fc"" 	.'-H^$vf===t.{[[	]rW   c                     |                      d           |                     ||||d          }| j        d         dk    r"|j        d         j        }|| j        d         i}ni } |j        j        di |S )Nrs   T)r   r   r3  r   rP   )r  rr   rj  r^  rO   r  r  )r\   r   r   r   rm  rs   z_namer  s           rU   rs   zHoloViewsConverter.contourf  s    "":...<<1ad<;;
 C L00^A&+FT-c23EEE#x~#,,e,,,rW   c                    |                      d           |                     |||d           \  }}}}|r|s3t          d |j                                        D                       \  }}| j                            d          }| j                            d          }||g| j        z   }|                     |d         | j	        d         i          }t          | j                  }	|                     d          }
|                     d          \  }}| j        r
| j        |	d	<     |
|||g|fi |	j        di |                    | j        ||
          S )Nrz   r   c              3   6   K   | ]\  }}|j         d k    |V  dS r|  r}  rQ   s      rU   r  z1HoloViewsConverter.vectorfield.<locals>.<genexpr>  r~  rW   r   r   r3   r   r%   r   r  rP   )r  rm  rU  r  re  rh  r  ru  r  rj  rZ   ri  rB  r  r   r   r  r  r  )r\   r   r   r   r   rm  r  r   r  r_   r  r  r  s                rU   rz   zHoloViewsConverter.vectorfield  sk   ""=111224A2FFaA 	Ia 	IHHdk&7&7&9&9HHHHHDAq	g&&immE""CL4?*!!1Q4)9#)>"?@@dm$$##M22 $ 5 5m D D+8-TXVE]8q!fa226228AA5AAt.{[[	]rW   c                 t   |                      |||d           \  }}}}t          | j                  }|r|sKt          |          r| j        rdnd\  }}n-| j        r| j        d dd         \  }}n|j        d d         \  }}|                     | j	        r| j	        | j
        d         ini           }|                     ||gg           \  }}	| j        rt          |          j        }	|                     |          }
|                     |
j                  \  }}||fD ]L}d|v r'|d         |	v rt#          j        |d                   |d<   d|v r|d	v r|	sd
 |d         D             |d<   M| j        r
| j        |d<   | j        rb t          || j        |z   |	          j        |
||	| j        fi |}| j        r|                    d          }n"|                    d          }n |
|||	fi |} |j        di |                    |
j        |id                              |
j        |i| j                  S )Nr  )rW  rX  )r   r   r  rp  r   r   r"  )ry   rx   c                     g | ]
}|d k    |S )r$  rP   r(  s     rU   r  z1HoloViewsConverter._geom_plot.<locals>.<listcomp>	  s    !L!L!LqG||!|||rW   r   Fr  rI   r  rP   )rm  rZ   ri  rD   r   r  r`  r   r  r\  rj  r  r   r^  rB  r  rO   r  r/   r   r   r  rI  r  r  r  r  rN  )r\   r   r   rm  r   r  r_   r  rZ  r^  r  r  r  r  r  s                  rU   
_geom_plotzHoloViewsConverter._geom_plot	  s   224A2FFaAdm$$ 	(a 	(t$$ (48HL00*11" (~eqe,11|BQB'1!!do"e4?D4DS4I"J"Jceff++QFB77u 	(DMM'E##D)) $ 5 5gl C C+, 	M 	ME%E'Ne$;$;!#g!7!7g%D,A$A$A%$A!L!LU7^!L!L!Lg8-TXVE]7 	88'$u558%PTPWbb[abbC} .jjej,,kkuk--'$u7777C	""E""w|X.@@w|[14;OPP	RrW   c                 ^    |                      d           |                     |||d          S )Nry   r  r  r  r  s       rU   ry   zHoloViewsConverter.polygons+	  s0    "":...q!T
;;;rW   c                 ^    |                      d           |                     |||d          S )Nrx   r  r  r  s       rU   rx   zHoloViewsConverter.paths/	  s0    ""7+++q!T888rW   c                 ^    |                      d           |                     |||d          S )Nrv   r  r  r  s       rU   rv   zHoloViewsConverter.points3	  s0    ""8,,,q!T999rW   )rI   )r  ri   )FN)NNN)NNNN)NNNNF)NNNNN)NNNry   )hrj   rk   rl   rm   r  _geom_typesrH  r=  r  rI  rL  rJ  rM  rK  rZ  r   r   r   r   r   r   r   r   r$   r   r   r"   r   r   r   r   r&   r!   r    r   r#   r   r%   r   r  rY  rT  rP  ccpaletterb  r  r]  r8  r6  rQ  rW  rk  r  r  r  r  r  r  r  propertyr\  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r"  r   r   r~   r   r   rw   r   r|   r}   r   r   r{   rm  rB  rq   ru   rt   rr   rs   rz   r  ry   rx   rv   rP   rW   rU   rp   rp   R   s       g gR  N
 J'K4 8B 8B 8B B C CJ ?>>L  M  L
  M  N
  KdVgw' 	=== 	,,,	
 	,,, 	i[ 	555 	NNN 	BBB 	c6] 	GGG 	WWW 	JJJ 	::: 	fc]  	c7^!" 	:::#$ Y[6]'+  M2t 	 	Y	
 	z 	8 	H 	7 	< 	Y 		 	 	| 	& 	  	7!" 	7#$ "9  M@  O
 "  z"67	 N  $gt4ddDttT5%$5T$ttTdB4bdu#4T4%Jg Jg Jg JgX+ + +8B B B&l7 l7 l7\	   l+ l+ l+\) ) )V] ] ]~  : : : :
5 5 5n  "   "   A A XA  *  % % %	 	 	 	3B 3B 3B 3Bj   $  # # # #J!B !B !B !BH- - - -T T T T/ / / /   1 1 1 1!] !] !]F; ; ; ;C C C C(] (] (] (]VJ J J JF F F FJB JB JB JBX-B -B -B -B^$ $ $ $P P P P] ] ] ].] ] ] ],] ] ] ]6  6  6  6 p	] 	] 	] 	]] ] ] ].  4  ] ] ] ]$ ]  ]  ]  ]D] ] ] ]&] ] ] ]@- - - -] ] ] ].$R $R $R $RL< < < <9 9 9 9: : : : : :rW   rp   )drN  	functoolsr   rX   	holoviewsr  r  r  numpyr  colorcetr  bokeh.modelsr   holoviews.core.dimensionr   holoviews.core.spacesr   r   r   holoviews.core.overlayr	   holoviews.core.optionsr
   r   r   holoviews.core.layoutr   holoviews.core.utilr   r%  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   holoviews.plotting.bokehr(   r)   holoviews.plotting.utilr*   r  r+   r,   holoviews.streamsr-   r.   holoviews.util.transformr/   packaging.versionr0   r1   r2   backend_transformsr4   utilr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   	utilitiesrH   rendererrK   rp   rP   rW   rU   <module>r     s                           " " " " " " . . . . . . ? ? ? ? ? ? ? ? ? ? , , , , , , 8 8 8 8 8 8 8 8 8 8 * * * * * * ) ) ) ) ) )                                                      E D D D D D D D 0 0 0 0 0 0 5 5 5 5 5 5 5 5 * * * * * * * * ( ( ( ( ( ( % % % % % % , , , , , , , , : : : : : :                                          ( ' ' ' ' '2;w#= #= #= #= #= #= #= #=Lc#: c#: c#: c#: c#: c#: c#: c#: c#: c#:rW   