Введение
Matplotlib - популярная библиотека визуализации данных в Python. Она предоставляет различные инструменты для построения графиков, включая возможности построения 2D и 3D графиков. В этом руководстве мы будем использовать модуль RGBAxes из набора инструментов AxesGrid в Matplotlib для отображения RGB-каналов.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
В этом шаге мы импортируем необходимые библиотеки: numpy, matplotlib.pyplot и mpl_toolkits.axes_grid1.axes_rgb.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.axes_rgb import RGBAxes, make_rgb_axes
Определяем функцию для получения RGB-каналов
В этом шаге мы определим функцию get_rgb(), которая будет получать каналы R, G и B изображения. В этом примере мы будем использовать функцию get_sample_data() из модуля cbook для получения образца изображения.
import matplotlib.cbook as cbook
def get_rgb():
## Получаем образец изображения
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")
Z[Z < 0] = 0.
Z = Z / Z.max()
## Получаем каналы R, G и B
R = Z[:13, :13]
G = Z[2:, 2:]
B = Z[:13, 2:]
return R, G, B
Определяем функцию для создания RGB-куба
В этом шаге мы определим функцию make_cube(), которая будет создавать RGB-куб из каналов R, G и B, полученных на предыдущем шаге. Функция вернет кубы R, G и B, а также RGB-изображение.
def make_cube(r, g, b):
## Получаем размерность R
ny, nx = r.shape
## Создаем кубы R, G и B
R = np.zeros((ny, nx, 3))
R[:, :, 0] = r
G = np.zeros_like(R)
G[:, :, 1] = g
B = np.zeros_like(R)
B[:, :, 2] = b
## Объединяем кубы R, G и B для создания RGB-изображения
RGB = R + G + B
return R, G, B, RGB
Создаем график с использованием RGBAxes
В этом шаге мы создадим график с использованием класса RGBAxes. Мы будем использовать метод imshow_rgb() объекта RGBAxes для отображения RGB-изображения.
def demo_rgb1():
## Создаем фигуру и объект RGBAxes
fig = plt.figure()
ax = RGBAxes(fig, [0.1, 0.1, 0.8, 0.8], pad=0.0)
## Получаем каналы R, G и B
r, g, b = get_rgb()
## Отображаем RGB-изображение с использованием метода imshow_rgb()
ax.imshow_rgb(r, g, b)
Создаем график RGBAxes с отдельными каналами
В этом шаге мы создадим график RGBAxes с отдельными каналами с использованием функции make_rgb_axes(). Мы будем использовать метод imshow() объектов Axes для отображения каналов R, G и B.
def demo_rgb2():
## Создаем фигуру и объект Axes
fig, ax = plt.subplots()
## Создаем объекты Axes для каналов R, G и B с использованием функции make_rgb_axes()
ax_r, ax_g, ax_b = make_rgb_axes(ax, pad=0.02)
## Получаем каналы R, G и B и создаем RGB-куб
r, g, b = get_rgb()
im_r, im_g, im_b, im_rgb = make_cube(r, g, b)
## Отображаем RGB-изображение и каналы R, G и B
ax.imshow(im_rgb)
ax_r.imshow(im_r)
ax_g.imshow(im_g)
ax_b.imshow(im_b)
## Задаем параметры делений и цвета рамок для всех объектов Axes
for ax in fig.axes:
ax.tick_params(direction='in', color='w')
ax.spines[:].set_color("w")
Отображаем графики
В этом шаге мы вызовем функции demo_rgb1() и demo_rgb2() для создания графиков и отобразим их с использованием функции plt.show().
demo_rgb1()
demo_rgb2()
plt.show()
Резюме
В этом уроке мы узнали, как использовать модуль RGBAxes из набора инструментов AxesGrid в Matplotlib для отображения каналов RGB. Мы рассмотрели следующие шаги:
- Импортировать необходимые библиотеки
- Определить функцию для получения каналов RGB
- Определить функцию для создания RGB-куба
- Создать график с использованием RGBAxes
- Создать график RGBAxes с отдельными каналами
- Отобразить графики.