【问题标题】:Ticks plotted with an offset in colorbar在颜色栏中使用偏移量绘制的刻度
【发布时间】:2018-05-04 22:28:57
【问题描述】:

问题:我正在使用 Matplotlib 绘制颜色条,但这些刻度设置为 0.0、0.1.. 到 0.5。

我想在两者之间获得更多间隔,但这导致我遇到以下问题:不规则间隔的刻度标签。

在这张图片中,我用红色标记了刻度中的偏移量。

代码:

plt.pcolor(data_mod, vmin = 0.01, vmax = 0.5, cmap=cmap)
cb = plt.colorbar(extend='both')
cb.set_label('CPRESS', fontsize=7, labelpad=-10, y=1.05, rotation=0)
tick_locator = ticker.MaxNLocator(nbins = 10)
cb.locator = tick_locator
cb.update_ticks()
plt.imshow(data_mod)

我做错了什么?是否可以在颜色的顶部(开始)制作刻度?

【问题讨论】:

  • 使用ticker.MaxNLocator 你明确要求这些垃圾箱;所以不使用它是有意义的。您可能引入它是为了解决不同的问题,因此在此处编辑问题以询问真正的问题是有意义的。
  • 我使用 ticker.MaxNLocator 将 nbin 设置为 10。真正的问题是刻度如何位于颜色的顶部(开始)?我可能做错了什么?
  • 使用ticker.MaxNLocator(nbins = 10) 可以在不改变颜色标准化的情况下强加定位器。所以这就是你做错了。解决方案不要使用它。如前所述,请将问题编辑为潜在问题(包括minimal reproducible example 会有所帮助)。
  • 谢谢,我已经进行了更改,如果我能找到问题的解决方案,我将不胜感激。

标签: python python-2.7 matplotlib


【解决方案1】:

我可以想象您想将绘图和颜色栏中显示的颜色边界固定为numpy.linspace(0,.5,11) 的值。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
cmap = plt.get_cmap("jet",11)

data = np.random.rand(10,10)/2.
norm=matplotlib.colors.BoundaryNorm(np.linspace(0,0.5,11),11)
plt.pcolor(data, norm=norm, cmap=cmap)
cb = plt.colorbar(extend='both', ticks=np.linspace(0,0.5,11))
cb.set_label('CPRESS', fontsize=7, labelpad=-10, y=1.05, rotation=0)

plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多