【问题标题】:Matplotlib colorbar ticks on left/opposite sideMatplotlib 颜色条在左侧/相反侧打勾
【发布时间】:2016-08-24 15:47:09
【问题描述】:

可以像这样生成一个垂直颜色条(简化):

import matplotlib.pyplot as plt
import matplotlib as mpl

plt.figure()
c_ax=plt.subplot(111)
cb = mpl.colorbar.ColorbarBase(c_ax,orientation='vertical')
plt.savefig('my_colorbar.png')

导致这样的事情(由于空间原因旋转):

是否可以在对面获取刻度标签?

【问题讨论】:

    标签: python matplotlib colorbar


    【解决方案1】:

    由于某种原因,我无法对颜色条输入轴(cax 参数)进行更改。

    但是,从颜色栏对象中获取坐标区然后应用更改效果很好:

    cb.ax.xaxis.set_ticks_position("top")
    

    【讨论】:

      【解决方案2】:

      我不知道为什么,但这些命令都不适合我。如果这也是你的情况,我通过指定 colorbar 属性解决了这个问题

      location='left'
      

      它同时处理刻度和标签。如果您仍然希望颜色条位于绘图的右侧,只需定义一个限制在您想要的位置的新轴并将您的颜色条链接到它。

      cbar_ax=fig.add_axes([x0, y0, width, height])
      

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。当您明确设置颜色条的轴时,可能会出现这种情况。在这种情况下,您可以轻松地指定在这些轴的哪一侧获得刻度和标签。例如,如果您使用 imshow 创建了图像

        fig = plt.figure()
        ax = plt.subplot(1, 1, 1)
        im = ax.imshow(data)
        

        您可以定义颜色条的轴,在此示例中使用 inset_axes:

        from mpl_toolkits.axes_grid1.inset_locator import inset_axes
        cbaxes = inset_axes(ax, width="7%", height="20%", loc=4)
        

        然后添加您的颜色条

        cb = fig.colorbar(im, cax=cbaxes, ticks=[vmin, vmax], orientation='vertical')
        

        然后控制刻度等的位置...

        cbaxes.yaxis.tick_left()
        

        【讨论】:

          【解决方案4】:

          您可以使用c_ax.yaxis.set_ticks_position() 切换刻度的位置

          所以对于你的例子:

          import matplotlib.pyplot as plt
          import matplotlib as mpl
          
          plt.viridis()
          
          fig=plt.figure()
          c_ax=plt.subplot(199)
          
          cb = mpl.colorbar.ColorbarBase(c_ax,orientation='vertical')
          
          c_ax.yaxis.set_ticks_position('left')
          
          plt.savefig('my_colorbar.png')
          

          注意你也可以用类似的方式移动颜色条标签:

          c_ax.yaxis.set_label_position('left')
          

          最后,如果您有一个水平颜色条,并且想要将刻度和标签移动到顶部,您可以使用xaxis 上的等效功能:

          c_ax.xaxis.set_label_position('top')
          c_ax.xaxis.set_ticks_position('top')
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-29
            • 2016-11-24
            • 1970-01-01
            • 2021-03-29
            • 1970-01-01
            相关资源
            最近更新 更多