彻底解决 matplotlib 中文乱码问题
问题:
matplotlib 显示中文乱码问题,是因为没有对应的字体库,网上给的解决方案是引入字体库 SimHei
import matplotlib as mlp
mlp.rcParams['font.family'] = 'SimHei'
mlp.rcParams['axes.unicode_minus'] = False
但是很多人照这样操作后,还是不行。跟不愿意是电脑里没有 SimHei 字体库
解决方案:
1、从网上下载字体库 SimHei,这里可以下载 对应的Mac or Windows版本。
下载链接: http://www.xiazaiziti.com/210356.html
2、查看
matplotlib 使用的字体库路径
import matplotlib print("matplotlib字体路径: ", matplotlib.matplotlib_fname()) print("matplotlib缓存路径: ", matplotlib.get_cachedir())
例如这是我的,
cd 到fonts/ttf 查看有无SimHei 字体库:
cd /Users/kunlun/.pyenv/versions/tf2_py371/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
若没有(肯定没有)将下载的 SimHei.ttf 移动到 “... /matplotlib/mpl-data/fonts/ttf/ ” 目录mv SimHei.ttf /Users/kunlun/.pyenv/versions/tf2_py371/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
3、修改 matplotlib 配置文件
vim 刚才哪个 matplotlib字体路径: vim /Users/kunlun/.pyenv/versions/tf2_py371/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
然后这样修改
4、删除matplotlib缓存路径: /Users/kunlun/.matplotlib 里的tex.cache、fontlist-v300.json 文件
5、重启IPython, 见证奇迹
6、若是还不行,你在加上这句import matplotlib as mlp mlp.rcParams['font.sans-serif'] = 'SimHei' mlp.rcParams['axes.unicode_minus'] = False