Note
Go to the end to download the full example code. or to run this example in your browser via Binder
Getting started#
Getting started with PyVista and Trame
import pyvista as pv
from pyvista import examples
PyVista’s Jupyter backend is powered by Trame. So by default you are using trame without knowing it.
By default PyVista is serving you a micro trame application that let you toggle between Remote and Local rendering along with some various options to configure your visualization.
First try the Remote/Local rendering toggle and notice the differences
Look at the orientation axis between the 2 rendering modes.
One sends images generated on the server side while the other is sending geometry to vtk.js.
dataset = examples.download_lucy()
dataset.plot(smooth_shading=True, color="white")
Building applications with PyVista and Trame
Now, let’s build a simple application that updates the mesh color with the click of a button.
import random
from pyvista.plotting.colors import hexcolors
from pyvista.trame.ui import get_viewer
from trame.ui.vuetify3 import SinglePageLayout
from trame.widgets import vuetify3 as v3
plotter = pv.Plotter()
actor = plotter.add_mesh(dataset)
viewer = get_viewer(plotter)
view = None
def change_color() -> None:
actor.prop.color = random.choice(list(hexcolors.keys())) # noqa: S311
view.update()
# Create UI
with SinglePageLayout(viewer.server) as layout:
with layout.toolbar.clear() as tb:
tb.density = "compact"
tb.theme = "dark"
viewer.ui_controls(mode="trame")
v3.VBtn(icon="mdi-palette", click=change_color)
with layout.content:
view = viewer.ui(add_menu=False, mode="trame")
# Show UI
await layout.ready
layout