matplotlib 画图时中文乱码问题的解决

当使用matplotlib绘制包含中文的图表时,可能会遇到乱码问题。解决方法包括:1) 安装并指定中文字体,如SimHei;2) 清理缓存并修改matplotlibrc配置文件,确保'font.sans-serif'包含SimHei,并设置'axes.unicode_minus'为False。按照这些步骤操作后,代码应该能正常显示中文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、报错信息

RuntimeWarning: Glyph 20108 missing from current font. font.set_text(s, 0.0, flags=flags)

原因:matplotlib中文乱码

二、解决方法

1、有中文字体

直接加入下面的两行代码即可正常显示

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号

2、无中文字体

此时加入上面两行代码后依旧报错。处理方法是:

1)找到 python 中保存字体的目录

C:\Users\xxxxx>python
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>import matplotlib    
>>>print(matplotlib.matplotlib_fname())
D:\Anaconda531\lib\site-packages\matplotlib\mpl-data\matplotlibrc

2)下载并保存字体文件
在网上搜一下相应的 .ttf 格式字体文件(比如这里的 SimHei 字体),随便找个网站下载,然后文件放入以下目录。

D:\Anaconda531\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

3)清理旧缓存文件
在python环境中查看缓存文件的路径。

>>> import matplotlib
>>> matplotlib.get_cachedir()
'C:\\Users\\xxxxx\\.matplotlib'

将这个缓存目录删掉。

4)修改配置文件 matplotlibrc

D:\Anaconda531\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

将这个配置文件(没有扩展名的)打开,修改以下内容

 #  去掉 # 注释   
 font.family         : sans-serif   

 #  去掉 # 注释,冒号后添加 SimHei
 font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

 #  去掉 # 注释,将 True 改为 False
 axes.unicode_minus  : False

5)重新切换回 ide 中,运行代码。
正常情况下,这个时候应该能够解决问题。此时,

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号

这两句可以注释掉了。

参考资料:
https://www.cnblogs.com/swiftyao/p/14200373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值