Шаг 170.
Язык Python. Визуализация данных. Библиотека Mayavi. Визуализация данных. Функции для работы с двумерными наборами данных. Функция surf()

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

    Функция строит поверхность по переданному 2D-массиву высот.

    Наиболее часто используемые варианты вызова surf() имеют следующий вид:

  surf(s, ...)
  surf(x, y, s, ...)
  surf(x, y, f, ...)

    Аргументы x, y, s, f являются позиционными (то есть их нельзя передавать с указанием имени параметра). Параметр s - это 2D-массив данных, каждый элемент которого является значением высоты поверхности; x, у - могут иметь размерность 1D или 2D, они используются для индексации массива s; вместо непосредственно 2D-массива с данными можно передать функцию f, которая для наборов координат x и у будет выдавать значения высоты уровня поверхности. Остальные аргументы функции surf() являются именованными. В дополнение к указанным на 162 шаге функция предоставляет следующие параметры:

mask
Массив bool значений для подавления элементов из исходного набора данных.

representation
Тип поверхности, может быть: 'surface', 'wireframe' или 'points'.

warp_scale
Масштабирование по оси z. Если значение равно 'auto', то будет подобрано значение масштаба так, чтобы обеспечить наилучшее визуальное представление.

    Будем работать со следующим набором данных:

x, y = np.mgrid[-2:2:0.1, -2:2:0.1]
z = 5 * np.cos(x * y) * np.sin(x * y)

    Построим поверхность:

mlab.surf(z)
mlab.show()

    Вот полный текст приложения:

import numpy as np
from mayavi import mlab

x, y = np.mgrid[-2:2:0.1, -2:2:0.1]
z = 5 * np.cos(x * y) * np.sin(x * y)

mlab.surf(z)

mlab.show()
Архив с файлом можно взять здесь.


Рис.1. Демонстрация работы функции surf()

    Передадим в surf() помимо z массивы x и у:

import numpy as np
from mayavi import mlab

x, y = np.mgrid[-2:2:0.1, -2:2:0.1]
z = 5 * np.cos(x * y) * np.sin(x * y)

mlab.surf(x, y, z)

mlab.show()
Архив с файлом можно взять здесь.

    Получим следующее изображение, представленное на рисунке 2.


Рис.2. Демонстрация работы с параметрами x, y, z функции surf()

    Так произошло потому, что в случае, когда мы передавали только массив z, в качестве значений координат (x, у) принимались индексы этого массива, во втором варианте, в дополнение к z были переданы предварительно сформированные массивы x и у. Обратите внимание, что шаг между соседними значениями в этих массивах 0.1, а не 1, как было в первом варианте, поэтому высоты и впадины имеют более выраженный вид.

    На следующем шаге мы закончим изучение этого вопроса.




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