我正在尝试在matplotlib图中使用字体"Heuristica",但它不会显示出来.
我在rcParameter font.serif的第一个地方定义了"Heuristica" - >没有结果
我将font.family改为"Heuristica"并得到了消息
findfont: FontFamily not found
Run Code Online (Sandbox Code Playgroud)
这让我思考,因为安装了Heuristica,我可以毫无问题地从其他软件访问它.所以我使用了fontManager并做了:
import pylab as pl
la = pl.matplotlib.font_manager.FontManager()
lu = pl.matplotlib.font_manager.FontProperties(family = 'Heuristica')
la.findfont(lu)
Run Code Online (Sandbox Code Playgroud)
得到了:
Out[7]: 'C:\\Windows\\Fonts\\Heuristica-Regular.otf'
Run Code Online (Sandbox Code Playgroud)
所以很明显可以找到Heuristica.我查找了可用的ttf-Fonts(如何获取matplotlib中的字体系列列表(或字体名称))但是Heuristica不在此列表中.
任何帮助我都会很高兴.
我试图从这里重现这个例子
代码在该页面上和本文末尾
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
Run Code Online (Sandbox Code Playgroud)
3.5.2 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
Run Code Online (Sandbox Code Playgroud)
import matplotlib
matplotlib.__version__
Out[37]: '1.5.1'
Run Code Online (Sandbox Code Playgroud)
这表明我已经安装了该字体
$ fc-list | grep "Humo"
/usr/share/fonts/Humor-Sans-1.0.ttf: Humor Sans:style=Regular
/home/vco/.fonts/Humor-Sans-1.0.ttf: Humor Sans:style=Regular
Run Code Online (Sandbox Code Playgroud)
plt.get_backend()
Out[42]: 'TkAgg'
Run Code Online (Sandbox Code Playgroud)
我按照这里的帖子说明了;
python输出错误:
/home/vco/anaconda/envs/math_general/lib/python3.5/site-packages/matplotlib/font_manager.py:1288:
UserWarning: findfont: Font family ['Humor Sans', …Run Code Online (Sandbox Code Playgroud) 我一直在使用 matplotlib 中的 xkcd 样式功能。我有 Matplotlib 1.4,并且幽默 sans 字体安装正确,或者至少可以在 msword 中使用。
当我运行以下示例代码时,我得到“?” 任何时候标签上的“-”都应该是负数。知道是什么原因造成的吗?
with plt.xkcd():
plt.figure()
plt.plot(np.sin(np.linspace(0, 10)))
plt.title('Whoo Hoo!!!')
Run Code Online (Sandbox Code Playgroud)

编辑:在伯尼的建议下(感谢伯尼)我尝试了一些不同的后端。尝试过 Qt、Tkinter 和内联,但似乎都不起作用。顺便说一句,我正在使用 Ipython 2.3。
此外,声誉现在足以发布图像。如您所见,除了那些讨厌的问号外,一切都如预期。
当将 xkcd() 与 matplotpib 一起使用时,没有任何字体以通常的漫画字体显示。有什么改变或者我做错了什么吗?
x = df['Time']
y = df['Adjustment']
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax1 = fig.add_subplot(1,1,1)
ax1.plot(x,y)
ax1.xaxis.set_visible(False)
ax1.yaxis.set_visible(False)
plt.axvline(x=2.3, color='k', ls='dashed')
plt.axvline(x=6, color='k', ls='dashed')
ax.text(4,4,'Culture Shock', size=16)
plt.title('Test title')
plt.xkcd()
plt.show()
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
我应该澄清的是,该图将以 xkcd 样式绘制,而不是任何字体。它打印的内容与 Times New Roman 类似。