我正在尝试为出版物制作一个精确尺寸的模型。
fig,axn = plt.subplots(2,2, figsize=(8,8))
x = [2,4,6,8]
y = [10,3,20,4]
sns.scatterplot(x=x, y=y, ax=axn[0,0])
plt.savefig(r"filepath\test.png"
)
这给了我一个尺寸为 5 英寸 x 5 英寸的 png 文件,边缘周围有很多空白
如果我使用以下 savefig 调用:
fig,axn = plt.subplots(2,2, figsize=(8,8))
x = [2,4,6,8]
y = [10,3,20,4]
sns.scatterplot(x=x, y=y, ax=axn[0,0])
plt.savefig(r"filepath\test.png",
bbox_inches="tight"
)
我得到的图像没有空白,但现在尺寸为 6.7 英寸 x 6.4 英寸
我在这个主题上找到的所有帖子都表明添加“bbox_inches =“tight””会删除空格并保留Figsize尺寸,但这似乎对我不起作用。
是否需要调整(猜测)figsize 尺寸,以便在删除空白后给出正确的绝对图像大小?
提前致谢
我建议使用以下任一方法来更好地控制,而不是使用
tight_layout
bbox_inches="tight"
:
简单但不太灵活的选项是使用约束布局。请在此处查看指南。
fig, axn = plt.subplots(2, 2, figsize=(8,8), layout='constrained')
x = [2,4,6,8]
y = [10,3,20,4]
sns.scatterplot(x=x, y=y, ax=axn[0,0])
fig.savefig(r"filepath\test.pdf")
更好的是在保存之前使用
subplots_adjust
手动指定间距。阅读文档以了解这些值的工作原理。
fig, axn = plt.subplots(2, 2, figsize=(8,8))
x = [2,4,6,8]
y = [10,3,20,4]
sns.scatterplot(x=x, y=y, ax=axn[0,0])
fig.subplots_adjust(left=0.05, bottom=0.05, right=0.05, top=0.05,
wspace=0.1, hspace=0.1)
fig.savefig(r"filepath\test.pdf")
您可能还想以矢量格式保存图像,例如 SVG 或 PDF,以获得高质量图像。