在mac上使用matplotlib绘图的时候之前总是不能输出中文,这是一个很简单的小bug,通过搜索教程找到一个稍微简单的解决方法如下:
1. 添加SimHei字体(simhei.ttf文件)
首先我们在python中运行以下命令来查看你的matplotlib所在位置:
matplotlib.matplotlib_fname()
$$$ a_t $$$
参考上述的输出结果,进入存储字体的目录
cd [你自己的一些目录]/py2.7/lib/python2.7/site-packages/matplotlib/mpl-data/fonts
从网上下载SimHei字体,将simhei.ttf存储入上面的这个fonts
目录中,最好重命名为 SimiHei.ttf
2. 删除~/.matplotlib/下的所有缓存文件
rm -rf ~/.matplotlib/*.cache
3. 在代码中声明使用simhei字体
开始这一步的时候,最好先重启一下你的jupyter
。
在你要画图的的Python文件中,添加
plt.rcParams['font.sans-serif'] = ['SimHei']
以下是一个例子
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib
plt.rcParams['axes.labelsize'] = 14
plt.rcParams['xtick.labelsize'] = 12
plt.rcParams['ytick.labelsize'] = 12
plt.rcParams['font.sans-serif'] = ['SimHei']
from __future__ import division
def logit(x):
return 1/(1+np.exp(-x))
z = np.linspace(-5,5,200)
plt.plot([-5,5],[0,0],'k-')
plt.plot([-5,5],[1,1],'k--')
plt.plot([0,0],[-2,1.2],'k-')
plt.plot([-5,5],[-3/4, 7/4], 'g--')
plt.plot(z, logit(z), 'b-', linewidth=2)
props = dict(facecolor='black', shrink=0.1)
plt.annotate('Saturating', xytext=(3.5, 0.7), xy=(5,1), arrowprops=props, fontsize=14, ha='center')
plt.annotate('Linear', xytext=(2, 0.2), xy=(0,0.5), arrowprops=props, fontsize=14, ha='center')
plt.annotate('Saturating', xytext=(-3.5, 0.7), xy=(-5,0), arrowprops=props, fontsize=14, ha='center')
plt.grid(True)
plt.title(u'我就是我') # 注意以u开头
plt.axis([-5, 5, -0.2, 1.2])
5. 参考资料
- 知乎
- Hands-on Machine Learning with Scikit-Learn and TensorFlow