Шаг 183.
Язык Python. Визуализация данных.
Библиотека Mayavi. Работа с pipeline. Работа с источниками данных (окончание)

    На этом шаге мы приведем примеры использования некоторых из перечисленных на предыдущем шаге функций.

    Рассмотрим эти функции более подробно.

    Функция 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()

    На следующем шаге мы рассмотрим работу с фильтрами.




Предыдущий шаг Содержание Следующий шаг