我正在尝试从图像创建颜色图。使用连续范围的效果很好,但是我正尝试通过离散因子减少颜色数量。
我尝试通过以下代码使用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()
答案 0 :(得分:0)
如果您只希望颜色表中有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()