【问题标题】:Change the labels of a colorbar from increasing to decreasing values将颜色条的标签从递增值更改为递减值
【发布时间】:2013-05-25 11:20:53
【问题描述】:

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

最小值必须小于或等于最大值

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

【问题讨论】:

    标签: matplotlib max labels minimum colorbar


    【解决方案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_ticksset_ticklabels 方法。与以前的解决方案相比,这更像是一种“蛮力”方法。

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

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

      【讨论】:

        猜你喜欢
        • 2013-07-05
        • 2022-01-04
        • 2012-10-05
        • 1970-01-01
        • 1970-01-01
        • 2015-03-31
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        相关资源
        最近更新 更多