我正在 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中的文本?
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)相对于轴的位置。