Нормализация цветовых карты Matplotlib

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

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

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

Введение

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

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

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

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

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

Импортируем необходимые библиотеки

В этом шаге мы импортируем необходимые библиотеки, включая Matplotlib, NumPy и цвета Matplotlib.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors as colors

Создаем синтетические данные

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

def rbf(x, y):
    return 1.0 / (1 + 5 * ((x ** 2) + (y ** 2)))

N = 200
gain = 8
X, Y = np.mgrid[-3:3:complex(0, N), -2:2:complex(0, N)]
Z1 = rbf(X + 0.5, Y + 0.5)
Z2 = rbf(X - 0.5, Y - 0.5)
Z = gain * Z1 - Z2

shadeopts = {'cmap': 'PRGn','shading': 'gouraud'}
colormap = 'PRGn'
lnrwidth = 0.5

Применяем SymLogNorm

В этом шаге мы применим SymLogNorm к синтетическим данным и визуализируем результаты.

fig, ax = plt.subplots(2, 1, sharex=True, sharey=True)

pcm = ax[0].pcolormesh(X, Y, Z,
                       norm=colors.SymLogNorm(linthresh=lnrwidth, linscale=1,
                                              vmin=-gain, vmax=gain, base=10),
                       **shadeopts)
fig.colorbar(pcm, ax=ax[0], extend='both')
ax[0].text(-2.5, 1.5,'symlog')

pcm = ax[1].pcolormesh(X, Y, Z, vmin=-gain, vmax=gain,
                       **shadeopts)
fig.colorbar(pcm, ax=ax[1], extend='both')
ax[1].text(-2.5, 1.5, 'linear')

plt.show()

Применяем AsinhNorm

В этом шаге мы применим AsinhNorm к синтетическим данным и визуализируем результаты.

fig, ax = plt.subplots(2, 1, sharex=True, sharey=True)

pcm = ax[0].pcolormesh(X, Y, Z,
                       norm=colors.SymLogNorm(linthresh=lnrwidth, linscale=1,
                                              vmin=-gain, vmax=gain, base=10),
                       **shadeopts)
fig.colorbar(pcm, ax=ax[0], extend='both')
ax[0].text(-2.5, 1.5,'symlog')

pcm = ax[1].pcolormesh(X, Y, Z,
                       norm=colors.AsinhNorm(linear_width=lnrwidth,
                                             vmin=-gain, vmax=gain),
                       **shadeopts)
fig.colorbar(pcm, ax=ax[1], extend='both')
ax[1].text(-2.5, 1.5, 'asinh')

plt.show()

Резюме

В этом практическом занятии мы узнали, как использовать SymLogNorm и AsinhNorm для отображения цветовых карты на нелинейные данные. Применяя эти методы нормализации, мы можем более точно визуализировать данные и легче различать детали в данных.