如何在matplotlib中使用Humor Sans?

时间:2018-06-24 13:02:32

标签: python matplotlib ubuntu-18.04

我想用matploblib创建ROC曲线的XKCD样式图。它在大多数情况下都可以正常工作,但是我不明白为什么它不使用幽默的意思。它肯定已安装在我的系统上:

$ fc-list | grep -i humor
/home/user/.local/share/fonts/Humor-Sans.ttf: Humor Sans:style=Regular

如何使matplotlib使用Humor-Sans字体?

我已经尝试添加fontname='Humor Sans'

/home/user/.local/lib/python3.6/site-packages/matplotlib/font_manager.py:1328:
UserWarning: findfont: Font family ['Humor Sans'] not found.
Falling back to DejaVu Sans

我的代码

import matplotlib.pyplot as plt
import numpy as np

with plt.xkcd():
    xs = np.linspace(0, 1, 50)
    plt.plot(xs, (1 / (-xs) + 50) / 50)
    plt.plot(xs, xs)
    plt.title('ROC Curve')
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.savefig('xkcd-roc-explanation.png')

当前结果

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式强制重建字体缓存:

import matplotlib.font_manager
matplotlib.font_manager._rebuild()

然后检查字体可用性

matplotlib.font_manager.findfont('Humor Sans')

答案 1 :(得分:0)

Matplotlib显然具有它自己的缓存文件。在我的系统上,我可以通过执行

来解决此问题
mv ~/.cache/matplotlib/fontList.json ~/.cache/matplotlib/fontList-backup.json