[英]matplotlib change colorbar height within own axes
我目前正在尝试创建图形堆栈图,其中的前两个具有颜色条。 为了很好地做到这一点,我使用GridSpec定义了两列,第二列要细得多,专门用于颜色条(或其他图例等图例)。
grids = gs.GridSpec(5, 2, width_ratios=[1, 0.01])
ax1 = fig.add_subplot(grids[0, 0])
cax1 = fig.add_subplot(grids[0, 1])
问题在于,对于这前两个图,由于我的图之间的水平空间为零,因此我的颜色栏的刻度标签略有重叠。
我知道有多种方法可以控制颜色条的高度,但是它们似乎依靠颜色条通过从父轴借用空间使其成为自己的轴。 我想知道当您使用cax kwarg时是否有任何方法可以控制彩条占用多少空间(或具体地说,高度)?
fig.colorbar(im1, cax=cax1, extend='max')
或默认(不可变地)占用指定给它的轴的整个高度。
谢谢!
编辑: 这是我正在努力解决的问题的图像。
如果我可以将第二个稍短一些,或者将第二个稍稍向上移动一点也不是问题。 不幸的是,由于我使用了GridSpec(否则就太神奇了),我受到了轴的限制。
我认为没有任何方法可以让cax
不能填满整个cax
。 但是,在绘制cax
之前(或之后)缩小cax
的大小相当简单。
我写了这个小函数:
def shrink_cbar(ax, shrink=0.9):
b = ax.get_position()
new_h = b.height*shrink
pad = (b.height-new_h)/2.
new_y0 = b.y0 + pad
new_y1 = b.y1 - pad
b.y0 = new_y0
b.y1 = new_y1
ax.set_position(b)
可以这样使用:
fig = plt.figure()
grids = gs.GridSpec(2, 2, width_ratios=[1, 0.01])
ax1 = fig.add_subplot(grids[0, 0])
cax1 = fig.add_subplot(grids[0, 1])
ax2 = fig.add_subplot(grids[1, 0])
cax2 = fig.add_subplot(grids[1, 1])
shrink_cbar(cax2, 0.75)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.