我需要在使用matplotlib进行绘图时使用所需的OTF字体,但无法弄清楚如何访问它。我看到How to use a (random) *.otf or *.ttf font in matplotlib?,但推荐的解决方案都不适用于我。
选项1,我设置prop = matplotlib.font_manager.FontProperties(fname = '/Users/<username>/Library/Fonts/Univers-Condensed.otf')
立即发出错误,因为OTF字体没有预期的TTF结构。
选项2,我将系列名称设置为字体的通用名称,找到OTF字体:
plot_font = {'family' : 'Univers-Condensed',
'size' : '11'}
matplotlib.rc('font', **plot_font)
plt.plot(range(10))
plt.title('Show me Universe', size = 32)
plt.show()
的Groovy!但是,当我将plt.show()
更改为plt.savefig('test.pdf')
时,我收到此错误:
UserWarning: findfont: Font family ['Univers-Condensed'] not found.
Falling back to Bitstream Vera Sans
(prop.get_family(), self.defaultFamily[fontext]))
为什么plt.savefig()
无法找到plt.show()
可以找到的相同字体?您是否有任何建议以不同的方式接近它?我不想将字体转换为TTF。
答案 0 :(得分:1)
今天早上我找到了http://www.ascii-code.com/解释,这有助于matplotlib找到用户配置文件中安装的一系列字体。请注意,~/.matplotlib/fontList.py3k.cache
和~/.matplotlip/tex.cache
都需要清除,这一点非常重要。我在最初的尝试中只清除了~/.matplotlib/fontList.py3k.cache
。
我仍然没有确定为什么plt.show()
和plt.savefig()
在只清除了一个缓存时表现不同,但我现在可以使用我想要的字体保存数字。