【问题标题】:Create discrete colorbar创建离散彩条
【发布时间】:2019-01-01 00:36:51
【问题描述】:

我正在尝试从图像创建颜色图。使用连续范围可以正常工作,但我试图通过离散因子减少颜色数量。

我尝试通过以下代码使用 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到1之间吗?当您将数据乘以 10 时,您会看到差异。

标签: python pandas matplotlib colormap


【解决方案1】:

如果您的颜色图中只需要 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多