Шаг 60.
Язык Python. Визуализация данных. Библиотека Matplotlib. Визуализация данных. Цветовая сетка. Построение цветовой сетки. Функция imshow()

    На этом шаге мы рассмотрим назначение, параметры и примеры использования этой функции.

    Для построения цветовой сетки можно воспользоваться функцией imshow() или pcolormesh().

Функция imshow()

    Основное назначение функции imshow() состоит в представлении 2D растров. Это могут быть картинки, двумерные массивы данных, матрицы и т. п.

    Напишем простую программу, которая загружает картинку из интернета по заданному URL и отображает ее с использованием библиотеки Matplotlib:

import matplotlib.pyplot as plt
from PIL import Image
import requests
from io import BytesIO

response = requests.get('https://matplotlib.org/_static/logo2.png')
img = Image.open(BytesIO(response.content))
plt.imshow(img)

plt.show()
Архив с файлом можно взять здесь.

    Результатом её работы будет изображение логотипа Matplotlib.


Рис.1. Изображение логотипа Matplotlib

    Создадим двумерный набор данных и отобразим его с помощью imshow():

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(19680801)
data = np.random.randn(25, 25)
plt.imshow(data)

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 2.


Рис.2. Визуализация двумерного набора данных с использованием imshow()

    Рассмотрим некоторые из параметров функции imshow():

X: массив или PIL-изображение
Поддерживаются следующие размерности массивов:
  • (M, N): двумерный массив со скалярными данными.
  • (M, N, 3): массив с RGB значениями (0-1 float или 0-255 int).
  • (M, N, 4): массив с RGBA значениями (0-1 float или 0-255 int).

cmap: str или Colormap, optional
Цветовая карта для изображения (смотри 59 шаг))

norm: Normalize, optional
Нормализация - приведение скалярных данных к диапазону [0,1] перед наложением цветовой карты. Этот параметр игнорируется для RGB(A) данных.

aspect: {'equal', 'auto'} или float, optional
  • 'equal': обеспечивает соотношение сторон равное 1;
  • 'auto': соотношение не изменяется.

interpolation: str, optional
Алгоритм интерполяции. Доступны следующие значения: 'none', 'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos'.

alpha: численное значение, optional
Прозрачность. Задаётся в диапазоне от 0 до 1. Параметр игнорируется для RGBA.

vmin, vmax: численное значение, optional
Численные значения vmin и vmax (если параметр norm не задан явно) определяют диапазон данных, который будет покрыт цветовой картой. По умолчанию цветовая карта охватывает весь диапазон значений отображаемых данных. Если используется параметр norm, то vmin и vmax игнорируются.

origin: {'upper', 'lower'}, optional
Расположение начала координат (точки [0, 0]): 'upper' - верхний левый, 'lower' - нижний левый угол координатной плоскости.

extent: (left, right, bottom, top), optional
Изменение размеров изображения вдоль осей х, у.

filterrad: float > 0, optional; значение по умолчанию: 4.0
Параметр filter radius для фильтров, которые его используют, например: 'sinc', 'lanczos' или 'blackman'.

    Пример, использующий параметры из приведённого выше списка:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(19680801)
data = np.random.randn(25, 25)
fig, axs = plt.subplots(1, 2, figsize=(10, 3), constrained_layout=True)
p1 = axs[0].imshow(data, cmap='winter', aspect='equal', vmin=-1, vmax=1,
                   origin='lower')
fig.colorbar(p1, ax=axs[0])
p2 = axs[1].imshow(data, cmap='plasma', aspect='equal',
                   interpolation='gaussian', origin='lower', extent=(0, 30, 0, 30))
fig.colorbar(p2, ax=axs[1])

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 3.


Рис.3. Варианты визуализации двумерного набора данных

    На следующем шаге мы рассмотрим функцию pcolormesh().




Предыдущий шаг Содержание Следующий шаг