【问题标题】:Matplotlib: Imshow with 1 color for each discrete valueMatplotlib:Imshow,每个离散值都有 1 种颜色
【发布时间】:2021-11-16 16:45:54
【问题描述】:

我有一个二维数组,其中包含整数值 1 - 7。我想为每个离散值绘制 1 种颜色的数组。

fig, ax = plt.subplots()
cmap = mpl.cm.get_cmap('Set2', 7)
im = plt.imshow(data, cmap=cmap, vmin=1, vmax=7, aspect=25, interpolation=None)
fig.colorbar(im, ticks=range(7), orientation="horizontal")

我似乎无法正确设置颜色。如下所示,刻度线不在颜色的中间。另外,我不知道为什么某些列的颜色超过 2 种,例如在 x=300 点,浅绿色和绿蓝色之间有一条橙色的小线。数据为 2 x 660,因此每列最多应该有 2 个不同的值。

【问题讨论】:

  • 好了,我知道为什么还有其他颜色出现了,应该是interpolation='none'而不是interpolation=None

标签: python matplotlib


【解决方案1】:

要修复颜色条,您可以在两个方向上将颜色范围扩大 0.5:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

data = np.random.randint(1, 8, (10, 10))

fig, ax = plt.subplots()
cmap = mpl.cm.get_cmap('Set2', 7)
im = plt.imshow(data, cmap=cmap, vmin=0.5, vmax=7.5, aspect=1, interpolation="none")
fig.colorbar(im, ticks=range(8), orientation="horizontal")

...或查看刻度定位器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多