Визуализация с использованием Matplotlib коллекций

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

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

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

Введение

В этом руководстве вы узнаете, как создать визуализацию с использованием коллекций Matplotlib. Руководство покажет, как использовать LineCollection, PolyCollection и RegularPolyCollection. Также покажется, как использовать ключевые аргументы offsets и offset_transform LineCollection и PolyCollection для установки позиций спиральных линий. Руководство также покажет, как использовать RegularPolyCollection для создания правильных многоугольников.

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

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

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

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

Импортировать необходимые библиотеки

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import collections, transforms

Первым шагом является импорт необходимых библиотек. В этом руководстве мы будем использовать Matplotlib и Numpy.

Создать спиральные линии

nverts = 50
npts = 100

## Создать несколько спиральных линий
r = np.arange(nverts)
theta = np.linspace(0, 2*np.pi, nverts)
xx = r * np.sin(theta)
yy = r * np.cos(theta)
spiral = np.column_stack([xx, yy])

Следующим шагом является создание спиральных линий с использованием Numpy. Мы будем использовать функции sin и cos для создания спиральных линий.

Создать смещения

## Фиксация случайного состояния для воспроизводимости
rs = np.random.RandomState(19680801)

## Создать некоторые смещения
xyo = rs.randn(npts, 2)

Третий шаг - создать смещения с использованием Numpy. Мы будем использовать функцию случайных чисел для создания смещений.

Создать LineCollection с использованием смещений

col = collections.LineCollection(
    [spiral], offsets=xyo, offset_transform=ax1.transData)
trans = fig.dpi_scale_trans + transforms.Affine2D().scale(1.0/72.0)
col.set_transform(trans)
col.set_color(colors)

ax1.add_collection(col, autolim=True)
ax1.autoscale_view()

ax1.set_title('LineCollection using offsets')

Четвёртым шагом является создание LineCollection с использованием смещений. Мы будем использовать LineCollection для создания кривых с смещениями. Также мы будем использовать offset_transform для установки позиций кривых.

Создать PolyCollection с использованием смещений

col = collections.PolyCollection(
    [spiral], offsets=xyo, offset_transform=ax2.transData)
trans = transforms.Affine2D().scale(fig.dpi/72.0)
col.set_transform(trans)
col.set_color(colors)

ax2.add_collection(col, autolim=True)
ax2.autoscale_view()

ax2.set_title('PolyCollection using offsets')

Пятым шагом является создание PolyCollection с использованием смещений. Мы будем использовать PolyCollection для заливки кривых цветами. Также мы будем использовать offset_transform для установки позиций кривых.

Создать RegularPolyCollection с использованием смещений

col = collections.RegularPolyCollection(
    7, sizes=np.abs(xx) * 10.0, offsets=xyo, offset_transform=ax3.transData)
trans = transforms.Affine2D().scale(fig.dpi / 72.0)
col.set_transform(trans)
col.set_color(colors)

ax3.add_collection(col, autolim=True)
ax3.autoscale_view()

ax3.set_title('RegularPolyCollection using offsets')

Шестым шагом является создание RegularPolyCollection с использованием смещений. Мы будем использовать RegularPolyCollection для создания правильных многоугольников с смещениями. Также мы будем использовать offset_transform для установки позиций многоугольников.

Создать последовательные смещения данных

## Симулировать серию профилей океанических течений,
## последовательно смещенных на 0,1 м/с, чтобы они образовывали то,
## что иногда называют "водопадной" диаграммой или "стаканчиковой" диаграммой.

nverts = 60
ncurves = 20
offs = (0.1, 0.0)

yy = np.linspace(0, 2*np.pi, nverts)
ym = np.max(yy)
xx = (0.2 + (ym - yy) / ym) ** 2 * np.cos(yy - 0.4) * 0.5
segs = []
for i in range(ncurves):
    xxx = xx + 0.02*rs.randn(nverts)
    curve = np.column_stack([xxx, yy * 100])
    segs.append(curve)

col = collections.LineCollection(segs, offsets=offs)
ax4.add_collection(col, autolim=True)
col.set_color(colors)
ax4.autoscale_view()

ax4.set_title('Successive data offsets')
ax4.set_xlabel('Zonal velocity component (m/s)')
ax4.set_ylabel('Depth (m)')
ax4.set_ylim(ax4.get_ylim()[::-1])

Седьмым шагом является создание последовательных смещений данных. Мы будем использовать LineCollection для создания кривых с последовательными смещениями.

Резюме

В этом руководстве показано, как использовать коллекции Matplotlib для создания визуализаций. Вы узнали, как использовать LineCollection, PolyCollection и RegularPolyCollection для создания кривых и многоугольников. Также вы узнали, как использовать ключевые аргументы offsets и offset_transform LineCollection и PolyCollection для установки позиций спиралей.