我正在使用 matplotlib 制作用于发布的图形,并希望输出尺寸非常精确的图形。我需要这个,以便我可以确定在插入乳胶文档时不需要调整图形的大小,这会与图形中的字体大小混淆,我希望与字体大小保持一致的比例主要文件。
我需要使用这个bbox_extra_artists
参数,savefig
因为如果我不这样做,我在底部有一个图例,它会被切断。我遇到的问题是,我还没有找到一种方法来让我figsize
在创建绘图时指定的原始图形尺寸在调用savefig
.bbox_extra_artists
我的电话savefig
看起来像这样:
savefig(output_file, bbox_inches='tight', pad_inches=0.0,dpi=72.27,bbox_extra_artists=(lgd,tp,ur,hrs))
我指定的图形宽度figsize
是:
516.0 * (1/72.27) = 7.1398 inches = 181.3532 millimeters
我使用savefig()
上面的调用得到的输出 PDF 宽度是171 millimeters
(不是所需的 181.3532 毫米)。
我在 SO 的其他问题中看到的解决方案是调用tight_layout()
. 所以,在我的电话上方savefig()
,我写了以下内容:
plt.tight_layout(pad=0.0,h_pad=0.0,w_pad=0.0)
这会产生一个有宽度的图形183 millimeters
(同样,不是我想要的 181.3532 毫米)。如果我使用,并从对的调用中tight_layout
删除参数,我会得到一个宽度(同样,不是我想要的 181.3532 毫米)。除此之外,在我的情况下,移除会通过切断东西来破坏身材。bbox_extra_artists
savefig()
190 millimeters
bbox_extra_artists
所以我想这是一个两部分的问题:
- 使用时
tight_layout
,即使没有bbox_extra_artists
,为什么输出图形的大小不正确? - 使用时有什么方法可以获得正确大小的图形
bbox_extra_artists
吗?
我知道几毫米听起来像一个微不足道的差异,但事实上,我担心的是任何差异。这意味着存在一些变量,这可能会在我的其他数字中发生变化,从而导致一定程度的错误,并且该错误很可能在其他地方被放大。