Сетки и оттенкование с использованием pcolormesh

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Matplotlib - это библиотека визуализации данных для Python. Она предоставляет различные инструменты для создания статических, анимированных и интерактивных визуализаций в Python. В этом лабе мы узнаем, как использовать функции pcolormesh и pcolor в Matplotlib для визуализации 2D сеток.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("Importing Matplotlib") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("Numerical Computing") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("Data Visualization") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48859{{"Сетки и оттенкование с использованием pcolormesh"}} matplotlib/figures_axes -.-> lab-48859{{"Сетки и оттенкование с использованием pcolormesh"}} python/lists -.-> lab-48859{{"Сетки и оттенкование с использованием pcolormesh"}} python/tuples -.-> lab-48859{{"Сетки и оттенкование с использованием pcolormesh"}} python/importing_modules -.-> lab-48859{{"Сетки и оттенкование с использованием pcolormesh"}} python/numerical_computing -.-> lab-48859{{"Сетки и оттенкование с использованием pcolormesh"}} python/data_visualization -.-> lab-48859{{"Сетки и оттенкование с использованием pcolormesh"}} end

Импортируем необходимые библиотеки

Сначала нам нужно импортировать необходимые библиотеки, 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.