一、问题描述:
1 2 3 4 | import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 |
使用matplotlib画图,在Windows下正常,在linux环境下中文乱码
1 | Font family ['sans-serif'] not found.Falling back to DejaVu Sans |
二、解决方案:
在linux环境中的matplotlib里装入SIMHEI.TTF字体即可
三、解决步骤
1、下载SIMHEI.TTF字体
2、把字体放到指定目录
1 2 3 4 5 6 7 8 | # python 终端获取路径 import matplotlib print(matplotlib.matplotlib_fname()) #/root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc # 下载好的SIMHEI.TTF放到该目录下 # (shell) mv ./SIMHEI.TTF /root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/ |
3、删除matplotlib的缓冲目录
1 2 3 4 5 6 7 8 | # python 终端获取缓存路径 import matplotlib print(matplotlib.get_cachedir()) # /root/.cache/matplotlib # 删除缓冲目录 # (shell) rm -rf /root/.cache/matplotlib |
4、修改matplotlibrc文件
1 2 3 4 5 6 7 8 9 10 | # (shell) vim /root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc # 修改的内容 font.family : sans-serif # 去掉前面的# font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif # 去掉前面的#,并在冒号后面添加SimHei axes.unicode_minus : False # 去掉前面的#,并将True改为False |