matplotlib是Python的非常友好的可视化模块,但在绘图中并不能直接使用中文。
比如我们要做插值运算,为了让数据直观可视,我们根据代码绘图如下
# -*- coding: utf-8 -*-
import numpy as np
import pylab as pl
from scipy import interpolate
import matplotlib.pyplot as plt
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
x = np.linspace(0, 2*np.pi+np.pi/4, 10)
y = np.sin(x)
x_new = np.linspace(0, 2*np.pi+np.pi/4, 100)
f_linear = interpolate.interp1d(x, y)
tck = interpolate.splrep(x, y)
y_bspline = interpolate.splev(x_new, tck)
plt.xlabel(u'安培/A')
plt.ylabel(u'伏特/V')
plt.plot(x, y, "o", label=u"原始数据")
plt.plot(x_new, f_linear(x_new), label=u"线性插值")
plt.plot(x_new, y_bspline, label=u"B-spline插值")
pl.legend()
pl.show()
汉字乱码,,这分明是歧视好嘛
显然没有达到我们想要的效果
我们来做一下修改
下载微软雅黑字体文件msyh.tff
将字体拷贝到matplotlib安装位置 /matplotlib/mpl-data/fonts/ttf(如果你装的是anaconda,就把它放在anaconda下的文件中)
修改配置文件 /matplotlib/mpl-data/matplotlibrc
1) backend : TkAgg #mac需要修改,windows默认就是TkAgg
2) font.family : Microsoft YaHei
3) font.serif : Microsoft YaHei, ......#(后面的不变,只在前面加雅黑字体)
OK, 大功告成,试试效果吧
注意:要将‘font.family’前边的标注号#去掉
经过修改后,我们run一下代码,哈哈,老祖宗五千年前造的汉子出现了。