Using PyVista with Jupyter Execute#
Note
Be sure to read the main documentation page PyVista - Jupyter Notebook Plotting for more details about using PyVista with JupyterLab.
PyVista also supports the jupyter-sphinx extension. With this extension you
can execute code blocks within a sphinx *.rst
file using the
jupyter-execute
directive:
.. jupyter-execute::
name = 'world'
print('hello ' + name + '!')
Will be rendered as:
name = 'world'
print('hello ' + name + '!')
hello world!
Likewise, output from PyVista that would normally be rendered within a notebook
will be rendered in the output cell from the jupyter-execute
directive. For
example, here’s a plot using the panel
backend:
.. jupyter-execute::
from pyvista import examples
dataset = examples.download_urn()
dataset.plot(
color='tan',
jupyter_backend='panel',
smooth_shading=True,
window_size=[600, 400]
)
Which is rendered as:
from pyvista import examples
dataset = examples.download_urn()
dataset.plot(
color='tan',
jupyter_backend='panel',
smooth_shading=True,
window_size=[600, 400]
)
Using the Panel
backend with PyVista#
PyVista supports the usage of the panel
library as a vtk.js
jupyterlab plotting backend that can be utilized as
either a standalone VTK viewer, or as a tightly integrated pyvista
plotting
backend. For example, within a Jupyter notebook environment, you can pass
jupyter_backend='panel'
to plot
, or Plotter.show
to automatically
enable plotting with Juptyer and panel
.
For example, here’s the PyVista
logo:
.. jupyter-execute::
from pyvista import demos
demos.plot_logo(background='white', jupyter_backend='panel')
Which is shown within the documentation as:
from pyvista import demos
demos.plot_logo(background='white', jupyter_backend='panel')
Examples and Usage#
There are two ways to use panel within
Jupyter notebooks. You can use it on a plot by plot basis by setting the
jupyter_backend
in mesh.plot()
:
.. jupyter-execute::
import pyvista as pv
from pyvista import examples
# create a point cloud from lidar data and add height scalars
dataset = examples.download_lidar()
point_cloud = pv.PolyData(dataset.points[::100])
point_cloud['height'] = point_cloud.points[:, 2]
point_cloud.plot(window_size=[500, 500],
jupyter_backend='panel',
cmap='jet',
point_size=2,
background='w')
And here’s the resulting output in Sphinx:
import pyvista as pv
from pyvista import examples
# create a point cloud from lidar data and add height scalars
dataset = examples.download_lidar()
point_cloud = pv.PolyData(dataset.points[::100])
point_cloud['height'] = point_cloud.points[:, 2]
point_cloud.plot(window_size=[500, 500],
jupyter_backend='panel',
cmap='jet',
point_size=2,
background='w')
Or you can first hide code that sets up the plotting backend and global theme:
.. jupyter-execute::
:hide-code:
import pyvista as pv
# Set the global jupyterlab backend. All plots from this point
# onward will use the ``panel`` backend and do not have to be
# specified in ``show``
pv.set_jupyter_backend('panel')
pv.global_theme.background = 'white'
pv.global_theme.axes.show = False
pv.global_theme.smooth_shading = True
pv.global_theme.antialiasing = True
And now just directly execute plot
on any dataset:
.. jupyter-execute::
from pyvista import examples
dataset = examples.download_dragon()
dataset.plot(cpos="xy", scalars=dataset.points[:, 2], cmap='bwr')
Which looks like:
from pyvista import examples
dataset = examples.download_dragon()
dataset.plot(cpos="xy", scalars=dataset.points[:, 2], cmap='bwr')