matplotlib的强大无需我去言说,但它对使用中文的我来说却有一点瑕疵,那就是——在默认状态下,matplotlb无法在图表中使用中文。
在网上查找了一些资料,发现matplotlib本身是支持Unicode的,只不过默认情况下matplotlib使用自带的字体,而自带的字体中没有中文字体。这样要它支持中文的思路就有了——给maplotlib添加中文字体。
思路1:用某种中文字体替换掉matplotlib的默认字体
这属于一种破坏性质的方法,不推荐。这样的方法,同样的代码无法在不同的环境中使用,每次更换环境你必须得重新"Hack"一次。我也没有使用这种方法。
思路2:使用matplotlib的字体管理器指定字体文件
matplotlib中有一个字体管理器——matplotlib.Font_manager,通过该管理器的方法——matplotlib.Font_manager.FontProperties(fname)可以指定一个ttf字体文件作为图表使用的字体。这样,只要我们传入Unicode字符串,我们就可以想用什么字体就用什么字体了。示例代码如下:
from pylab import *
import random
import matplotlib as mpl
import matplotlib .pyplot as plt
import numpy as np
myfont = matplotlib.font_manager.FontProperties(fname=r"C:\Windows\Fonts\STFANGSO.TTF") #fname指定字体文件 选简体显示中文
#第七行的作用是为了消除更换为unicode字体之后0、负数之类的显示异常