Python3 | UserWarning: findfont: Font family [‘SimHei‘] not found. Falling back to DejaVu Sans.

本文详细介绍了解决Matplotlib在Python环境下无法正确显示中文的问题。通过下载并安装SimHei.ttf字体,找到Matplotlib的ttf文件夹路径,将字体文件复制到该目录下,并清除Matplotlib缓存,最后设置Matplotlib的字体参数,即可成功实现中文的正常显示。

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

该错误表现为 Matplotlib 不能显示中文,因为 Matplitlib 默认情况下是不支持中文字体,需要提供 SimHei.ttf 文件。

一、下载SimHei.ttf文件

这里提供下载链接:https://www.uslogger.com/details/3


二、找出Matplotlib存放ttf文件的路径

进入 python 脚本,执行以下操作:

>>> import matplotlib
>>> print(matplotlib.matplotlib_fname())
/home/book/.local/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc

寻找 ttf 目录: 

$ cd ~/.local/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf

三、复制SimHei.ttf文件到ttf目录下

$ cp /mnt/hgfs/DirShare/SimHei.ttf .

四、清除Matplotlib Cathe缓存

$ rm ~/.cache/matplotlib/fontlist-v300.json

五、之后执行以下Matplotlib语句就不会出错

plt.rcParams['font.sans-serif']=['SimHei'] 

<think>好的,用户遇到了Matplotlib中SimSun字体找不到的问题,需要解决方案。首先,我得回想一下Matplotlib处理字体的机制。根据用户提供的引用内容,特别是引用[3],里面提到了使用font_manager来管理字体,并且提到可以通过查看系统字体列表来确认可用字体。用户可能没有正确配置字体路径或者字体缓存的问题。 首先,用户应该检查系统中是否确实安装了SimSun字体。在Windows系统下,SimSun通常位于C:\Windows\Fonts目录下,文件名为simsun.ttc或simsun.ttf。如果用户使用的是其他操作系统,比如Linux或macOS,可能需要将字体文件复制到相应的字体目录中。 接下来,检查Matplotlib的字体缓存是否包含SimSun。用户可以通过运行font_manager.fontManager.ttflist来列出所有可用字体,查找是否有SimSun相关的条目。如果没有,可能需要手动添加字体路径或者重建字体缓存。 根据引用[2],font_manager._rebuild()方法可能已经不可用,所以替代方法是清除字体缓存。用户可以尝试删除Matplotlib的缓存目录,通常位于~/.matplotlib或~/.cache/matplotlib。然后重启Python环境,让Matplotlib重新生成缓存。 另外,引用[3]中的例子展示了如何设置特定字体,比如Times New Roman。用户需要将代码中的字体名称替换为SimSun,并确保使用正确的字体名称。有时候,字体的名称可能与文件名不同,所以需要先通过font_manager.findfont来确认正确的名称。 如果上述方法无效,可能需要手动指定字体路径。使用font_manager.FontProperties(fname=&#39;path/to/simsun.ttf&#39;)来直接加载字体文件。这样可以绕过系统字体查找,直接指定字体位置。 最后,如果用户是在生成图表时遇到警告,可以尝试忽略警告,但这只是临时解决方案,正确的方法还是修复字体配置。另外,检查Matplotlib的版本是否有已知的字体处理问题,更新到最新版本可能解决某些兼容性问题。</think>### 解决方案:Matplotlib中SimSun字体找不到的解决方法 #### 1. 确认系统是否安装SimSun字体 - **Windows系统**:检查 `C:\Windows\Fonts` 目录下是否存在 `simsun.ttc` 或 `simsun.ttf` 文件。 - **Linux/macOS**:将字体文件复制到系统字体目录(如 `/usr/share/fonts/` 或 `~/Library/Fonts/`),然后执行 `fc-cache -fv` 更新字体缓存[^3]。 #### 2. 检查Matplotlib字体列表 运行以下代码查看已识别的字体: ```python from matplotlib import font_manager for font in font_manager.fontManager.ttflist: if "SimSun" in font.name: print(f"找到SimSun字体: {font.fname}") ``` 若未输出结果,说明Matplotlib未正确加载该字体。 #### 3. 手动清除字体缓存 删除Matplotlib缓存目录: - **Windows**:`C:\Users\<用户名>\.matplotlib` - **Linux/macOS**:`~/.cache/matplotlib` 删除后重启Python环境,Matplotlib会自动重建缓存[^2]。 #### 4. 直接指定字体路径 在代码中强制使用SimSun字体文件: ```python import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # 指定SimSun字体路径 font_path = "C:/Windows/Fonts/simsun.ttc" font_prop = FontProperties(fname=font_path) plt.rcParams["font.sans-serif"] = font_prop.get_name() ``` #### 5. 全局配置Matplotlib字体 修改配置文件 `matplotlibrc`: ```python import matplotlib matplotlib.get_config_path() # 查看配置文件路径 # 在文件中添加: # font.sans-serif : SimSun ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式逍遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值