Rendering non-interpolated trimesh interactively

Hi,

I’d like to render non-interpolated trimesh in an interactive plot.

Looking at the Bay trimesh example here: Bay trimesh — Examples 0.1.0 documentation

It says:

Here the underlying wireframe and triangles will be revealed if you enable the wheel-zoom tool and zoom in to either plot.

However, if I zoom in - both “wireframe” and “trimesh” plots display the same rectangular grids?
Is this a bug or am I misinterpreting this document?

I have run this example in a live notebook so not a static/web issue.
Is it possible to visualise the non-interpolated triangular mesh in an interactive plot?

I am able to render a static image of trimesh like this but it is not interactive which is a requirement for me:

tf.Images(tf.shade(cvs.trimesh(trimesh_vertices, trimesh_simplices, interp=False), cmap=c))

Hmm, well I rejigged my notebook env by unpinning all my dependency versions and am now able to get what looks like a malformed trimesh to render:

Screen Shot 2021-07-22 at 2.40.34 pm

Guess I just need to fix triangulation now :slightly_smiling_face:

Oh wow, that’s pretty! Do you think your mesh is broken somehow or the rendering is?

Well - actually…

Looking closer at the above example - all of the edges are still parallel to the X/Y axes, which is not what I would expect for a trimesh?? Given the documented Bay Trimesh example still doesn’t render triangles I think I still have the same problem :confused:

Any tips?

I still think this is a bug, thoughts?

Can’t reproduce your issues with the Bay trimesh. The reason it’s rectangular is because it’s rasterized at a low resolution but it should update when you zoom (it does for me). So I really don’t think it’s the same issue as with your mesh. The output looks correct in the Bay trimesh case, it’s just not updating as it should while in your example the output just seems wrong.

Oh, the wireframe in the Bay example is definitely not correct either (will fix that).

import holoviews as hv
import geoviews as gv
from holoviews import opts
from holoviews.operation.datashader import datashade

hv.extension("bokeh")
opts.defaults(
    opts.Image(width=450, height=450),
    opts.RGB(width=450, height=450))

verts = hv.Points(verts, vdims='z')

wireframe = datashade(hv.TriMesh((tris, verts.clone(vdims=[])), label="Wireframe"))
trimesh = datashade(hv.TriMesh((tris, verts), label="TriMesh"), aggregator=ds.mean('z'))
wireframe + trimesh

Great thanks @philippjfr.

Adding interpolation=False to the your example I was able to get the desired result:

hv.extension("bokeh")
opts.defaults(
    opts.Image(width=450, height=450),
    opts.RGB(width=450, height=450))

verts = hv.Points(verts, vdims='z')

wireframe = datashade(hv.TriMesh((tris, verts.clone(vdims=[])), label="Wireframe"))
trimesh = datashade(hv.TriMesh((tris, verts), label="TriMesh"), aggregator=ds.mean('z'), interpolation=False)
wireframe + trimesh

Although I think there are some env/config gremlins.

The Binder provided in examples repo: GitHub - pyviz-topics/examples: Visualization-focused examples of using Python for specific topics failed to render (stacktrace below).

And my initial minimal conda env failed silently, rendering rectangles instead of triangles as shown in my earlier posts.

However - I was able to run the examples by installing locally, like:

cd bay_trimesh
conda env create --file anaconda-project.yml
conda activate bay_trimesh
jupyter notebook

I still need to integrate this functionality with an existing conda env so will report back if culprit/s becomes clear.

Stacktrace from binder:

WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.Dimension: Use method 'get_param_values' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.BokehRenderer: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.NotebookArchive: Use method 'params' via param namespace 

WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.Points: Use method 'params' via param namespace 
WARNING:param.Points: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.Dataset: Use method 'get_param_values' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.Dataset: Use method 'params' via param namespace 
WARNING:param.Dataset: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.PlotSize: Use method 'get_param_values' via param namespace 
WARNING:param.PlotSize: Use method 'params' via param namespace 
WARNING:param.PlotSize: Use method 'params' via param namespace 
WARNING:param.RangeXY: Use method 'get_param_values' via param namespace 
WARNING:param.RangeXY: Use method 'params' via param namespace 
WARNING:param.PlotSize: Use method 'get_param_values' via param namespace 
WARNING:param.PlotSize: Use method 'get_param_values' via param namespace 
WARNING:param.RangeXY: Use method 'get_param_values' via param namespace 
WARNING:param.RangeXY: Use method 'get_param_values' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.Points: Use method 'params' via param namespace 
WARNING:param.Points: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.Dataset: Use method 'get_param_values' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.Dataset: Use method 'params' via param namespace 
WARNING:param.Dataset: Use method 'params' via param namespace 
WARNING:param.ParameterizedMetaclass: Use method 'params' via param namespace 
WARNING:param.PlotSize: Use method 'get_param_values' via param namespace 
WARNING:param.PlotSize: Use method 'params' via param namespace 
WARNING:param.PlotSize: Use method 'params' via param namespace 
WARNING:param.RangeXY: Use method 'get_param_values' via param namespace 
WARNING:param.RangeXY: Use method 'params' via param namespace 
WARNING:param.PlotSize: Use method 'get_param_values' via param namespace 
WARNING:param.PlotSize: Use method 'get_param_values' via param namespace 
WARNING:param.RangeXY: Use method 'get_param_values' via param namespace 
WARNING:param.RangeXY: Use method 'get_param_values' via param namespace 
WARNING:param.Layout: Use method 'params' via param namespace 
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-7-33f439be71d1> in <module>
     11 wireframe = datashade(hv.TriMesh((tris,verts), label="Wireframe"))
     12 trimesh = datashade(hv.TriMesh((tris,hv.Points(verts, vdims='z')), label="TriMesh"), aggregator=ds.mean('z'))
---> 13 wireframe + trimesh

/srv/conda/envs/notebook/lib/python3.6/site-packages/holoviews/core/spaces.py in __add__(self, obj)
    307     def __add__(self, obj):
    308         "Composes HoloMap with other object into a Layout"
--> 309         return Layout([self, obj])
    310 
    311 

/srv/conda/envs/notebook/lib/python3.6/site-packages/holoviews/core/layout.py in __init__(self, items, identifier, parent, **kwargs)
    435     def __init__(self, items=None, identifier=None, parent=None, **kwargs):
    436         self.__dict__['_max_cols'] = 4
--> 437         super(Layout, self).__init__(items, identifier, parent, **kwargs)
    438 
    439     @property

/srv/conda/envs/notebook/lib/python3.6/site-packages/holoviews/core/dimension.py in __init__(self, items, identifier, parent, **kwargs)
   1327         if items and all(isinstance(item, Dimensioned) for item in items):
   1328             items = self._process_items(items)
-> 1329         params = {p: kwargs.pop(p) for p in list(self.params().keys())+['id', 'plot_id'] if p in kwargs}
   1330 
   1331         AttrTree.__init__(self, items, identifier, parent, **kwargs)

/srv/conda/envs/notebook/lib/python3.6/site-packages/param/parameterized.py in inner(*args, **kwargs)
   1382                 get_logger(name=args[0].__class__.__name__).log(
   1383                     WARNING, 'Use method %r via param namespace ' % fn.__name__)
-> 1384             return fn(*args, **kwargs)
   1385 
   1386         inner.__doc__= "Inspect .param.%s method for the full docstring"  % fn.__name__

/srv/conda/envs/notebook/lib/python3.6/site-packages/param/parameterized.py in params(cls, parameter_name)
   2844     @Parameters.deprecate
   2845     def params(cls,parameter_name=None):
-> 2846         return cls.param.params(parameter_name=parameter_name)
   2847 
   2848     @classmethod

/srv/conda/envs/notebook/lib/python3.6/site-packages/param/parameterized.py in params(self_, parameter_name)
   1476         superclasses.
   1477         """
-> 1478         pdict = self_.objects(instance='existing')
   1479         if parameter_name is None:
   1480             return pdict

/srv/conda/envs/notebook/lib/python3.6/site-packages/param/parameterized.py in objects(self_, instance)
   1565         if instance and self_.self is not None:
   1566             if instance == 'existing':
-> 1567                 if getattr(self_.self, 'initialized', False) and self_.self._instance__params:
   1568                     return dict(pdict, **self_.self._instance__params)
   1569                 return pdict

/srv/conda/envs/notebook/lib/python3.6/site-packages/holoviews/core/tree.py in __getattr__(self, identifier)
    244         if identifier.startswith('_' + type(self).__name__) or identifier.startswith('__'):
    245             raise AttributeError('Attribute %s not found.' % identifier)
--> 246         elif self.fixed==True:
    247             raise AttributeError(self._fixed_error % identifier)
    248 

/srv/conda/envs/notebook/lib/python3.6/site-packages/holoviews/core/tree.py in fixed(self)
     83     def fixed(self):
     84         "If fixed, no new paths can be created via attribute access"
---> 85         return self.__dict__['_fixed']
     86 
     87     @fixed.setter

KeyError: '_fixed'