Введение
Этот лаба посвящена созданию сеток изображений с цветовыми полосами с использованием Matplotlib. Пример кода, предоставленный ниже, показывает, как использовать одну общую цветовую полосу для каждой строки или столбца сетки изображений.
Советы по работе с ВМ
После завершения запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек
Сначала нам нужно импортировать необходимые библиотеки для создания сетки изображений с цветовыми полосами.
import matplotlib.pyplot as plt
from matplotlib import cbook
from mpl_toolkits.axes_grid1 import AxesGrid
Определение изображений данных
Мы определяем функцию, которая возвращает образец данных изображения и его размеры.
def get_demo_image():
z = cbook.get_sample_data("axes_grid/bivariate_normal.npy") ## 15x15 array
return z, (-3, 4, -4, 3)
Создание сетки с цветовой полосой снизу
Мы создаем сетку 2x2 изображений с цветовой полосой для каждого столбца.
def demo_bottom_cbar(fig):
grid = AxesGrid(fig, 121, ## аналогично subplot(121)
nrows_ncols=(2, 2),
axes_pad=0.10,
share_all=True,
label_mode="1",
cbar_location="bottom",
cbar_mode="edge",
cbar_pad=0.25,
cbar_size="15%",
direction="column"
)
Z, extent = get_demo_image()
cmaps = ["autumn", "summer"]
for i in range(4):
im = grid[i].imshow(Z, extent=extent, cmap=cmaps[i//2])
if i % 2:
grid.cbar_axes[i//2].colorbar(im)
for cax in grid.cbar_axes:
cax.axis[cax.orientation].set_label("Bar")
## Это влияет на все оси, так как share_all = True.
grid.axes_llc.set_xticks([-2, 0, 2])
grid.axes_llc.set_yticks([-2, 0, 2])
Создание сетки с цветовой полосой справа
Мы создаем сетку 2x2 изображений с цветовой полосой для каждой строки.
def demo_right_cbar(fig):
grid = AxesGrid(fig, 122, ## аналогично subplot(122)
nrows_ncols=(2, 2),
axes_pad=0.10,
label_mode="1",
share_all=True,
cbar_location="right",
cbar_mode="edge",
cbar_size="7%",
cbar_pad="2%",
)
Z, extent = get_demo_image()
cmaps = ["spring", "winter"]
for i in range(4):
im = grid[i].imshow(Z, extent=extent, cmap=cmaps[i//2])
if i % 2:
grid.cbar_axes[i//2].colorbar(im)
for cax in grid.cbar_axes:
cax.axis[cax.orientation].set_label('Foo')
## Это влияет на все оси, потому что мы установили share_all = True.
grid.axes_llc.set_xticks([-2, 0, 2])
grid.axes_llc.set_yticks([-2, 0, 2])
Создание фигуры и вызов функций
Наконец, мы создаем фигуру и вызываем функции для создания сеток изображений с цветовыми полосами.
fig = plt.figure()
demo_bottom_cbar(fig)
demo_right_cbar(fig)
plt.show()
Резюме
Matplotlib предоставляет простой способ создания сеток изображений с цветовыми полосами с использованием инструментария AxesGrid. В этом практическом занятии показано, как создать сетку 2x2 изображений с цветовой полосой для каждого столбца и сетку 2x2 изображений с цветовой полосой для каждой строки. Следуя этим шагам, вы можете создать сетки изображений с цветовыми полосами для собственных наборов данных.