我试图使用字体" Heuristica"在我的matplotlib情节中,但它不会出现。
我定义了" Heuristica"在rcParameter font.serif中的第一个点 - >没有结果
我将font.family更改为" Heuristica"得到了消息
findfont: FontFamily not found
让我思考,因为安装了Heuristica,我可以毫无问题地从其他软件访问它。所以我用了fontManager并做了:
import pylab as pl
la = pl.matplotlib.font_manager.FontManager()
lu = pl.matplotlib.font_manager.FontProperties(family = 'Heuristica')
la.findfont(lu)
得到了:
Out[7]: 'C:\\Windows\\Fonts\\Heuristica-Regular.otf'
显然可以找到Heuristica。 我查找了可用的ttf-Fonts(How can i get list of font family(or Name of Font) in matplotlib),但是Heuristica不在此列表中。
我很乐意提供任何帮助。
答案 0 :(得分:34)
嗯,mdboom在github解决了问题,所有的功劳都属于他:
当您向系统添加新字体时,需要删除fontList.cache文件,以便matplotlib找到它们。
它在你的例子中在第4/5行上工作的原因是因为你是从头开始创建一个FontManager(它发送到文件系统并搜索所有字体)。在内部,当matplotlib稍后进行自己的字体查找时,它使用的是已经从fontList.cache文件中的磁盘缓存加载的FontManager。
长期来看,我们计划切换到使用操作系统的字体查找机制来解决这个问题,(参见MEP14),但与此同时,你需要在每次需要时删除fontList.cache文件matplotlib发现新字体。
文件fontList.cache位于您的用户文件夹 - > .matplotlib / fontList.cache,适用于Windows,通常为C:\Users\yourUsername\.matplotlib\fontList.cache