我正在使用 matplotlib 生成 PDF 图形。然而,即使是最简单的数字也会产生相对较大的文件,下面的 MWE 会产生几乎 1 MB 的文件。我意识到文件大小较大是由于 matplotlib 完全嵌入了所有使用的字体。由于我要生成相当多的图并希望减小文件大小,所以我想知道:
主要问题:
有没有办法让 matplotlib 嵌入字体子集而不是完整的字体?我也可以完全不包含字体。
到目前为止考虑的事情:
由于使用外部软件生成带有嵌入子集的文件很容易,尽管是劳动密集型的,是否有可能直接在 matplotlib 中实现这一点?任何帮助将不胜感激。
微量元素
import matplotlib.pyplot as plt #Setup
import matplotlib as mpl
mpl.rcParams['pdf.fonttype'] = 42
mpl.rcParams['mathtext.fontset'] = 'dejavuserif'
mpl.rc('font',family='Arial',size=12)
fig,ax=plt.subplots(figsize=(2,2)) #Create a figure containing some text
ax.semilogy(1,1,'s',label='Text\n$M_\mathrm{ath}$')
ax.legend()
fig.tight_layout()
fig.savefig('test.pdf')
Run Code Online (Sandbox Code Playgroud)
环境:matplotlib 3.1.1