首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib Save图bbox_inches=‘紧’沿单一方向?

Matplotlib Save图bbox_inches=‘紧’沿单一方向?
EN

Stack Overflow用户
提问于 2022-06-13 12:55:45
回答 1查看 262关注 0票数 0

我有两个图,每个有多个子图(面板),即多行和多列。每行显示的数据类型与右侧有彩色条的图像相同。第一幅图有8行4列。第二个有3行4列。这两幅图被插入到两个连续的页面上的LaTeX pdf文档中,宽度相同(\includegraphics[width=\hsize]{fig1.pdf})。由于布局原因,我希望面板具有完全相同的宽度和高度时,翻转页之间的pdf阅读器。为了保证这一点,我在第二幅图中使用了相同的8×4面板的子图布局,并使没有数据不可见的5行的面板(轴)变得不可见。

由于第二幅图只有3行数据,所以我使用fig.savefig(bbox_inches='tight')来裁剪这些行下面的空白。不幸的是,由于最后一列右侧的彩色条上的滴答有不同的最大数字数(在第一和第二位,例如1位和2位小数位),加上bbox_inches='tight',结果的图形宽度(保存后,因此也包括在LaTeX pdf中时)在两幅图之间变得不同。

我不想对第二个图使用3x4子图的不同布局,在那里我必须手动调整图形高度(而且很可能仍然没有得到完全相同的面板大小)。我可以将彩色条上的蜱形滴答定位器调整为两个图形的最大数字数,但我更愿意让matplotlib使用默认的ScalarFormatter()AutoLocator()

最优的情况是,我希望使用bbox_inches='tight'将y方向的3行以下的空白剪短,但对于x方向保持bbox不动,并通过fig.subplot_params(fig_right)手动调整两个地块的正确图形边框。

问题:是否可以只对图形的y方向使用bbox_inches='tight',而对x方向使用默认的bbox_inches (rcParams['savefig.bbox'],默认值为None)?这种特性(接受的值为'tight_x''tight_y' for bbox_inches)是否应该实现为matplotlib (我假设(但不知道)这不会太困难)?你有没有其他的想法,我如何才能获得完全相同的面板大小的两个情节?

EN

回答 1

Stack Overflow用户

发布于 2022-06-14 11:56:51

从原始海报更新:,正如@乔迪·克莱马克所指出的,不可能只对一个方向(或一个边框)使用一个紧的边框,但是可以使用自定义的边框。在我的例子中,我传递第一个图的bbox_inches=None和第二个图的bbox_inches=Bbox([[0,fig.get_tightbbox(fig.canvas.get_renderer())._bbox.y0/fig.dpi - 0.1],[fig.get_figwidth(),fig.get_figheight()]])。这解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72603248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档