一次解决Matplotlib绘图中的中文乱码问题

一次解决Matplotlib绘图中的中文乱码问题

Matplotlib是一款非常常用的科学绘图工具,然而其对中文的支持不好。常见的解决办法分两类,一类是每次编程都指定字体,具体做法可以参考解决Matlplotlib中文乱码问题,它这里只介绍第二种方法,永久性的解决乱码问题。具体的解决步骤包括:

  1. 查找Matplotlib的配置文件所在位置
  2. 下载中文字体,并修改配置文件包含该中文字体
    具体方法如下:
  3. 利用下面代码查找Matplotlib的配置文件所在位置。
import matplotlib
matplotlib.matplotlib_fname()

如我的机器上得到了路径为:/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/
4. 下载中文字体,这里我下载的中文字体是微软雅黑字体 msyh.ttf,并将该字体放入这里/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf(这里路径与上一步得到的结果有关)
5. 打开配置文件/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc,主要修改一下三行。

#font.family ... //这里将注释符号#删除
#font.sans-serif ... //这里将注释符号#删除,并添加自己需要添加的字体。比如我添加的字体是微软雅黑,则需要添加 Mircrosoft YaHei 
#axes.unicode_minus  : False

在我的电脑上,修改后的三行的结果为:

font.family         : sans-serif
font.sans-serif     : Microsoft YaHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus  : False 
  1. 这里要划重点了:我现在的微软雅黑字体的文件名是msyh.ttf,但这里我在上述第二行添加的字体名却是Mircosoft YaHei,很多教程都没说明这一点,我当时就因为这走了不少弯路。
  2. 如果不想修改配置文件,也可以每次运行时通过设置参数实现:
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
from matplotlib.font_manager import _rebuild
_rebuild() #reload一下
  1. 删除字符列表缓存,缓存的位置位于~/.cache/matplotlib,其中~指的是用户目录。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值