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

在PyCharm中使用matplotlib绘制中文图表遇到乱码问题,通常是因为字体缺失或者编码设置不正确导致的。解决步骤如下: 1. **安装支持中文的字体**: 首先,确保你的系统中有支持中文的字体包,如SimHei、SimSun等。如果没有,可以下载并在Python环境中添加。例如,在Windows上,可以在`C:\Windows\Fonts`目录下查找,然后将字体文件复制到Python的`site-packages/matplotlib/mpl-data/fonts/ttf/`目录。 2. **修改Matplotlib配置**: 打开matplotlib的配置文件`matplotlibrc`,通常位于`~/.matplotlib/matplotlibrc`(Linux/Mac用户)或`%USERPROFILE%\.matplotlib\matplotlibrc`(Windows用户)。在文件中找到`text.usetex`和`text.latex.preamble`行,将其注释掉,因为它们可能导致中文显示问题。然后添加`font.sans-serif = SimHei, SimSun, FangSong, Microsoft YaHei, sans-serif`这一行,指定默认的中文字体。 ``` # 在合适的位置添加或修改以下内容: font.sans-serif : SimHei, SimSun, FangSong, Microsoft YaHei, sans-serif ``` 3. **检查编码设置**: 确保你的Python脚本和数据文件都使用UTF-8或其他支持中文字符的编码格式。如果是在读取文件出错,记得在打开文件指定正确的编码,如`open('file.txt', 'r', encoding='utf-8')`。 4. **运行代码并查看结果**: 保存并关闭配置文件后,重启Python或PyCharm,再尝试绘制中文图表看是否解决乱码问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值