点击上方“超哥的杂货铺”,轻松关注
matplotlib绘图时,经常会遇到中文字体显示为方块的问题。网上有很多解决方案,比较普遍的是在代码里增加下面两行。
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
不过并不一定能解决问题。本文记录一下我在mac系统下解决这个问题的过程。
1.下载中文字体SimHei
搜索“SimHei.ttf”等相关关键字即可,如果找不到,后台回复“mpl中文”即可获取字体文件。
2.运行代码,查看matplotlib的字体文件夹
mpl.matplotlib_fname()
matplotlibrc
是matplotlib的配置文件。字体文件夹在它同级目录下的fonts目录的子文件夹ttf中。即:
/Users/admin/opt/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf
3.将第一步获取的字体文件拷贝到第二步中的ttf文件夹中,可以使用cp命令或者打开文件夹拖拽。
4.修改配置文件matplotlibrc
,涉及三处改动
打开配置文件,搜索定位到
#font.family : sans-serif
,去掉行首的#
打开配置文件,搜索定位到
#font.serif:
在冒号后面增加SimHei,
上面两步做完后效果如下图:
打开配置文件,搜索定位到
axes.unicode_minus
,把默认的False
改为True
修改好之后记得保存。
5.运行代码重新加载配置
from matplotlib.font_manager import _rebuild
_rebuild()#执行该函数加载字体配置
上面的代码会使以上的修改和配置生效。如果是在jupyter中,可能需要重启kernel或重启服务。
6.检查效果
可以看到,横纵坐标的中文标签已经正常显示了,并且此时不需要在代码中增加额外的设置代码,加载配置的代码也不需要每次都运行。如果没有生效,可以检查一下配置文件是否正确修改了。
以上步骤在Mac OS 下亲测有效,windows下的配置也大致相同,可以尝试一下。
以清净心看世界;
用欢喜心过生活。
超哥的杂货铺,你值得拥有~
长按二维码关注我们
推荐阅读