如何在 matplotlib 中获取字体系列(或字体名称)列表

Posted

技术标签:

【中文标题】如何在 matplotlib 中获取字体系列(或字体名称)列表【英文标题】:How can i get list of font family(or Name of Font) in matplotlib 【发布时间】:2013-09-20 05:39:22 【问题描述】:

import matplotlib.font_manager
matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')

借助此代码,我只能获取字体目录。 我怎样才能得到像

这样的字体名称列表

“世纪教科书 L”、“Ubuntu”……等

提前致谢。

【问题讨论】:

【参考方案1】:

尝试以下操作:

>>> import matplotlib.font_manager
>>> [f.name for f in matplotlib.font_manager.fontManager.ttflist]
['cmb10', 'cmex10', 'STIXNonUnicode', 'STIXNonUnicode', 'STIXSizeThreeSym', 'STIXSizeTwoSym', 'cmtt10', 'STIXGeneral', 'STIXSizeThreeSym', 'STIXSizeFiveSym', 'STIXSizeOneSym', 'STIXGeneral', 'cmr10', 'STIXSizeTwoSym', ...]
>>> [f.name for f in matplotlib.font_manager.fontManager.afmlist]
['Helvetica', 'ITC Zapf Chancery', 'Palatino', 'Utopia', 'Helvetica', 'Helvetica', 'ITC Bookman', 'Courier', 'Helvetica', 'Times', 'Courier', 'Helvetica', 'Utopia', 'New Century Schoolbook', ...]

【讨论】:

感谢好友快速回复:) 它可能会呈现 很多 重复项,添加 set() 将为您提供冷漠排序的独特字体。所以,set([f.name for f in matplotlib.font_manager.fontManager.afmlist])set([f.name for f in matplotlib.font_manager.fontManager.ttflist]) @MartVandeVen,感谢您的评论。仅供参考,在 Python 2.7 中,集合理解也可用。 f.name for f in matplotlib.font_manager.fontManager.afmlist。您也可以使用生成器表达式而不是列表推导(以避免创建中间列表对象)。

以上是关于如何在 matplotlib 中获取字体系列(或字体名称)列表的主要内容,如果未能解决你的问题,请参考以下文章

python中matplotlib自定义设置图像标题使用的字体类型:获取默认的字体族及字体族中对应的字体自定义设置图像标题使用的字体类型

如何在 matplotlib 中更改图例字体名称

如何在 matplotlib 中使用(随机)*.otf 或 *.ttf 字体?

如何更改 matplotlib(python)中的字体?

如何更改 Matplotlib 中颜色条刻度标签的字体大小?

如何配置matplotlib以便能够从本地路径读取字体?