将图形对象设置为图get_tightbbox()的边界框



我想模拟在输出图形中观察到的图形范围,并将它们应用于图形对象本身。我想要复制的输出图形命令是:

plt.savefig(flname, bbox_inches='tight', pad_inches=0.03)


我已经能够使用获取生成图中观察到的边界框的边界框

bbox = fig.get_tightbbox(fig.canvas.get_renderer())

但我不知道如何将其应用于fig对象!

如果转到此处:

http://matplotlib.org/api/figure_api.html

在Figure类构造函数下,您会发现在add_axes()和gca()中,有一种方法可以使用其中一个kwargs clip_box来设置bbox。

此外,这里还有更多关于bbox的信息。

http://stackoverflow.com/questions/29809238/definition-of-matplotlib-pyplot-axes-bbox

我希望这能像对我一样帮助你。简而言之,你不能把它应用于一个图形,但你似乎可以把它应用到所有的轴上。

如果我读对了这个问题,在堆栈溢出的其他地方,关于这个一般主题的几十个答案还没有完全回答。实际上,绝大多数的焦点是savefig输出,而不是内存中的图形句柄。我的应用程序也在数字手柄上,它很容易就这样工作了:

# make figure. w,h and dpi optional but allow for exact figure sizing
hf = plt.plot(x,y,figsize=(w,h),dpi=myscreendpi)
# adjust padding as required
hf.set_tight_layout({'pad':0.5})
tightbbox = hf.get_tightbbox(hf.canvas.get_renderer())
# just set it directly to figure size
hf.set(figheight=tightbbox.height,figwidth=tightbbox.width) 

最新更新