Цветовая карта Python для отображения разницы в диапазоне высоких значений - PullRequest
1 голос
/ 05 июня 2019

Есть ли какая-либо цветовая карта, которая отображает различия в диапазонах высоких значений хорошего изображения, и если нет (потому что я не нашел см), есть ли способ определить его с помощью msyself и дать его в качестве аргумента cmap для графиков seaborn / matplotlib?Я уже пробовал логарифмическое цветовое масштабирование, но трудно определить, что только самые высокие 10 процентов вашего изображения должны иметь четкую разницу цветов, а остальные могут быть черными, например.Таким образом, у меня есть изображение / массив, который имеет числа между 0 и 2000. И я только, что четко различать между числами между 1800 и 2000. Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Используя imshow 'vmin и vmax аргументы, вы можете ограничить диапазон цветов от 1800 до 2000. Если вы хотите, чтобы нижние значения были сопоставлены с черным, вы можете использовать cmap.set_under(black).

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(-7,7,301)
x,y = np.meshgrid(t,t)
z1 = np.sin(x)*np.cos(6*y) + np.cos(12*x*y)/6
z2 = np.exp(-((x-2)**2+(y-2)**2)*3)
z = (z1*6/7+1)*100+1800-z2*1949

cmap=plt.get_cmap("viridis")
cmap.set_under("black")

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(9,3.0))

im1 = ax1.imshow(z, cmap=cmap)
fig.colorbar(im1, ax=ax1)

im2 = ax2.imshow(z, vmin=1800, vmax=2000, cmap=cmap)
fig.colorbar(im2, ax=ax2)


ax1.set_title("Original")
ax2.set_title("Linear between 1800 and 2000")
plt.show()

enter image description here

0 голосов
/ 05 июня 2019

Это не совсем то, что вы хотите, но вы можете попытаться построить две группы отдельно, я имею в виду:

vals = np.array([1,2,3,101,120,150])
xs = np.arange(6)
ys = np.arange(6)

mask = vals>100
vals2 = vals[mask]
xs1 = xs[mask]
xs2 = xs[np.logical_not(mask)]
ys1 = ys[mask]
ys2 = ys[np.logical_not(mask)]

plt.scatter(xs2,ys2,c='black')
plt.scatter(xs1,ys1,c=vals2)
plt.show()

Конечно, вы можете настроить цветовую карту для второго графика, чтобы он дифференцировал«интересные» очки от других

...