gpt4 book ai didi

python - Matplotlib PDF 导出使用了错误的字体

转载 作者:太空狗 更新时间:2023-10-29 17:19:22 25 4
gpt4 key购买 nike

我想为演示生成高质量的图表。我正在使用 Python 的 matplotlib 生成图形。不幸的是,PDF 导出似乎忽略了我的字体设置。

我尝试通过将 FontProperties 对象传递给文本绘制函数以及通过全局设置选项来设置字体。作为记录,这里是重现问题的 MWE:

import scipy
import matplotlib
matplotlib.use('cairo')
import matplotlib.pylab as pylab
import matplotlib.font_manager as fm

data = scipy.arange(5)

for font in ['Helvetica', 'Gill Sans']:
fig = pylab.figure()
ax = fig.add_subplot(111)
ax.bar(data, data)
ax.set_xticks(data)
ax.set_xticklabels(data, fontproperties = fm.FontProperties(family = font))
pylab.savefig('foo-%s.pdf' % font)

在这两种情况下,生成的输出是相同的并使用 Helvetica(是的,我确实安装了两种字体)。

可以肯定的是,以下内容也无济于事:

matplotlib.rc('font', family = 'Gill Sans')

最后,如果我替换后端,而不是使用 native 查看器:

matplotlib.use('MacOSX')

确实显示了正确的字体——但仅在查看器 GUI 中。 PDF 输出再次出错。

可以肯定的是——我可以设置其他字体——但只能设置其他类别的字体系列:我可以设置serif字体或fantasy等宽。但是所有无衬线字体似乎都默认为 Helvetica。

最佳答案

基本上,@Jouni 的答案是正确的,但由于我仍然无法使其正常工作,因此这是我的最终解决方案:

#!/usr/bin/env python2.6

import scipy
import matplotlib
matplotlib.use('cairo')
import matplotlib.pylab as pylab
import matplotlib.font_manager as fm

font = fm.FontProperties(
family = 'Gill Sans', fname = '/Library/Fonts/GillSans.ttc')

data = scipy.arange(5)
fig = pylab.figure()
ax = fig.add_subplot(111)
ax.bar(data, data)
ax.set_yticklabels(ax.get_yticks(), fontproperties = font)
ax.set_xticklabels(ax.get_xticks(), fontproperties = font)
pylab.savefig('foo.pdf')

请注意,必须使用 fontproperties 键显式设置字体。显然,fname 属性没有 rc 设置(至少我没有找到)。

font 的实例化中给出一个 family 键在这里并不是绝对必要的,它会被 PDF 后端忽略。

此代码仅适用于 cairo 后端。使用 MacOSX 将无法正常工作。

关于python - Matplotlib PDF 导出使用了错误的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2797525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com