Mesh

Mesh is an object which displays triangles in 3d. An scalar can be displayed on the mesh using color map.

[6]:
from matplotlib.tri import Triangulation
import numpy as np
import k3d

# this code is a part of matplotlib trisurf3d_demo
n_radii = 8
n_angles = 36

radii = np.linspace(0.125, 1.0, n_radii, dtype=np.float32)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False, dtype=np.float32)[..., np.newaxis]

x = np.append(np.float32(0), (radii*np.cos(angles)).flatten())
y = np.append(np.float32(0), (radii*np.sin(angles)).flatten())

z = np.sin(-x*y)
indices = Triangulation(x,y).triangles.astype(np.uint32)

plot = k3d.plot()
plot
[7]:
plt_mesh = k3d.mesh(np.vstack([x,y,z]).T, indices,
                   color_map = k3d.colormaps.basic_color_maps.Jet,
                   attribute=z,
                   color_range = [-1.1,2.01]
                   )
plot += plt_mesh

Scalars can be updated interactively using ipywidgets communication:

[8]:
plt_mesh.attribute = 2*x**2+y**2

It is possible to send time series of an attribute values:

[9]:
plt_mesh.attribute = {str(t):3*t*x**2+y**2 for t in np.linspace(0,2,20)}
[10]:
plot.start_auto_play()
[ ]:
plot.stop_auto_play()