将颜色条的标签从递增值更改为递减值
Posted
技术标签:
【中文标题】将颜色条的标签从递增值更改为递减值【英文标题】:Change the labels of a colorbar from increasing to decreasing values 【发布时间】:2013-05-25 11:20:53 【问题描述】:我想。当我尝试通过vmin
和vmax
执行此操作时,我收到错误消息:
最小值必须小于或等于最大值
因此,例如,我希望颜色条从左侧的 20 处开始,到右侧的 15 处。
到目前为止,这是我的颜色条代码,但在此示例中,值从 15 变为 20,我想颠倒该顺序:
cmap1 = mpl.cm.YlOrBr_r
norm1 = mpl.colors.Normalize(15,20)
cb1 = mpl.colorbar.ColorbarBase(colorbar1, cmap=cmap1, norm=norm1, orientation='horizontal')
cb1.set_label('magnitude')
【问题讨论】:
【参考方案1】:在方法 2 中生成颜色条的替代解决方案:
cmap1 = cmap1.reversed()
cb1.ax.invert_yaxis()
【讨论】:
【参考方案2】:下面显示的颜色条可能与您的完全不同,因为它们只是作为概念验证的示例颜色条。
在下面我假设你有一个与此类似的颜色条,右侧的值增加:
方法一:反转x轴
反转颜色条的整个 x 轴
如果你想反转 x 轴,意味着 x 轴上的值向右下降,使颜色条“镜像”,你可以使用@987654321 @的ax
属性:
cb1 = mpl.colorbar.ColorbarBase(colorbar1,
cmap=cmap1,
norm=norm1,
orientation='horizontal')
cb1.ax.invert_xaxis()
这给出了下面的输出。
还可以通过设置颜色条locator
来更改刻度标签的数量。这里使用了MultipleLocator
,尽管您也可以使用许多other locators。
from matplotlib.ticker import MultipleLocator
cb1.locator = MultipleLocator(1) # Show ticks only for each multiple of 1
cb1.update_ticks()
cb1.ax.invert_xaxis()
方法 2:使用自定义刻度标签
颠倒刻度标签的顺序,保持颜色条的方向
如果您想要颜色条本身的方向,并且只反转刻度标签出现的顺序,您可以使用set_ticks
和set_ticklabels
方法。与以前的解决方案相比,这更像是一种“蛮力”方法。
cb1.set_ticks(np.arange(15, 21))
cb1.set_ticklabels(np.arange(20, 14, -1))
这给出了如下所示的颜色条。请注意,颜色保持不变,只有刻度位置和刻度标签发生了变化。
【讨论】:
以上是关于将颜色条的标签从递增值更改为递减值的主要内容,如果未能解决你的问题,请参考以下文章
matplotlib自定义设置plt.colorbar函数配置颜色条的刻度数实战:自定义设置颜色条刻度并为刻度值进行命名和标签化