使用matplotlib画图中文显示乱码问题

cannot import name _rebuild from matplotlib.font_manager

使用matplotlib画图中文显示乱码问题

  • 第一步执行以下命令获取matplotlibrc文件路径
import matplotlib
print(matplotlib.get_data_path())  # 数据路径

在这里插入图片描述

  • 下载SimHei.ttf(也可以到官网下载,但是速度很慢)

    • 百度云地址

    ​ 链接:https://pan.baidu.com/s/1ISu44F5TPAjgLy7cxzz7Fg
    ​ 提取码:digl

    • 夸克网盘地址
      链接:https://pan.quark.cn/s/bfb5f46500d1
      提取码:v7df
  • 将SimHei.ttf复制到前面获取到的mpl-data下的fonts\tff路径下

在这里插入图片描述

  • 修改matplotlibrc内容

    可以使用ctrl+f搜索关键字找到需要修改的行

    font.family:  sans-serif
    font.sans-serif: SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
    axes.unicode_minus: False
    

    注意需要去掉前面的#!!!

在这里插入图片描述
在这里插入图片描述

  • 重新加载matplotlib

    • 方法一
    from matplotlib.font_manager import _rebuild
    _rebuild()
    

    该方法可能还是会报错,如下图所示,则采用方法二

    在这里插入图片描述

    • 方法二
    import shutil
    import matplotlib
    
    shutil.rmtree(matplotlib.get_cachedir())
    

    我是用的方法的语句解决问题的。

    参考文章:http://t.csdn.cn/7no5A

在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、付费专栏及课程。

余额充值