【问题标题】:adding ticks to matplotlib colorbar向 matplotlib 颜色栏添加刻度
【发布时间】:2016-06-10 09:42:21
【问题描述】:

在下面的简单代码中:

dat = np.linspace(0.1,0.9,4)*np.ones((4,1))
fig, ax = plt.subplots()
cax = ax.imshow(dat, interpolation='none')
cbar = fig.colorbar(cax)
plt.show()

给出:

我希望颜色条的范围为 [0,1]。这可以通过以下方式完成:

dat = np.linspace(0.1,0.9,4)*np.ones((4,1))
fig, ax = plt.subplots()
cax = ax.imshow(dat, interpolation='none')
cbar = fig.colorbar(cax)
cbar.set_clim(0, 1)
cbar.set_ticks(np.linspace(0,1,11))
plt.show()

导致:

很明显,随着颜色变浅,范围发生了变化,但刻度没有改变,即cbar.set_ticks() 没有按预期执行。如何更改刻度线?

【问题讨论】:

    标签: python matplotlib colorbar


    【解决方案1】:

    我不知道为什么颜色条没有调整,但是您可以通过将调用更改为imshow 来实现您想要的效果

    dat = np.linspace(0.1, 0.9, 4) * np.ones((4,1))
    fig, ax = plt.subplots()
    cax = ax.imshow(dat, interpolation='none', vmin=0, vmax=1)
    cbar = fig.colorbar(cax)
    plt.show()
    

    注意额外的 vminvmax 参数。

    【讨论】:

    • 啊,这比单独调用cbar.set_clim()cbar.set_ticks() 容易得多,谢谢...
    • 当颜色映射的限制发生变化时,应该有通知来更新颜色条......
    • 在 OP 中,似乎要求是(1)能够调整颜色条的范围和(2)能够调整颜色条内的刻度。虽然此答案解决了要求(1),但我们还可以通过包含来自 OP 的 cbar.set_ticks 来完成要求(2)。另外,vmax=0 是否需要更改为vmax=1 才能匹配 OP?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2012-03-28
    • 2013-09-13
    相关资源
    最近更新 更多