首页 > 解决方案 > 如何定义 matplotlib 图形的纵横比?

问题描述

Python 生成适合其内容的纵横比,例如,尊重每个标签的字体结构、轴标题等。这是使用 Jupyter Notebook 的基本代码:

fig, ax = plt.subplots()
ax.boxplot(dataLipid)
ax.set_title("Lipid contact analysis")
plt.xticks([1,2,3,4,5],["x4 Monomers","x2 Monomers\nDimer","x2 Dimers","Monomer\nTrimer", "x4mer"])
plt.show()

但是,我想将图像保存为 tiff,dpi 为 600,宽度为 8.3 厘米(最大高度是 A4 页面,但我的问题的性质将使其无关紧要)。

我正在使用代码:

fig.savefig("bar.tiff", dpi=600, format="tiff", pil_kwards = {"compression":"tiff_lzm"})

这会产生以下结果:

在此处输入图像描述

到目前为止一切都很好。接下来是皇家社会。of Chemistry 预计单列图像的宽度为 8.3 厘米(高度,不超过页面)。

我的问题: Python 有什么方法可以计算仅给出 wdith 的图形高度,同时保持字体、标题和刻度等的正确纵横比?如果我指定宽度=高度,图像看起来很糟糕:

fig.set_size_inches(3.26,3.26)
fig.savefig("bar.tiff", dpi=600, format="tiff", pil_kwards = {"compression":"tiff_lzm"})

在此处输入图像描述

或者这是我先定义图形大小,然后单独调整字体大小的情况?我正在寻找更多的单一解决方案,因为我有多个不同尺寸要求的图形(尽管都是 dpi=600)要制作。

标签: pythonmatplotlib

解决方案


您可以使用Axes.set_aspect方法。

# square plot
ax.set_aspect(1)

还可以查看一下tight_layout方法,以确保重新绘制所有内容以适应图中的大小。


推荐阅读