plotter¶

Defines main class Plotter to manage actors and 3D rendering.

Plotter¶

class vtkplotter.plotter.Plotter(shape=(1, 1), N=None, pos=(0, 0), size='auto', screensize='auto', title='', bg='blackboard', bg2=None, axes=4, sharecam=True, verbose=True, interactive=None, offscreen=False, qtWidget=None)[source]

Bases: object

Main class to manage actors.

Parameters: shape (list) – shape of the grid of renderers in format (rows, columns). Ignored if N is specified. N (int) – number of desired renderers arranged in a grid automatically. pos (list) – (x,y) position in pixels of top-left corner of the rendering window on the screen size – size of the rendering window. If ‘auto’, guess it based on screensize. screensize – physical size of the monitor screen bg – background color or specify jpg image file name with path bg2 – background color of a gradient towards the top axes (int) – 0, no axes 1, draw three gray grid walls 2, show cartesian axes from (0,0,0) 3, show positive range of cartesian axes from (0,0,0) 4, show a triad at bottom left 5, show a cube at bottom left 6, mark the corners of the bounding box 7, draw a simple ruler at the bottom of the window 8, show the vtkCubeAxesActor object 9, show the bounding box outLine, 10, show three circles representing the maximum bounding box.

Axis type-1 can be fully customized by passing a dictionary axes=dict() where:

• xtitle, [‘x’], x-axis title text.
• ytitle, [‘y’], y-axis title text.
• ztitle, [‘z’], z-axis title text.
• numberOfDivisions, [automatic], number of divisions on the shortest axis
• axesLineWidth, [1], width of the axes lines
• gridLineWidth, [1], width of the grid lines
• reorientShortTitle, [True], titles shorter than 2 letter are placed horizontally
• originMarkerSize, [0.01], draw a small cube on the axis where the origin is
• enableLastLabel, [False], show last numeric label on axes
• titleDepth, [0], extrusion fractional depth of title text
• xyGrid, [True], show a gridded wall on plane xy
• yzGrid, [True], show a gridded wall on plane yz
• zxGrid, [True], show a gridded wall on plane zx
• zxGrid2, [False], show zx plane on opposite side of the bounding box
• xyGridTransparent [False], make grid plane completely transparent
• xyGrid2Transparent [False], make grid plane completely transparent on opposite side box
• xyPlaneColor, [‘gray’], color of the plane
• xyGridColor, [‘gray’], grid line color
• xyAlpha, [0.15], grid plane opacity
• showTicks, [True], show major ticks
• xTitlePosition, [0.32], title fractional positions along axis
• xTitleOffset, [0.05], title fractional offset distance from axis line
• xTitleJustify, [“top-right”], title justification
• xTitleRotation, [0], add a rotation of the axis title
• xLineColor, [automatic], color of the x-axis
• xTitleColor, [automatic], color of the axis title
• xTitleBackfaceColor, [None], color of axis title on its backface
• xTitleSize, [0.025], size of the axis title
• xHighlightZero, [True], draw a line highlighting zero position if in range
• xHighlightZeroColor, [automatic], color of the line highlighting the zero position
• xTickThickness, [0.0025], thickness of the major ticks along their axis
• xTickColor, [automatic], color of major ticks
• xMinorTicks, [1], number of minor ticks between two major ticks
• tipSize, [0.01], size of the arrow tip
• xLabelPrecision, [2], nr. of significative digits to be shown
• xLabelSize, [0.015], size of the numeric labels along axis
• xLabelOffset, [0.025], offset of numeric labels
Parameters: sharecam (bool) – if False each renderer will have an independent vtkCamera interactive (bool) – if True will stop after show() to allow interaction w/ window offscreen (bool) – if True will not show the rendering window qtWidget (QVTKRenderWindowInteractor) – render in a Qt-Widget using an QVTKRenderWindowInteractor. Overrides offscreen to True Overides interactive to False Sets setting.usingQt to True See Also: example qt_windows.py

add(actors, render=True)[source]

Append input object to the internal list of actors to be shown.

Returns: returns input actor for possible concatenation.
addAxes(axtype=None, c=None)[source]

Draw axes on scene. Available axes types:

Parameters: axtype (int) – 0, no axes, 1, draw three gray grid walls 2, show cartesian axes from (0,0,0) 3, show positive range of cartesian axes from (0,0,0) 4, show a triad at bottom left 5, show a cube at bottom left 6, mark the corners of the bounding box 7, draw a simple ruler at the bottom of the window 8, show the vtkCubeAxesActor object 9, show the bounding box outLine 10, show three circles representing the maximum bounding box

Axis type-1 can be fully customized by passing a dictionary axes=dict() where:

• xtitle, [‘x’], x-axis title text.
• ytitle, [‘y’], y-axis title text.
• ztitle, [‘z’], z-axis title text.
• numberOfDivisions, [4], number of divisions on the shortest axis
• axesLineWidth, [1], width of the axes lines
• gridLineWidth, [1], width of the grid lines
• reorientShortTitle, [True], titles shorter than 3 letters are placed horizontally
• originMarkerSize, [0.01], draw a small cube on the axis where the origin is
• enableLastLabel, [False], show last numeric label on axes
• titleDepth, [0], extrusion fractional depth of title text
• xyGrid, [True], show a gridded wall on plane xy
• yzGrid, [True], show a gridded wall on plane yz
• zxGrid, [False], show a gridded wall on plane zx
• zxGrid2, [False], show zx plane on opposite side of the bounding box
• xyPlaneColor, [‘gray’], color of gridded plane
• xyGridColor, [‘gray’], grid line color
• xyAlpha, [0.15], grid plane opacity
• showTicks, [True], show major ticks
• xTitlePosition, [0.32], title fractional positions along axis
• xTitleOffset, [0.05], title fractional offset distance from axis line
• xTitleJustify, [“top-right”], title justification
• xTitleRotation, [0], add a rotation of the axis title
• xLineColor, [automatic], color of the x-axis
• xTitleColor, [automatic], color of the axis title
• xTitleBackfaceColor, [None], color of axis title on its backface
• xTitleSize, [0.025], size of the axis title
• xHighlightZero, [True], draw a line highlighting zero position if in range
• xHighlightZeroColor, [automatic], color of the line highlighting the zero position
• xTickThickness, [0.0025], thickness of the major ticks along their axis
• xTickColor, [automatic], color of major ticks
• xMinorTicks, [1], number of minor ticks between two major ticks
• tipSize, [0.01], size of the arrow tip
• xLabelPrecision, [2], nr. of significative digits to be shown
• xLabelSize, [0.015], size of the numeric labels along axis
• xLabelOffset, [0.025], offset of numeric labels
Example: from vtkplotter import Box, show b = Box(pos=(0,0,0), length=80, width=90, height=70).alpha(0) show(b, axes={ 'xtitle':'Some long variable [a.u.]', 'numberOfDivisions':4, # ... } ) 
addButton(fnc, states=('On', 'Off'), c=('w', 'w'), bc=('dg', 'dr'), pos=(20, 40), size=24, font='arial', bold=False, italic=False, alpha=1, angle=0)[source]

Add a button to the renderer window.

Parameters: states (list) – a list of possible states, e.g. [‘On’, ‘Off’] c – a list of colors for each state bc – a list of background colors for each state pos – 2D position in pixels from left-bottom corner size – size of button font font (str) – font type (arial, courier, times) bold (bool) – bold face (False) italic (bool) – italic face (False) alpha (float) – opacity level angle (float) – anticlockwise rotation in degrees
addCutterTool(actor)[source]

Create handles to cut away parts of a mesh.

addIcon(iconActor, pos=3, size=0.08)[source]

Add an inset icon mesh into the same renderer.

Parameters: pos – icon position in the range [1-4] indicating one of the 4 corners, or it can be a tuple (x,y) as a fraction of the renderer size. size (float) – size of the square inset.
addLegend()[source]
addLight(pos, focalPoint=(0, 0, 0), deg=180, c='white', intensity=0.4, removeOthers=False, showsource=False)[source]

Generate a source of light placed at pos, directed to focal point. Returns a vtkLight object.

Parameters: focalPoint – focal point, if this is a vtkActor use its position. deg – aperture angle of the light source c – set light color intensity (float) – intensity between 0 and 1. removeOthers (bool) – remove all other lights in the scene showsource (bool) – if True, will show a representation of the source of light as an extra Actor

Hint

lights.py

addSlider2D(sliderfunc, xmin, xmax, value=None, pos=4, title='', c=None, showValue=True)[source]

Add a slider widget which can call an external custom function.

Parameters: sliderfunc – external function to be called by the widget xmin (float) – lower value xmax (float) – upper value value (float) – current value pos (list) – position corner number: horizontal [1-4] or vertical [11-14] it can also be specified by corners coordinates [(x1,y1), (x2,y2)] title (str) – title text showValue (bool) – if true current value is shown
addSlider3D(sliderfunc, pos1, pos2, xmin, xmax, value=None, s=0.03, title='', rotation=0, c=None, showValue=True)[source]

Add a 3D slider widget which can call an external custom function.

Parameters: sliderfunc – external function to be called by the widget pos1 (list) – first position coordinates pos2 (list) – second position coordinates xmin (float) – lower value xmax (float) – upper value value (float) – initial value s (float) – label scaling factor title (str) – title text c – slider color rotation (float) – title rotation around slider axis showValue (bool) – if True current value is shown
clear(actors=())[source]

Delete specified list of actors, by default delete all.

close()[source]
closeWindow()[source]

Close the current or the input rendering window.

getActors(obj=None, renderer=None)[source]

Return an actors list (which may include Volume objects too).

If obj is:

None, return actors of current renderer

int, return actors in given renderer number

vtkAssembly return the contained actors

string, return actors matching legend name

Parameters: renderer (int,vtkRenderer) – specify which renederer to look into.
getVolumes(obj=None, renderer=None)[source]

Return the list of the rendered Volumes.

If obj is:

None, return volumes of current renderer

int, return volumes in given renderer number

Parameters: renderer (int,vtkRenderer) – specify which renederer to look into.
load(inputobj, c=None, alpha=1, threshold=False, spacing=(), unpack=True)[source]

Load Actors and Volumes from file. The output will depend on the file extension. See examples below.

Parameters: c – color in RGB format, hex, symbol or name alpha – transparency (0=invisible)

For volumetric data (tiff, slc, vti etc): :param float threshold: value to draw the isosurface, False by default to return a Volume :param list spacing: specify the voxel spacing in the three dimensions :param bool unpack: only for multiblock data, if True returns a flat list of objects.

Example: from vtkplotter import datadir, load, show # Return an Actor g = load(datadir+'ring.gmsh') show(g) # Return a list of 2 Actors g = load([datadir+'250.vtk', datadir+'290.vtk']) show(g) # Return a list of actors by reaading all files in a directory # (if directory contains DICOM files then a Volume is returned) g = load(datadir+'timecourse1d/') show(g) # Return a Volume. Color/Opacity transfer function can be specified too. g = load(datadir+'embryo.slc') g.c(['y','lb','w']).alpha((0.0, 0.4, 0.9, 1)) show(g) # Return an Actor from a SLC volume with automatic thresholding g = load(datadir+'embryo.slc', threshold=True) show(g) 
moveCamera(camstart, camstop, fraction)[source]

Takes as input two vtkCamera objects and returns a new vtkCamera that is at an intermediate position:

fraction=0 -> camstart, fraction=1 -> camstop.

Press shift-C key in interactive mode to dump a python snipplet of parameters for the current camera view.

remove(actors)[source]

Remove vtkActor or actor index from current renderer.

show(*actors, **options)[source]

Render a list of actors.

Allowed input objects are: filename, vtkPolyData, vtkActor, vtkActor2D, vtkImageActor, vtkAssembly or vtkVolume.

If filename is given, its type is guessed based on its extension. Supported formats are: vtu, vts, vtp, ply, obj, stl, 3ds, xml, neutral, gmsh, pcd, xyz, txt, byu, tif, slc, vti, mhd, png, jpg.

Parameters: at (int) – number of the renderer to plot to, if more than one exists shape (list) – Number of sub-render windows inside of the main window. Specify two across with shape=(2, 1) and a two by two grid with shape=(2, 2). By default there is only one renderer. Can also accept a shape as string descriptor. E.g. shape=”3|1” means 3 plots on the left and 1 on the right, shape=”4/2” means 4 plots on top of 2 at bottom. axes (int) – set the type of axes to be shown 0, no axes, 1, draw three customizable gray grid walls 2, show cartesian axes from (0,0,0) 3, show positive range of cartesian axes from (0,0,0) 4, show a triad at bottom left 5, show a cube at bottom left 6, mark the corners of the bounding box 7, draw a simple ruler at the bottom of the window 8, show the vtkCubeAxesActor object, 9, show the bounding box outLine, 10, show three circles representing the maximum bounding box azimuth/elevation/roll (float) – move camera accordingly viewup (str) – either [‘x’, ‘y’, ‘z’] or a vector to set vertical direction resetcam (bool) – re-adjust camera position to fit objects camera (dict) – Camera parameters can further be specified with a dictionary assigned to the camera keyword (E.g. show(camera={‘pos’:(1,2,3), ‘thickness’:1000,})) pos, (list), the position of the camera in world coordinates focalPoint (list), the focal point of the camera in world coordinates viewup (list), the view up direction for the camera distance (float), set the focal point to the specified distance from the camera position. clippingRange (float), distance of the near and far clipping planes along the direction of projection. parallelScale (float), scaling used for a parallel projection, i.e. the height of the viewport in world-coordinate distances. The default is 1. Note that the “scale” parameter works as an “inverse scale”, larger numbers produce smaller images. This method has no effect in perspective projection mode. thickness (float), set the distance between clipping planes. This method adjusts the far clipping plane to be set a distance ‘thickness’ beyond the near clipping plane. viewAngle (float), the camera view angle, which is the angular height of the camera view measured in degrees. The default angle is 30 degrees. This method has no effect in parallel projection mode. The formula for setting the angle up for perfect perspective viewing is: angle = 2*atan((h/2)/d) where h is the height of the RenderWindow (measured by holding a ruler up to your screen) and d is the distance from your eyes to the screen. interactive (bool) – pause and interact with window (True) or continue execution (False) rate (float) – maximum rate of show() in Hertz interactorStyle (int) – set the type of interaction 0, TrackballCamera 1, TrackballActor 2, JoystickCamera 3, Unicam 4, Flight 5, RubberBand3D 6, RubberBandZoom q (bool) – force program to quit after show() command returns.
showInset(*actors, **options)[source]

Add a draggable inset space into a renderer.

Parameters: pos – icon position in the range [1-4] indicating one of the 4 corners, or it can be a tuple (x,y) as a fraction of the renderer size. size (float) – size of the square inset. draggable (bool) – if True the subrenderer space can be dragged around.

closePlotter¶

vtkplotter.plotter.closePlotter()[source]

Close the current instance of Plotter and its rendering window.

closeWindow¶

vtkplotter.plotter.closeWindow(plotterInstance=None)[source]

Close the current or the input rendering window.

interactive¶

vtkplotter.plotter.interactive()[source]

Go back to the rendering window interaction mode.

show¶

vtkplotter.plotter.show(*actors, **options)[source]

Create on the fly an instance of class Plotter and show the object(s) provided.

Allowed input objects are: filename, vtkPolyData, vtkActor, vtkActor2D, vtkImageActor, vtkAssembly or vtkVolume.

If filename is given, its type is guessed based on its extension. Supported formats are: vtu, vts, vtp, ply, obj, stl, 3ds, xml, neutral, gmsh, pcd, xyz, txt, byu, tif, slc, vti, mhd, png, jpg.

Parameters: at (int) – number of the renderer to plot to, if more than one exists shape (list) – Number of sub-render windows inside of the main window. Specify two across with shape=(2, 1) and a two by two grid with shape=(2, 2). By default there is only one renderer. Can also accept a shape as string descriptor. E.g.: shape=”3|1” means 3 plots on the left and 1 on the right, shape=”4/2” means 4 plots on top of 2 at bottom. axes (int) – set the type of axes to be shown 0, no axes, 1, draw three gray grid walls 2, show cartesian axes from (0,0,0) 3, show positive range of cartesian axes from (0,0,0) 4, show a triad at bottom left 5, show a cube at bottom left 6, mark the corners of the bounding box 7, draw a simple ruler at the bottom of the window 8, show the vtkCubeAxesActor object, 9, show the bounding box outLine, 10, show three circles representing the maximum bounding box Axis type-1 can be fully customized by passing a dictionary axes=dict() where: xtitle, [‘x’], x-axis title text. ytitle, [‘y’], y-axis title text. ztitle, [‘z’], z-axis title text. numberOfDivisions, [automatic], number of divisions on the shortest axis axesLineWidth, [1], width of the axes lines gridLineWidth, [1], width of the grid lines reorientShortTitle, [True], titles shorter than 2 letter are placed horizontally originMarkerSize, [0.01], draw a small cube on the axis where the origin is enableLastLabel, [False], show last numeric label on axes titleDepth, [0], extrusion fractional depth of title text xyGrid, [True], show a gridded wall on plane xy yzGrid, [True], show a gridded wall on plane yz zxGrid, [True], show a gridded wall on plane zx zxGrid2, [False], show zx plane on opposite side of the bounding box xyGridTransparent [False], make grid plane completely transparent xyGrid2Transparent [False], make grid plane completely transparent on opposite side box xyPlaneColor, [‘gray’], color of the plane xyGridColor, [‘gray’], grid line color xyAlpha, [0.15], grid plane opacity showTicks, [True], show major ticks xTitlePosition, [0.32], title fractional positions along axis xTitleOffset, [0.05], title fractional offset distance from axis line xTitleJustify, [“top-right”], title justification xTitleRotation, [0], add a rotation of the axis title xLineColor, [automatic], color of the x-axis xTitleColor, [automatic], color of the axis title xTitleBackfaceColor, [None], color of axis title on its backface xTitleSize, [0.025], size of the axis title xHighlightZero, [True], draw a line highlighting zero position if in range xHighlightZeroColor, [automatic], color of the line highlighting the zero position xTickRadius, [0.005], radius of the major ticks xTickThickness, [0.0025], thickness of the major ticks along their axis xTickColor, [automatic], color of major ticks xMinorTicks, [1], number of minor ticks between two major ticks tipSize, [0.01], size of the arrow tip xLabelPrecision, [2], nr. of significative digits to be shown xLabelSize, [0.015], size of the numeric labels along axis xLabelOffset, [0.025], offset of numeric labels azimuth/elevation/roll (float) – move camera accordingly viewup (str) – either [‘x’, ‘y’, ‘z’] or a vector to set vertical direction resetcam (bool) – re-adjust camera position to fit objects camera (dict) – Camera parameters can further be specified with a dictionary assigned to the camera keyword (E.g. show(camera={‘pos’:(1,2,3), ‘thickness’:1000,})): pos, (list), the position of the camera in world coordinates focalPoint (list), the focal point of the camera in world coordinates viewup (list), the view up direction for the camera distance (float), set the focal point to the specified distance from the camera position. clippingRange (float), distance of the near and far clipping planes along the direction of projection. parallelScale (float), scaling used for a parallel projection, i.e. the height of the viewport in world-coordinate distances. The default is 1. Note that the “scale” parameter works as an “inverse scale”, larger numbers produce smaller images. This method has no effect in perspective projection mode. thickness (float), set the distance between clipping planes. This method adjusts the far clipping plane to be set a distance ‘thickness’ beyond the near clipping plane. viewAngle (float), the camera view angle, which is the angular height of the camera view measured in degrees. The default angle is 30 degrees. This method has no effect in parallel projection mode. The formula for setting the angle up for perfect perspective viewing is: angle = 2*atan((h/2)/d) where h is the height of the RenderWindow (measured by holding a ruler up to your screen) and d is the distance from your eyes to the screen. interactive (bool) – pause and interact with window (True) or continue execution (False) rate (float) – maximum rate of show() in Hertz interactorStyle (int) – set the type of interaction 0, TrackballCamera 1, TrackballActor 2, JoystickCamera 3, Unicam 4, Flight 5, RubberBand3D 6, RubberBandZoom q (bool) – force program to quit after show() command returns. newPlotter (bool) – if set to True, a call to show will instantiate a new Plotter object (a new window) instead of reusing the first created. See e.g.: readVolumeAsIsoSurface.py the current Plotter class instance.

Note

With multiple renderers, keyword at can become a list, e.g.

from vtkplotter import *
s = Sphere()
c = Cube()
p = Paraboloid()
show(s, c, at=[0, 1], shape=(3,1))
show(p, at=2, interactive=True)
#
# is equivalent to:
vp = Plotter(shape=(3,1))
s = Sphere()
c = Cube()
p = Paraboloid()
vp.show(s, at=0)
vp.show(p, at=1)
vp.show(c, at=2, interactive=True)