我想将颜色条的标签从增加更改为减少值。当我尝试通过vmin
和vmax
执行此操作时,收到错误消息:
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')
答案 0 :(得分:7)
下面显示的颜色栏可能与您的完全不同,因为它们只是示例颜色栏,可用作概念验证。
在下文中,我假设您有一个类似于此的颜色条,右侧的值增加:
如果你想反转 x轴,意味着x轴上的值向右下降,使颜色条“镜像”,你可以使用{{ 3}} ax
属性:
cb1 = mpl.colorbar.ColorbarBase(colorbar1,
cmap=cmap1,
norm=norm1,
orientation='horizontal')
cb1.ax.invert_xaxis()
这给出了下面的输出。
也可以通过设置颜色栏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()
如果您希望颜色条本身的方向不变,并且只反转勾选标签的显示顺序,则可以使用set_ticks
和set_ticklabels
方法。与以前的解决方案相比,这更像是一种“暴力”方法。
cb1.set_ticks(np.arange(15, 21))
cb1.set_ticklabels(np.arange(20, 14, -1))
这给出了下面的颜色条。请注意,颜色保持不变,只有刻度位置和刻度标签已更改。