gpt4 book ai didi

python - Matplotlib:使最终图形尺寸与 savefig() 和 bbox_extra_artists 匹配 figsize

转载 作者:太空狗 更新时间:2023-10-29 18:32:58 26 4
gpt4 key购买 nike

我正在使用 matplotlib 制作要发布的图形,并希望输出尺寸非常精确的图形。我需要这个,这样我就可以确定在插入 latex 文档时不需要调整图形的大小,这会弄乱图形中的字体大小,我希望它与图形中的字体大小保持一致的比例主文档。

我需要对 savefig 使用 bbox_extra_artists 参数,因为我在底部有一个图例,如果我不这样做,它会被切断。我遇到的问题是,在使用 调用 savefig 后创建受尊重的图时,我还没有找到一种方法来使我用 figsize 指定的原始图形尺寸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 毫米(不是所需的 181.3532 毫米)。

我在 SO 上的其他问题中看到的解决方案是调用 tight_layout()。因此,在 savefig() 调用的正上方,我放置了以下内容:

plt.tight_layout(pad=0.0,h_pad=0.0,w_pad=0.0)

这将生成一个宽度为 183 毫米 的图形(同样,不是我想要的 181.3532 毫米)。如果我使用 tight_layout,并从对 savefig() 的调用中删除 bbox_extra_artists 参数,我得到的宽度为 190 毫米(同样,不是我想要的 181.3532 毫米)。除此之外,在我的案例中删除 bbox_extra_artists 会通过切断东西来破坏数字。

所以我想这是一个由两部分组成的问题:

  • 使用 tight_layout 时,即使没有 bbox_extra_artists,为什么输出图形的大小不正确?
  • 在使用 bbox_extra_artists 时,是否有任何方法来获得正确大小的图形?

我知道几毫米听起来微不足道,但真正让我担心的是存在任何差异这一事实。这意味着存在一些变量,它可能会在我的其他数字中发生变化,从而导致一定程度的错误,并且该错误很可能在其他地方被放大。

最佳答案

您获得较小绘图的原因是因为您指定了 bbox_inches='tight'

bbox_inches='tight' 根据绘图中艺术家的范围裁剪绘图。如果您希望输出完全符合您指定的大小,则只需完全省略 bbox_inchesbbox_extra_artists kwargs。

如果您只执行 savefig(output_file, dpi=72.72) 而没有执行任何其他操作,则绘图将与您在创建图形时指定的大小完全相同。

关于python - Matplotlib:使最终图形尺寸与 savefig() 和 bbox_extra_artists 匹配 figsize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com