Шаг 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().
Предыдущий шаг
Содержание
Следующий шаг