Генерация изображений с цветовой картой в Matplotlib

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

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

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

Введение

В этом руководстве вы узнаете, как создать набор изображений с помощью единой цветовой карты, нормировки и цветовой шкалы в библиотеке Matplotlib для Python. Также вы научитесь генерировать данные, настраивать цветовые шкалы и обновлять изображения в соответствии с изменениями в нормировке других изображений.

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

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

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

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

Импортируем библиотеки

Сначала нам нужно импортировать необходимые библиотеки: numpy и matplotlib. Также мы установим случайный сид, чтобы обеспечить воспроизводимость.

import matplotlib.pyplot as plt
import numpy as np

Генерируем данные и создаем подграфики

Далее мы сгенерируем данные для наших изображений. Создадим сетку подграфиков размером 3x2, где каждый подграфик будет содержать случайно сгенерированный массив значений.

np.random.seed(19680801)
Nr = 3
Nc = 2

fig, axs = plt.subplots(Nr, Nc)
fig.suptitle('Multiple images')

images = []
for i in range(Nr):
    for j in range(Nc):
        ## Generate data with a range that varies from one plot to the next.
        data = ((1 + i + j) / 10) * np.random.rand(10, 20)
        images.append(axs[i, j].imshow(data))
        axs[i, j].label_outer()

Настраиваем цветовую шкалу и создаем цветовую шкалу (colorbar)

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

vmin = min(image.get_array().min() for image in images)
vmax = max(image.get_array().max() for image in images)
norm = colors.Normalize(vmin=vmin, vmax=vmax)
for im in images:
    im.set_norm(norm)

fig.colorbar(images[0], ax=axs, orientation='horizontal', fraction=.1)

Обновляем изображения

Наконец, мы обновим изображения, чтобы они реагировали на изменения в нормировке других изображений. Это позволит нам изменить цветовую карту и цветовую шкалу одного изображения, и все остальные будут обновляться соответственно.

def update(changed_image):
    for im in images:
        if (changed_image.get_cmap()!= im.get_cmap()
                or changed_image.get_clim()!= im.get_clim()):
            im.set_cmap(changed_image.get_cmap())
            im.set_clim(changed_image.get_clim())

for im in images:
    im.callbacks.connect('changed', update)

Резюме

В этом практическом занятии мы узнали, как создавать набор изображений с одинаковой цветовой картой, нормализацией и цветовой шкалой в библиотеке Matplotlib для Python. Мы сгенерировали данные, настроили цветовые шкалы и обновляли изображения, чтобы они реагировали на изменения в нормировке других изображений. Это полезный метод для визуализации нескольких наборов данных с одинаковой цветовой шкалой и цветовой картой.