在Linux 环境中,使用matplotlib 显示中文时,总是提示:
/python/stock.py:273: UserWarning: Glyph 33647 (\N{CJK UNIFIED IDEOGRAPH-836F}) missing from current font.
fig.savefig(self.name + ".jpg", bbox_inches = 'tight')
检查了下, 是使用matplotlib 显示标题时使用了中文,而python中的matplotlib 找不到字体。
解决办法:
1 从windows 系统中拷贝字体库到linux系统中。
windows 字体库在系统盘 Windows\Fonts目录中,可以选择自己想要使用的中文字体。我选择的是微软雅黑。
注意,这里显示的不是文件,右键复制到另外一个目录中,会发现是三个文件。
将这三个文件上传到linux目录中。
然后在此目录中执行如下命令
mkfontscale
mkfontdir
fc-cache
执行完毕后,可以使用fc-list | grep msyh 检查是否安装成功。
2. 在python程序中指定字体
安装字体后,还需要在python 的程序代码使用matplotlib时指定字体,要不然代码不知道该用啥。
import matplotlib
matplotlib.rc("font", family = "Microsoft YaHei”)
或者
matplotlib.rcParams['font.sans-serif']=['Microsoft YaHei']
两个选择一个就可以。
3. 经过的一个坑。
第一次按照上述配置完成后,执行时仍报相同的错误。
到linux系统用户的home中,./.cache/matplotlib目录中有一个json文件,查看这个文件没有找到安装的YaHei字体,但fc-list 命令看到字体是已经安装好的。
解决办法: 到.cache目录中,mv matplotlib matplotllib.bk 或者直接删除这个目录即可。
然后重新执行程序就OK了。
此时再次查看这个json文件,就能看到Yahei字体的信息了。