PyVista and Trame#
Kitware’s Trame is an open-source platform for creating interactive and powerful visual analytics applications. Based on Python, and leveraging platforms such as VTK, ParaView, and Vega, it is possible to create web-based applications in minutes.
What is Trame?#
Trame is a Python framework for building reactive web applications.
All the logic and UI definition can be done in plain Python
Runs on laptops, desktops, clusters, and the cloud while displaying everywhere (phone, tablet, laptop, workstation)
Learn more about Trame
Gain hands on experience with Trame through the tutorial.
3D visualization in web applications#
PyVista and Trame work excellently together to provide a cutting-edge capabilities for 3D visualization in reactive web applications.
Trame provides a high-level framework for building reactive, stateful web applications
PyVista provides a high-level framework for 3D visualization, exposing VTK in a “Pythonic” manner
High-level framework 1 + high-level framework 2 = a streamlined approach to making powerful web applications with 3D visualization front and center.
The following code creates a simple Trame application with a PyVista plotter embedded in the UI. This code can be used as a base for building all of your Trame applications with PyVista as it contains all of the boilerplate code needed to get started.
from trame.app import get_server
from trame.ui.vuetify3 import SinglePageLayout
import pyvista as pv
from pyvista.trame.ui import plotter_ui
# Always set PyVista to plot off screen with Trame
pv.OFF_SCREEN = True
server = get_server()
state, ctrl = server.state, server.controller
mesh = pv.Wavelet()
pl = pv.Plotter()
pl.add_mesh(mesh)
with SinglePageLayout(server) as layout:
with layout.content:
# Use PyVista's Trame UI helper method
# this will add UI controls
view = plotter_ui(pl)
server.start()
Note
PyVista’s Jupyter backend is powered by Trame! If you’ve been using PyVista in Jupyter lately, you’ve been using Trame all along – our Jupyter backend is a micro Trame application.
Exercises#
Do not run these examples in Jupyter but rather as standalone scripts.