Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
735 views
�
n1�V�1�@sjddlZddlTddlTddlTdd�Zdd�Zdd�Zd	d
�Zdd�ZdS)
�N)�*cCs.ddl}ddd�}||jj_dS)NrFc	Ss�|r1d}dddg}dd	�|D�}nd}ddg}|r[tt|��ng}tjg|}t|�dkr�|Stj���tjd
d�x�|D]�\}}dd	�||D�}d
d	�||D�}|rt|dtj	�rtj
|�||<n|r3tj|�||<n|ret|dtj	�retj|�||<q�|r�tj
|�||<q�q�WWdQXt|�S)z�
        Computes the maximal extent in 2D and 3D space from
        list of 4-tuples or 6-tuples. If zrange is enabled
        all extents are converted to 6-tuples to comput
        x-, y- and z-limits.
        �r�����cSsPg|]F}t|�dkr$|n%|d|dd|d|ddf�qS)rrrNrr)�len)�.0�e�r�../code/patch_holoviews.py�
<listcomp>s	z8patch_core_util.<locals>.max_extents.<locals>.<listcomp>�ignorez All-NaN (slice|axis) encounteredcSs"g|]}|dk	r|�qS)Nr)r
�vrrr
r"s	cSs"g|]}|dk	r|�qS)Nr)r
rrrr
r#s	N)rr)rr)rr)rr)rr)�list�zip�np�NaNr	�warnings�catch_warnings�filterwarnings�
isinstance�
datetime64�min�nanmin�max�nanmax�tuple)	�extents�zrange�num�inds�arr�lidx�uidx�lower�upperrrr
�max_extentss2	

 z$patch_core_util.<locals>.max_extents)�holoviews.core.util�core�utilr()�	holoviewsr(rrr
�patch_core_utils#r-cs@ddl�d�fdd�}ddl}||jj_dS)NrTcs�|r|\}}n�j|��j|�}}||||}�jj|d�j�j|���}||�}|r�|d9}dd�|D�S|SdS)zg
        Maps an array of values to RGB hex strings, given
        a color range and colormap.
        �mask��cSs6g|],}djdd�|dd�D���qS)z#{0:02x}{1:02x}{2:02x}css|]}t|�VqdS)N)�int)r
rrrr
�	<genexpr>AszEpatch_plotting_util.<locals>.map_colors.<locals>.<listcomp>.<genexpr>Nr�����)�format)r
�crrr
rAs	z;patch_plotting_util.<locals>.map_colors.<locals>.<listcomp>N)rr�ma�array�logical_not�isfinite)r#�crange�cmap�hex�cmin�cmax)rrr
�
map_colors3s*
	z'patch_plotting_util.<locals>.map_colors)�numpy�holoviews.plotting.util�plottingr+r>)r>r,r)rr
�patch_plotting_util1srBcs.ddl}ddlj�ddlm��|jjj_�|jjj_dd�}||jjjj_	dd�}||jjjj_
ddd�}||jjjj_d��fd	d
�}||jjjj_
ddd
�}||jjjj_
ddd
�}||jjjj_
dS)
Nr)r>c[s@|jd}|jdjd�|j|j�|jd|jd|j�|j|_|j	dkr�|j
jjd�|j
j
jd�n|jdkr�|jjjd�|jj
jd�n|jdkr|jjjd�|jj
jd�n|jr|j�n|j|j�tt|�j||�S)	z�
        Extends the ElementPlot _finalize_axis method to set appropriate
        labels, and axes options for 3D Plots.
        �axis�figF�elev�azimNg�)�handles�set_frameon�grid�	show_grid�	view_init�	elevation�azimuth�distance�dist�xaxis�w_xaxis�line�set_lw�label�set_text�yaxis�w_yaxis�zaxis�w_zaxis�disable_axes�set_axis_off�set_axis_bgcolor�bgcolor�super�Plot3D�_finalize_axis)�self�key�kwargsrCrrr
raSs$
	
z)patch_mpl_chart3d.<locals>._finalize_axisc_stt|�j||�dS)N)r_r`�update_frame)rb�argsrdrrr
reosz'patch_mpl_chart3d.<locals>.update_framecs�|jd}|jj�|j|j|jd|�}t�|�}|jd}�fdd�td�D�\}}}|j|j}�j	|j
�}|r	d|kr	�j|j
�}	|	|d<d|kr	||j}
|j
d	|
d
d|
d�q	n�j	|j�r4|j�|�|d<n|j|||d
|j|�}|jdj|�||jd<|j|d|�S)NrCrc3s|]}�j|�VqdS)N)�dimension_values)r
�i)�pointsrr
r1zsz=patch_mpl_chart3d.<locals>.initialize_plot.<locals>.<genexpr>rr:r4�clim�vminr�vmax�s�zorder�artist�rangesr2r2)rH�hmap�last�compute_ranges�keys�
match_spec�range�style�cyclic_index�
get_dimension�color_indexrg�name�update�
size_index�
_compute_size�scatterrn�add_collectionra)rbrprCrc�xs�ys�zsrw�cdim�cs�clims�scatterplotr)rir
�initialize_plotts(

(

$!
z*patch_mpl_chart3d.<locals>.initialize_plotcs�|jd}t�fdd��j�D��|_�j|j�}|j|j}|r�d|kr��j|j�}d|kr�|dn
||j	}	�j
|d�}
�||	|
d�|_n�j|j�r�|j
|j�|��ndS)Nroc3s|]}�|VqdS)Nr)r
�d)rirr
r1�sz<patch_mpl_chart3d.<locals>.update_handles.<locals>.<genexpr>r:rjF)rHr�
dimensions�
_offsets3dryrzrwrxrgr{�get_cmap�_facecolor3dr}�	set_sizesr~)rbrCrircrpror�rwr�rjr:)�cmr>)rir
�update_handles�s
(#z)patch_mpl_chart3d.<locals>.update_handlescSs�d|jkr0|jdjj|jd�n|j}|j\}}|j||�\}}	}
}}}
tj||||t|��|	|||	t|��f\}}|j	|j
}|jdkr�|jdj||||�|jd<n�|jdkrG|
|d<|
|d<|jdj
||||�|jd<n8|jdkr|jdj||||�|jd<ndS)NrorC�	wireframe�surfacerkrl�contour)rH�collections�remove�data�shape�get_extentsr�mgrid�floatrwrx�	plot_type�plot_wireframe�plot_surface�	contour3D)rbrC�elementrcrp�mat�rn�cn�l�b�zmin�r�t�zmaxr4�
style_optsrrr
r��s!	$G)

)c	s�d|jkr0|jdjj|jd�n|j|j}�jdd�}||d}�fdd�|D�\}}	}
|j||	|
d|d	d
|d|�}||jd<dS)NrorCrUTrcsg|]}�j|��qSr)rg)r
r�)r�rr
r�s	z=patch_mpl_chart3d.<locals>.update_handles.<locals>.<listcomp>rlrrkr)rHr�r�rwrxr��plot_trisurf)rbrCr�rcrpr��dims�vrange�x�y�zror)r�r
r��s!")�holoviews.plotting.mpl.chart3d�
matplotlib.cmr�r@r>rA�mpl�chart3dr`rare�
Scatter3DPlotr�r��SurfacePlot�TrisurfacePlot)r,rarer�r�r)r�r>r
�patch_mpl_chart3dJs"
r�c
Cspddl}dddddddddd�}||jjjj_dddd�}||jjjj_dS)Nrc
sf�j|�}
|
�_�jd}�jrA|j�j�n�jr_t�jj��ng}�jdkr�|dk	r��jdkr�dn�j	|�}t
�fdd��g|D��}
|
dk	r.|
r.�j|
||||	�\}}}	�jr||}}n�j
||
||�|
jd�|
jd�}}d\}}|dkrjn:|jr|j}n%|j|jkr�|j|j}n|r�|jjt|��n|dkr�n:|jr�|j}n%|j|jkr|j|j}n|r.|jjt|��q.n�jdkr�|r�|j�}|ri|j�j�n|j�j�j�|j�j�j�n|r��jr�|j|�jd��n|r��jr�|j|�jd��n|	r�j r|j!|	�jd��n�j"|��j#|��j$rX�j%||
|||�n�j&r�|dk	r�d	�jkr��jd	j'|�q�|j(|�jd	���jd	<q�n�j)|��j*r��j+r��j,|�nxa�j-D]V}y|�|
�Wq�t.k
rK}z�j/d
||f�WYdd}~Xq�Xq�Wt0t1��j2|�S)a*
        Applies all the axis settings before the axis or figure is returned.
        Only plots with zorder 0 get to apply their settings.

        When the number of the frame is supplied as n, this method looks
        up and computes the appropriate title, axis labels and axis bounds.
        rCrNc3s6|],}t|jt�r|jj�jkVqdS)N)rrq�HoloMap�type�_suppressed)r
�sp)rbrr
r1�sz<patch_mpl_element.<locals>._finalize_axis.<locals>.<genexpr>r�xlabel�ylabel�titlez+Plotting hook %r could not be applied:

 %s)NN)3�
_get_frame�
current_framerHr^r]�subplotsr�valuesrn�
_format_title�any�_axis_labels�invert_axes�_finalize_limitsry�value_formatr��type_formattersrQ�set_major_formatter�wrap_formatterrW�
get_legend�set_visible�show_legend�	get_xaxisrJrK�	get_yaxis�
set_xlabel�	_fontsize�
set_ylabelrY�
set_zlabel�
_apply_aspect�_subplot_label�apply_ticks�_finalize_ticks�
show_titlerV�	set_title�_finalize_axes�overlaid�drawn�_finalize_artist�finalize_hooks�	Exception�warningr_�ElementPlotra)rbrcr�rp�xticks�yticks�zticksr�r��zlabelr�rCr��suppress�xdim�ydim�xformat�yformat�legend�hookrr)rbr
ra�s|		
	$$&$			

		
.z)patch_mpl_element.<locals>._finalize_axiscSs~|jd}|dkr+|j|�}n||_||_t|jt�rd|}|j�}n|j}|j�}|j|||�}x�|j	j�D]�\}}|j
|d�}	t|jt�r
t|||||�}
|
dk	r
|j|
�\}}	q
n|j
|||	�q�Wt|jt�rK|rKtd��n|jrg|j||�n|j|d|�dS)NrCzhSome Elements returned by the dynamic callback were not initialized correctly and could not be rendered.rp)rHr�r��current_keyrrq�
DynamicMap�itemsrsr��get�dynamic_update�poprer�r��_adjust_legendra)rbrcrpr�rC�	range_objr��k�subplot�el�idx�_rrr
res.
				z'patch_mpl_element.<locals>.update_frame)�holoviews.plotting.mpl.elementrAr�r�r�ra�OverlayPlotre)r,rarerrr
�patch_mpl_element�sS"r�cCs6tjd��!t�t�t�t�WdQXdS)N�error)�param�
logging_levelr-rBr�r�rrrr
�	patch_all@s
r)	r�r)r�r�r-rBr�r�rrrrr
�<module>s


*x~