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