在matplotlib中绘制图表时中文不能正确显示,这是因为matplotlib的默认设置中没有支持中文,只需要对设置进行一定更改就可以了
- 解决方法
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #设置简黑字体
mpl.rcParams['axes.unicode_minus'] = False # 解决‘-’bug
如果你不嫌麻烦那么每次在用matplotlib作图前加上这两句就可以了(仅限windows用户) 但我们可以对配置文件下手彻底解决这个问题
在此之前先说一下为什么linux系统执行这两条语句之后并没有效果,原因是在linux的字体中没有simhei.ttf
这个文件格式,所以把并不能成功显示中文字体,这时我们也只能对配置文件进行更改才能解决
准备好字体文件(windows不需要)
git clone https://github.com/tracyone/program_font && cd program_font && ./install.sh
安装的字体文件一般在/usr/share/fonts/MyFonts/目录下
找到配置文件的地址
In [2]: mpl.matplotlib_fname()
Out[2]: '/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc'
这返回的是一个文件的路径,他的目录路径即/mpl-data/
,先将字体文件复制到mpl-data/fonts/ttf
中
然后返回再对matplotlibrc
这个文件进行修改
# 找到font.family配置项,去掉注释,将值改为对应的字体名字。
font.family : SimHei
# 找到axes.unicode_minus配置项,去掉注释,将值改为False解决‘-’的问题
axes.unicode_minus : False
删除缓存文件,使更改生效(windows不需要这步)
缓存文件路径~/.cache/matplotlib
直接整个文件夹删除即可
rm ~/.cache/matplotlib -R
之后任意使用matplotlib制图中文都可以正常显示了,windows下只需要修改配置文件就可以了
网友评论