Matplotlib: продвинутый уровень

3D-поверхности

Рисуйте 3D-поверхности и сетки с projection="3d", plot_surface и view_init.

Введение

Некоторые данные зависят от двух входов, например высота, зависящая от x и y. 3D Axes, созданный с projection="3d", может нарисовать их поверхностью. view_init поворачивает камеру, чтобы посмотреть с лучшего ракурса.

np.meshgrid превращает два одномерных диапазона в двумерные сетки X и Y, так что Z вычисляется для всех пар (x, y) сразу. plot_surface раскрашивает поверхность цветовой картой, а plot_wireframe нарисовал бы только линии сетки. view_init(elev, azim) ставит камеру: elev - угол возвышения, azim - поворот вокруг вертикальной оси.

Интерактивный визуализатор

Поворачивайте камеру с помощью elev и azim, переключайтесь между поверхностью и сеткой (wireframe) и пробуйте другие функции.

Запускаемый пример Matplotlib

Matplotlib
Запустить код →
main.py
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 40)
y = np.linspace(-3, 3, 40)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))

fig = plt.figure(figsize=(7, 5))
ax = fig.add_subplot(projection="3d")
ax.plot_surface(X, Y, Z, cmap="viridis")
ax.view_init(elev=30, azim=45)
ax.set_title("z = sin(sqrt(x² + y²))")
plt.show()
Получить кнопку запуска для этого примера График, который рисует этот код
3D-поверхности