На этом шаге мы приведем примеры использования некоторых из перечисленных на предыдущем шаге функций.
Рассмотрим эти функции более подробно.
Функция scalar_scatter() создаёт разреженный несвязанный источник данных, имеет следующие возможные сигнатуры вызова:
scalar_scatter(s, ...) scalar_scatter(x, y, z, s, ...) scalar_scatter(x, y, z, f, ...)
Параметр s - определяет набор данных: массив, который будет визуализирован. Если параметры x, y, z не заданы, то вместо них, в качестве координат, будут использоваться индексы из набора s. Вместо s можно указать функцию f, которая будет принимать координаты и возвращать соответствующее им значение.
Пример работы с scalar_scatter():
import numpy as np from mayavi import mlab s = [1, 2, 3, 4, 5] src_data = mlab.pipeline.scalar_scatter(s) mlab.pipeline.glyph(src_data) mlab.show()
Рис.1. Демонстрация работы функции mlab.pipeline.scalar_scatter()
Функция vector_scatter() создаёт разреженный источник векторных данных. Сигнатуры функции:
vector_scatter(u, v, w, ...) vector_scatter(x, y, z, u, v, w, ...) vector_scatter(x, y, z, f, ...)
Параметры u, v, w - это компоненты векторов, также как в функции scalar_scatter(), если не заданы x, y, z, то в качестве координат будут приняты индексы из наборов u, v, w. Функция f должна возвращать компоненты вектора для заданного набора координат.
Функция scalar_field() создаёт скалярное поле, сигнатура функции:
scalar_field(s, ...) scalar_field(x, y, z, s, ...) scalar_field(x, y, z, f, ...)
3Параметры s, x, y, z - это 2D, ЗD-наборы данных, которые, например, могут быть построены с помощью функций numpy.ogird(), numpy.mgird().
Пример использования:
import numpy as np from mayavi import mlab x, y, z = np.ogrid[0:5, 0:5, 0:5] s = x * y * z src = mlab.pipeline.scalar_field(s) volume = mlab.pipeline.volume(src, vmin=0, vmax=10) mlab.show()
Рис.2. Демонстрация работы функций scalar_field() и volume()
Функция vector_filed() аналогична функции vector_scatter() только для векторных данных.
Функция array2d_source() создаёт 2D-источник связанных данных из 2D исходного массива. Сигнатуры функций:
array2d_source(s, ...) array2d_source(x, y, s, ...) array2d_source(x, y, f, ...)
Параметры s, x, y - 2D-массивы, подобные тем, что могут быть построены с помощью numpy.ogird(), numpy.mgird().
Пример использования:
import numpy as np from mayavi import mlab x, y = np.ogrid[-2:2:0.1, -2:2:0.1] z = np.cos(x * y) src = mlab.pipeline.array2d_source(z) img = mlab.pipeline.image_actor(src) mlab.show()
Рис.3. Демонстрация работы функций array2d_source() и image_actor()
Функция line_source() формирует линейный набор данных. Сигнатуры функций:
line_source(x, y, z, ...) line_source(x, y, z, s, ...)
Параметры x, y, z - координаты точек линии, s - массив со значениями, определяющими свойства линии.
import numpy as np from mayavi import mlab t = np.linspace(0, 5 * np.pi, 100) x = t * np.cos(t) y = t * np.sin(t) z = t line = mlab.pipeline.line_source(x, y, z) tube = mlab.pipeline.tube(line, tube_radius=1) surf = mlab.pipeline.surface(tube) mlab.show()
Рис.4. Демонстрация работы функций line_source() и surface()
На следующем шаге мы рассмотрим работу с фильтрами.