将颜色条的标签从增加更改为减少值

时间:2013-05-30 01:57:33

标签: matplotlib max labels minimum colorbar

我想将颜色条的标签从增加更改为减少值。当我尝试通过vminvmax执行此操作时,收到错误消息:

  

minvalue必须小于或等于maxvalue

所以,例如,我希望颜色条从左边的20开始,然后到右边的15。

到目前为止,这是我的colorbar代码,但是在这个例子中,值从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 个答案:

答案 0 :(得分:7)

下面显示的颜色栏可能与您的完全不同,因为它们只是示例颜色栏,可用作概念验证。

在下文中,我假设您有一个类似于此的颜色条,右侧的值增加:

Original colorbar

方法1:反转x轴

反转颜色条的整个x轴

如果你想反转 x轴,意味着x轴上的值向右下降,使颜色条“镜像”,你可以使用{{ 3}} ax属性:

cb1   = mpl.colorbar.ColorbarBase(colorbar1,
                                  cmap=cmap1,
                                  norm=norm1,
                                  orientation='horizontal')
cb1.ax.invert_xaxis()

这给出了下面的输出。

Colorbar with inverted x-axis

也可以通过设置颜色栏locator来更改刻度标签的数量。这里使用ColorbarBase,但您也可以使用许多MultipleLocator

from matplotlib.ticker import MultipleLocator

cb1.locator = MultipleLocator(1) # Show ticks only for each multiple of 1
cb1.update_ticks()
cb1.ax.invert_xaxis() 

Colorbar with inverted x-axis and MultipleLocator

方法2:使用自定义ticklabels

反转刻度标签的顺序,保持颜色栏的方向

如果您希望颜色条本身的方向不变,并且只反转勾选标签的显示顺序,则可以使用set_ticksset_ticklabels方法。与以前的解决方案相比,这更像是一种“暴力”方法。

cb1.set_ticks(np.arange(15, 21))
cb1.set_ticklabels(np.arange(20, 14, -1))

这给出了下面的颜色条。请注意,颜色保持不变,只有刻度位置和刻度标签已更改。

Colorbar with custom ticklabels