Acrobat Reader无法打开Matplotlib生成的pdf

2024-05-16 12:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将衬线字体与latex一起使用matplotlib,不幸的是,它不会显示在Acrobat Reader中,但在Internet Explorer或Chrome上是可以的。我的最小代码生成一个错误StandardSymL_Sland_167找不到,varepsilon不可见,缺少什么

import matplotlib as mpl
import matplotlib.pyplot as plt

mpl.rcParams.update(mpl.rcParamsDefault)
mpl.rcParams['text.usetex'] = True
mpl.rcParams['font.family'] = ['serif']
mpl.rcParams['font.serif'] = ['times']

fig, ax = plt.subplots()
ax.set_xlabel(r'$x$ $\alpha \varepsilon$')
fig.savefig('test.pdf')

error on acrobat pdf

我的环境的输出是:

import matplotlib
print(matplotlib.__version__)
3.2.0

编辑 我觉得这也很奇怪:

pdffonts test.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
NimbusRomNo9L-Regu                   Type 1            Custom           yes no  no      21  0
CMMI10                               Type 1            Builtin          yes no  no      13  0
NimbusRomNo9L-ReguItal               Type 1            Custom           yes no  no      25  0
StandardSymL_Slant_167               Type 1            Builtin          yes no  no      17  0

Tags: noimportmatplotlibastypefigpltax
2条回答

这不是一个很好的解决方案,但我不确定除了在文本编辑器中手动编辑生成的pdf之外,是否还有其他解决方案。这似乎是Adobe Acrobat解析器导致的错误,因为matplotlib输出双精度数字,而Type 1字体仅支持单精度

相关问题似乎将在即将发布的matplotlib 3.4.0版本中修复: https://github.com/matplotlib/matplotlib/issues/16087

修复程序已经合并,因此更新到最新的主程序(例如使用pip install git+https://github.com/matplotlib/matplotlib.git@master)应该可以修复它

据我所知,希腊字体的问题。 有趣的是,win操作系统通常会出现问题

请尝试win-adapted版本:

import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams.update(mpl.rcParamsDefault)

mpl.rcParams['text.usetex'] = True
# mpl.rcParams['font.family'] = ['serif']
# mpl.rcParams['font.serif'] = ['times']
mpl.rcParams['font.family'] = ['times new roman']

fig, ax = plt.subplots()
ax.set_xlabel(r'$x$ $\alpha \varepsilon$')
fig.savefig('test.pdf')

相关问题 更多 >