如何在matplotlib中获取字体系列(或字体名称)列表.
import matplotlib.font_manager
matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
Run Code Online (Sandbox Code Playgroud)
借助此代码,我只能获得字体目录.我怎么能得到字体名称列表
"世纪教科书L","Ubuntu"等
提前致谢.
我有一个matplotlib脚本启动...
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
mpl.rcParams['xtick.labelsize']=16
...
Run Code Online (Sandbox Code Playgroud)
我用过这个命令
fm.findSystemFonts()
Run Code Online (Sandbox Code Playgroud)
获取我系统上的字体列表.我发现了我想要使用的.ttf文件的完整路径,
'/usr/share/fonts/truetype/anonymous-pro/Anonymous Pro BI.ttf'
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令成功使用此字体
mpl.rcParams['font.family'] = 'anonymous-pro'
Run Code Online (Sandbox Code Playgroud)
和
mpl.rcParams['font.family'] = 'Anonymous Pro BI'
Run Code Online (Sandbox Code Playgroud)
这两者都回归了
/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1218: UserWarning: findfont: Font family ['anonymous-pro'] not found. Falling back to Bitstream Vera Sans
Run Code Online (Sandbox Code Playgroud)
我可以使用mpl.rcParams字典在我的图中设置这个字体吗?
编辑
在阅读了一下之后,似乎这是从.ttf文件中确定字体系列名称的一般问题.在linux或python中这很容易吗?
另外,我试过添加
mpl.use['agg']
mpl.rcParams['text.usetex'] = False
Run Code Online (Sandbox Code Playgroud)
没有任何成功
我在Canopy中使用matplotlib库,具体功能是xkcd().此功能使用特定字体绘制图表.字体是Comic Sans MS,如果不存在,应该下载.
/home/luis/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Humor Sans', 'Comic Sans MS'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
Run Code Online (Sandbox Code Playgroud)
我使用下面的小脚本,它检查字体的存在/不存在.如果不存在,则下载它.
import os
import urllib2
if not os.path.exists('Humor-Sans.ttf'):
fhandle = urllib2.urlopen('http://antiyawn.com/uploads/Humor-Sans-1.0.ttf')
open('Humor-Sans.ttf', 'wb').write(fhandle.read())
Run Code Online (Sandbox Code Playgroud)
问题是我仍然没有得到正确的字体来显示.如果字体缓存出现问题,我会执行以下操作:
luis@luis-VirtualBox:~$ rm /home/luis/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/fontList.cache
Run Code Online (Sandbox Code Playgroud)
获得以下内容:
rm: cannot remove ‘/home/luis/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/fontList.cache’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我的应用程序中有一个自定义字体
app_path='/home/user1/myapp'
fname='/home/user1/myapp/font/myfont.ttf'
Run Code Online (Sandbox Code Playgroud)
要将globlal字体设置为matplotlib,文档会这样说:
plt.rcParams['font.sans-serif']=['xxx font']
Run Code Online (Sandbox Code Playgroud)
但它只适用于已经在系统字体路径中的字体,我必须在我的应用程序路径 '/home/user1/myapp/font/myfont.ttf'中使用我的自定义字体
我知道有这样的方式:
fname='/home/user1/myapp/font/myfont.ttf'
myfont=fm.FontProperties(fname=fname)
ax1.set_title('title test',fontproperties=myfont)
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的,我不想一直设置' fontproperties ',因为有一些代码要改变