Scientific Visualisations with Python

# Example

Here is a simple Python script to create and display a 3D sphere:

Import library

import vtk

Step 1: Create a source

sphere = vtk.vtkSphereSource()
sphere.SetRadius(5.0)
sphere.SetThetaResolution(50)
sphere.SetPhiResolution(50)

Step 2: Create a mapper

mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(sphere.GetOutputPort())

Step 3: Create an actor

actor = vtk.vtkActor()
actor.SetMapper(mapper)

Step 4: Create a renderer and render window

renderer = vtk.vtkRenderer()
render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)

Step 5: Create a render window interactor

interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)

Step 6: Add the actor to the renderer

renderer.AddActor(actor)
renderer.SetBackground(0.1, 0.2, 0.4)  # Background color

Step 7: Start the visualization

render_window.Render()
interactor.Start()


# Example

Visualisation of the 3d scalar field

import vtk
import numpy as np
#
data = np.loadtxt("./scalar_field.txt")
#
points = vtk.vtkPoints()
scalars = vtk.vtkFloatArray()
for row in data:
    x, y, z, value = row
    points.InsertNextPoint(x, y, z)
    scalars.InsertNextValue(value)
#
# Create a polydata object
polydata = vtk.vtkPolyData()
polydata.SetPoints(points)
polydata.GetPointData().SetScalars(scalars)
#
# Use a vtkGlyph3D to create scalable glyphs
sphere_source = vtk.vtkSphereSource()
sphere_source.SetRadius(0.01)  # Base radius of the glyph (adjust as needed)
#
glyph3d = vtk.vtkGlyph3D()
glyph3d.SetSourceConnection(sphere_source.GetOutputPort())
glyph3d.SetInputData(polydata)
glyph3d.ScalingOff()  # Disable scaling so all glyphs are the same size
glyph3d.Update()
#
# Create a mapper and actor
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(glyph3d.GetOutputPort())
mapper.SetScalarRange(scalars.GetRange())
#
actor = vtk.vtkActor()
actor.SetMapper(mapper)
#
# Add a scalar bar
scalar_bar = vtk.vtkScalarBarActor()
scalar_bar.SetLookupTable(mapper.GetLookupTable())
scalar_bar.SetTitle("Scalar Value")
scalar_bar.SetNumberOfLabels(5)
#
# Create a renderer, render window, and interactor
renderer = vtk.vtkRenderer()
render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)
#
render_window_interactor = vtk.vtkRenderWindowInteractor()
render_window_interactor.SetRenderWindow(render_window)
#
# Add the actor and scalar bar to the renderer
renderer.AddActor(actor)
renderer.AddActor2D(scalar_bar)
#
renderer.SetBackground(0.1, 0.2, 0.4)
#
# Start the rendering loop
render_window.Render()
render_window_interactor.Start()