如何防止Matplotlib剪掉我的轴标签?

Nat*_*iel 3 python axes matplotlib axis-labels

我正在准备一些科学论文的图表,这些图片需要宽而短,才能符合页面限制.但是,当我将它们保存为pdf时,缺少x轴标签,因为(我认为)它们位于边界框之外.

将以下内容放入iPython笔记本中可以重现该问题.

%pylab inline
pylab.rcParams['figure.figsize'] = (8.0, 2.0)
plot([1,5,2,4,6,2,1])
xlabel("$x$")
ylabel("$y$")
savefig("test.pdf")
Run Code Online (Sandbox Code Playgroud)

生成的pdf文件如下所示: 在此输入图像描述

如何更改pdf文件的边界框?理想情况下,我想要一个"做得恰到好处"的解决方案,即自动调整大小,使一切都整齐,包括摆脱左右不必要的空间 - 但我很匆忙,所以我会以任何方式改变边界框,我会猜测数字,直到它看起来正确,如果我必须.

Nat*_*iel 9

谷歌搜索的点之后,我找到了答案:你可以给bbox_inches='tight'savefig命令,它会自动调整边界框的内容的大小:

%pylab inline
pylab.rcParams['figure.figsize'] = (8.0, 2.0)
plot([1,5,2,4,6,2,1])
xlabel("$x$")
ylabel("$y$")
savefig("test.pdf",bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想这些是一些紧密的英寸.

请注意,这与Ffisegydd的答案略有不同,因为它将边界框调整为绘图,而不是更改绘图以适合边界框.(但两者都适合我的目的.)


Ffi*_*ydd 7

您可以使用plt.tight_layout()matplotlib 调整绘图的布局。tight_layout()将自动调整尺寸,并且当您有(例如)重叠标签/刻度/等时也可以使用。

%pylab inline

pylab.rcParams['figure.figsize'] = (8.0, 2.0)

plot([1,5,2,4,6,2,1])

xlabel("$x$")
ylabel("$y$")

tight_layout()

savefig("test.pdf")
Run Code Online (Sandbox Code Playgroud)

这是输出的 .png(无法将 pdf 上传到 SO,但我已经检查过,它的工作方式与 pdf 相同)。

示例图