Python:ax.text 未显示在保存的 PDF 中

ast*_*erd 5 python matplotlib

我正在 ipython 笔记本中创建一个带有一些文本的图形(例如:一边有一些文本的 sin 曲线)。绘图和文本显示在我的笔记本中,但是当我保存图形时,我只能看到绘图而不是文本。我用这个示例代码重现了这个问题:

import numpy as np
import matplotlib.pyplot as plt

fig,ax = plt.subplots(1)
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
ax.plot(x, y)
ax.text(8,0.9,'Some Text Here',multialignment='left', linespacing=2.)
plt.savefig('sin.pdf')
Run Code Online (Sandbox Code Playgroud)

如何查看保存的pdf中的文本?

Imp*_*est 6

jupyter笔记本中显示的数字是保存的png图像。它们通过选项保存bbox_inches="tight"

为了生成与笔记本中的 png 完全相同的 pdf,您还需要使用此选项。

plt.savefig('sin.pdf', bbox_inches="tight")
Run Code Online (Sandbox Code Playgroud)

原因是坐标(8,0.9)在图外。因此,文本不会出现在其保存的版本中(它也不会出现在交互式图中)。该选项bbox_inches="tight"可扩展或缩小保存的范围以包含画布的所有元素。使用此选项确实非常有用,可以轻松包含绘图之外的元素,而无需关心图形大小、边距和坐标。

最后一点:您正在指定数据坐标中的文本位置。这通常是不需要的,因为它使文本的位置取决于轴中显示的数据。相反,在坐标轴中指定它是有意义的,

ax.text(1.1, .9, 'Some Text Here', va="top", transform=ax.transAxes)
Run Code Online (Sandbox Code Playgroud)

使其始终位于(1.1,.9)相对于轴的位置。