为什么Matplotlib的PdfPages将制表符打印为方框(字体编码)?

3
当我运行一个修改过的Matplotlib's multi page example版本,并在标题中添加一个选项卡时,我会得到以下输出:

enter image description here

这是我的工作示例。代码上面的注释是我在这里Matplotlib中的非ASCII字符中找到的建议,但迄今为止没有成功。

# -*- coding: utf-8 -*-
import matplotlib
from matplotlib.backends.backend_pdf import PdfPages
from pylab import *

#matplotlib.rc('font', family='DejaVu Sans')

#matplotlib.rc('font', **{'sans-serif' : 'Arial',
#                           'family' : 'sans-serif'})

#matplotlib.rcParams['pdf.fonttype'] = 42
#matplotlib.rcParams['ps.fonttype'] = 42

pdf = PdfPages('multipage_pdf.pdf')

figure(figsize=(3,3))
plot(range(7), [3,1,4,1,5,9,2], 'r-o')
title('Page\tOne')
savefig(pdf, format='pdf') # note the format='pdf' argument!
close()

pdf.close()

有什么想法可以解决这个问题吗?
1个回答

2

解决方案是添加

matplotlib.rcParams['ps.useafm'] = True
matplotlib.rcParams['pdf.use14corefonts'] = True
matplotlib.rcParams['text.usetex'] = True

此处这里所述。

我无法确定哪一行代码起了魔法作用,似乎并不是所有的都需要,但我还是全部添加了。如果出现tex无法编码的问题,您可以尝试将['text.usetex']注释掉,它仍然可以正常工作。

来自matplotlib文档:

在您的配置文件中添加“pdf.use14corefonts: True”,以仅使用14个PDF核心字体。这些字体不需要嵌入; 每个PDF查看应用程序都需要它们。这会导致非常轻巧的PDF文件,您可以直接在使用pdfTeX生成的LaTeX或ConTeXt文档中使用,而无需进行任何转换。
这些字体包括:Helvetica,Helvetica-Bold,Helvetica-Oblique,Helvetica-BoldOblique,Courier,Courier-Bold,Courier-Oblique,Courier-BoldOblique,Times-Roman,Times-Bold,Times-Italic,Times-BoldItalic,Symbol,ZapfDingbats。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接