Matplotlib: цветовые полосы для сеток изображений

Beginner

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

Введение

Этот лаба посвящена созданию сеток изображений с цветовыми полосами с использованием 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 изображений с цветовой полосой для каждой строки. Следуя этим шагам, вы можете создать сетки изображений с цветовыми полосами для собственных наборов данных.