我的应用
中有自定义字体app_path='/home/user1/myapp'
fname='/home/user1/myapp/font/myfont.ttf'
要将 globlal 字体设置为matplotlib,文档会这样说:
plt.rcParams['font.sans-serif']=['xxx font']
但它只适用于已经在系统字体路径中的字体,并且我必须在我的应用程序路径中使用我的自定义字体'/ home / user1 / myapp / font / myfont.ttf'< / p>
我知道有这样的方式:
fname='/home/user1/myapp/font/myfont.ttf'
myfont=fm.FontProperties(fname=fname)
ax1.set_title('title test',fontproperties=myfont)
但这不是我想要的,我不想一直设置' fontproperties ',因为有一些代码要改变
答案 0 :(得分:11)
解决了这样的问题:
import matplotlib.font_manager as font_manager
font_dirs = ['/my/custom/font/dir', ]
font_files = font_manager.findSystemFonts(fontpaths=font_dirs)
font_list = font_manager.createFontList(font_files)
font_manager.fontManager.ttflist.extend(font_list)
mpl.rcParams['font.family'] = 'My Custom Font'
如果您只有一个要导入的目录,fontpaths
kwarg也可以是一个字符串。
答案 1 :(得分:5)
对于较新的 matplotlib 模块(例如版本 >=3.2)
createFontList 已弃用。
但是,您可以使用ttf文件路径和自定义名称制作字体条目,
然后将其添加到 fontManager.ttflist,并将 matplotlib.rcParams['font.familt'] 分配给该名称。
现在您可以开始制作没有 'fontproperties' 等的绘图
import matplotlib as mpl
import matplotlib.font_manager as fm
fe = fm.FontEntry(
fname='your custom ttf file path',
name='your custom ttf font name')
fm.fontManager.ttflist.insert(0, fe) # or append is fine
mpl.rcParams['font.family'] = fe.name # = 'your custom ttf font name'