最近由于论文缘由在学习机器学习,看的一本叫作《机器学习实战》的书,看了看仍是不错的,由于其中既有原理又有实例。今天载使用matplotlib进行画图时,发现中文会显示为小方块,这个问题真是神烦,折腾了一下午,终于搞定了,下面记录一下我解决的过程。python
用python运行如下代码:shell
#! /usr/bin/env python # -*- coding: utf-8 -*- from matplotlib.font_manager import FontManager import subprocess fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output( 'fc-list :lang=zh -f "%{family}\n"', shell=True) # print '*' * 10, '系统可用的中文字体', '*' * 10 # print output zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print '*' * 10, '可用的字体', '*' * 10 for f in available: print f
我运行以后,发现说是"import Error:no module named font_manage"错误,以后通过一顿的搜索与尝试,发现以下方法能够解决这个问题:使用windows下的字体,讲C:\windows\fonts文件夹下的全部以.ttf结尾的文件拷贝到/usr/share/fonts/truetype目录下,并将全部的ttf文件的权限修改全部人能够读。segmentfault
修改matplotlibrc文件(查询该文件的方法:进入root跟目录下,运行find -name matplotlibrc),修改成以下:windows
font.family : serif
font.serif : {zh_family}, serif
其中{zh_family}就是1中所获得的可用字体。机器学习