【问题标题】:Two ranges on a horizontal oriented colorbar ticks are 'floating away' from colorbar水平方向的颜色条刻度上的两个范围从颜色条“浮动”
【发布时间】:2014-04-14 06:40:59
【问题描述】:

使用this 我可以在垂直方向的颜色条上绘制两个范围。因此,我想尝试对水平方向的颜色条做同样的事情。这有效,但部分有效。先上代码:

import pylab as pl
import numpy as np
a = np.random.rand(10, 10)

pl.imshow(a)
cb = pl.colorbar(pad=0.1, orientation='horizontal')

l, b, w, h = cb.ax.get_position().bounds
cb.ax.set_aspect("auto")

ax2 =pl.twiny(ax=cb.ax)
cb.ax.set_position([l, b, w, h])
ax2.set_position([l, b, w, h])
cb.ax.set_ylim(0, 1)
ax2.set_ylim(-10, 10)
tight_layout()

然后输出:

这似乎可以,但是顶部和底部的刻度都浮动在颜色栏的一定距离上,并且颜色栏的高度很小。通过增加高度,刻度与颜色条的距离变得更远。

任何建议如何解决?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    进行以下更改(参见代码中的 cmets):

    import pylab as pl
    import numpy as np
    a = np.random.rand(10, 10)
    pl.imshow(a)
    cb = pl.colorbar(pad=0.1,  orientation='horizontal')
    
    l, b, w, h = cb.ax.get_position().bounds
    print l, b, w, h
    cb.ax.set_aspect("auto")
    #w = 0.05            # width of the colorbar (from the vertical example)
    h = 0.05             # height of the colorbar
    ax2 = pl.twiny(ax=cb.ax)
    cb.ax.set_position([l, b, w, h])
    ax2.set_position([l, b, w, h])
    cb.ax.set_xlim(0, 1) # you are now dealing with an horizontal colorbar
                         # so you should define the x lim, not the y lim
    ax2.set_xlim(-10, 10)
    pl.show()
    

    您生成此图像:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      相关资源
      最近更新 更多