Создать дискретную цветовую панель - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь создать цветовую карту из изображения.Это работает нормально, используя непрерывный диапазон, но я пытаюсь уменьшить количество цветов на дискретный коэффициент.

Я пытался сделать это, используя 10 цветов с помощью следующего кода, но все, что я получаю, это красный?

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

cim = plt.imread("https://i.stack.imgur.com/4q2Ev.png")
cim = cim[cim.shape[0]//2, 8:740, :]

cmap = mcolors.ListedColormap(cim)
norm = mcolors.BoundaryNorm([0,1,2,3,4,5,6,7,8,9,10], cmap.N)

X = np.random.rand(10,10)
Y = np.random.rand(10,10)

plt.contourf(X, Y, levels=100, cmap=cmap, norm = norm)# alpha = 0.8)
plt.colorbar()

enter image description here

1 Ответ

0 голосов
/ 31 декабря 2018

Если вам нужно только 10 цветов в вашей цветовой карте, вы можете создать ее только с этими 10 цветами:

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

cim = plt.imread("https://i.stack.imgur.com/4q2Ev.png")
cim = cim[cim.shape[0]//2, 8:740, :]
cim_10 = cim[cim.shape[0] // 9 * np.arange(10)]  # array of 10 colors

cmap = mcolors.ListedColormap(cim_10)
print(cmap.N)    # prints 10

X = np.random.rand(10,10)

plt.contourf(X, cmap=cmap, levels=np.linspace(0, 1, 11))
plt.colorbar()

plt.show()

enter image description here

...