Введение
Matplotlib - это библиотека визуализации данных для Python. Она предоставляет различные инструменты для создания статических, анимированных и интерактивных визуализаций в Python. В этом лабе мы узнаем, как использовать функции pcolormesh и pcolor в Matplotlib для визуализации 2D сеток.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Сначала нам нужно импортировать необходимые библиотеки, Matplotlib и NumPy, выполнив следующий кодовый блок:
import matplotlib.pyplot as plt
import numpy as np
Создаем данные для визуализации
Далее мы создадим 2D сеть, которую будем использовать для визуализации. Мы можем создать сеть с помощью функции meshgrid в NumPy. Функция meshgrid создает сетку точек по двум векторам x и y, которые представляют координаты точек сетки. Мы создадим сетку из 5x5 точек с помощью следующего кодового блока:
nrows = 5
ncols = 5
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)
X, Y = np.meshgrid(x, y)
Z = X + Y
Плоское оттенкование
Функция pcolormesh в Matplotlib может визуализировать 2D сетки. Наиболее простой способ задания сетки - это shading='flat', при условии, что размер сетки на единицу больше размеров данных по каждой размерности, то есть имеет размерность (M+1, N+1). В таком случае X и Y определяют углы четырехугольников, которые окрашиваются в соответствии со значениями в Z. Мы можем визуализировать сеть с помощью следующего кодового блока:
fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='flat', cmap='viridis')
ax.set_title('Flat Shading')
plt.show()
Плоское оттенкование, сеть одинаковой формы
Если сеть имеет ту же форму, что и данные по каждой размерности, мы не можем использовать shading='flat'. Исторически Matplotlib в этом случае悄然无声地 отбрасывал последнюю строку и столбец Z, чтобы соответствовать поведению Matlab. Если такое поведение по-прежнему необходимо, просто вручную отбросьте последнюю строку и столбец. Мы можем визуализировать сеть с помощью следующего кодового блока:
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z[:-1, :-1], shading='flat', cmap='viridis')
ax.set_title('Flat Shading, Same Shape Grid')
plt.show()
Оттенкование ближайшими точками, сеть одинаковой формы
Обычно удаление строки и столбца данных не соответствует тому, что имеет в виду пользователь, когда делает X, Y и Z одинаковой формы. В этом случае Matplotlib позволяет использовать shading='nearest' и центрирует окрашенные четырехугольники на точках сетки. Если передана сеть неправильной формы с shading='nearest', возникает ошибка. Мы можем визуализировать сеть с помощью следующего кодового блока:
fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='nearest', cmap='viridis')
ax.set_title('Nearest Shading, Same Shape Grid')
plt.show()
Автоматическое оттенкование
Возможно, что пользователь хочет, чтобы код автоматически выбрал, какое оттенкование использовать. В этом случае shading='auto' будет решать, использовать ли flat или nearest оттенкование на основе размеров X, Y и Z. Мы можем визуализировать сеть с помощью следующего кодового блока:
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='auto', cmap='viridis')
ax.set_title('Auto Shading')
plt.show()
Оттенкование Гуро
Можно также указать оттенкование Гуро (Gouraud shading), при котором цвет в четырехугольниках линейно интерполируется между точками сетки. Формы X, Y, Z должны быть одинаковыми. Мы можем визуализировать сеть с помощью следующего кодового блока:
fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='gouraud', cmap='viridis')
ax.set_title('Gouraud Shading')
plt.show()
Резюме
В этом практическом занятии мы узнали, как использовать функции pcolormesh и pcolor в Matplotlib для визуализации 2D сеток. Мы изучили различные варианты оттенкования, включая flat, nearest, auto и gouraud. Мы также узнали, как создавать 2D сеть с использованием функции meshgrid в NumPy.