10

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

minvalue 必须小于或等于 maxvalue

因此,例如,我希望颜色条从左侧的 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')
4

2 回答 2

15

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

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

原始颜色条

方法一:反转x轴

反转颜色条的整个 x 轴

如果要反转x 轴,即 x 轴上的值向右下降,使颜色条“镜像”,则可以使用ColorbarBase'sax属性:

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

这给出了下面的输出。

带有倒置 x 轴的颜色条

也可以通过设置 colorbars 来更改刻度标签的数量locator。这里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() 

具有倒置 x 轴和 MultipleLocator 的颜色条

方法 2:使用自定义刻度标签

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

如果您想要颜色条本身的方向,并且只反转刻度标签出现的顺序,您可以使用set_ticksandset_ticklabels方法。与以前的解决方案相比,这更像是一种“蛮力”方法。

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

这给出了如下所示的颜色条。请注意,颜色保持不变,只有刻度位置和刻度标签发生了变化。

带有自定义刻度标签的颜色条

于 2013-05-30T09:20:34.317 回答
0

在方法 2 中生成颜色条的替代解决方案:

cmap1 = cmap1.reversed()
cb1.ax.invert_yaxis()
于 2021-11-16T16:31:49.447 回答