MacOS Matplotlib中文显示乱码/方块解决方法

MacOS Matplotlib中文显示乱码/方块解决方法

【版本:python3.6】

  1. 首先进入
    /Users/jc/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf
    目录下查看是否有汉字字体,如SimHei.ttf,若无,则先将字体下载并放入上述目录下,下载链接如下:
    http://www.fontpalace.com/font-download/SimHei/

【注】我是用的anaconda,所以ttf路径如上,若不用anaconda,则将字体下载到:
你的python对应的:site-packages\matplotlib\mpl-data\fonts/ttf即可。

  1. 修改matplotlibrc配置文件:
    进入上述路径中的mpl-data文件夹,找到matplotlibrc文件并做如下修改
    #font.family :sans-serif
    #font.sans-serif : SimHei, DejaVu Serif……(将SimHei加到最前面)
    #axes.unicode_minus,将True改为False (这里是关于负号显示的)

  2. 清空缓存
    一定要清空matlibplot加载字体的缓存,否则加载时必然会报找不到字体的错,
    如:
    UserWarning: findfont: Font family [‘sans-serif’] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))

    删除方法:
    首先,进入对应文件夹:cd ~/.matplotlib/
    然后删除该文件夹下的Fontlist.json文件,如果你的文件夹下还有fontlist-v300.json文件,也必须要删除。否则无效

  3. 修改代码
    在你的python代码中添加如下:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']     # 引入加载字体名
plt.rcParams['axes.unicode_minus'] = False         # 解决保存图像是负号'-'显示为方块的问题
  1. 重启python

  2. 设置坐标轴名称字体:

font = {'family': 'Times New Roman', 'weight': 'normal', 'size': 15}
plt.xlabel('Route label',size=15,fontdict=font)
  1. 设置图例字体
plt.legend(loc = 'upper right',prop={'family' : 'Times New Roman'})

9.设置坐标轴刻度字体

引入全局字体,最重要的是family,必要时修改上述配置文件中的对应参数信息

plt.rcParams['font.serif'] = 'Times New Roman'     # 引入加载字体名
plt.rcParams['font.family'] = 'Times New Roman'     # 引入加载字体名
发布了28 篇原创文章 · 获赞 16 · 访问量 3202

猜你喜欢

转载自blog.csdn.net/Newbie_J/article/details/82821411