Numeric source exampleΒΆ
This script demonstrates how to create a numpy array data and visualize it as image data using a few modules.
Python source code: numeric_source.py
# Author: Prabhu Ramachandran <prabhu_r@users.sf.net>
# Copyright (c) 2005-2020, Enthought, Inc.
# License: BSD Style.
# Standard library imports
import numpy
# Enthought library imports
from mayavi.scripts import mayavi2
from mayavi.sources.array_source import ArraySource
from mayavi.modules.outline import Outline
from mayavi.modules.image_plane_widget import ImagePlaneWidget
def make_data(dims=(128, 128, 128)):
"""Creates some simple array data of the given dimensions to test
with."""
np = dims[0]*dims[1]*dims[2]
# Create some scalars to render.
x, y, z = numpy.ogrid[-5:5:dims[0]*1j,-5:5:dims[1]*1j,-5:5:dims[2]*1j]
x = x.astype('f')
y = y.astype('f')
z = z.astype('f')
scalars = (numpy.sin(x*y*z)/(x*y*z))
# The copy makes the data contiguous and the transpose makes it
# suitable for display via tvtk. Please note that we assume here
# that the ArraySource is configured to not transpose the data.
s = numpy.transpose(scalars).copy()
# Reshaping the array is needed since the transpose messes up the
# dimensions of the data. The scalars themselves are ravel'd and
# used internally by VTK so the dimension does not matter for the
# scalars.
s.shape = s.shape[::-1]
return s
@mayavi2.standalone
def view_numpy():
"""Example showing how to view a 3D numpy array in mayavi2.
"""
# 'mayavi' is always defined on the interpreter.
mayavi.new_scene()
# Make the data and add it to the pipeline.
data = make_data()
src = ArraySource(transpose_input_array=False)
src.scalar_data = data
mayavi.add_source(src)
# Visualize the data.
o = Outline()
mayavi.add_module(o)
ipw = ImagePlaneWidget()
mayavi.add_module(ipw)
ipw.module_manager.scalar_lut_manager.show_scalar_bar = True
ipw_y = ImagePlaneWidget()
mayavi.add_module(ipw_y)
ipw_y.ipw.plane_orientation = 'y_axes'
if __name__ == '__main__':
view_numpy()