python使用matplotlib无法显示中文字体报错

python使用matplotlib字体报错

   当我们使用python使用matplotlib总是出现报错,图片中文变成方框
在这里插入图片描述

findfont: Font family 'WenQuanYi Micro Hei' not found. findfont: Font family 'Heiti TC' not found. findfont: Font family ['SimHei'] not found. Falling back to DejaVu Sans.

   但是我们通过代码查看发现自己的电脑里面是存在字体的就是 .ttf文件,因为本来matplotlib自己带的库里面没有中文等一些字体的,这一部分配置是和你电脑里面的字体是分开的。所以你要重新配置json文件和加入肢体

# 查询当前系统所有字体
from matplotlib.font_manager import FontManager
import subprocess

mpl_fonts = set(f.name for f in FontManager().ttflist)

print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):
    print('\t' + f)

重新配置加入

首先自己下载一下字体的文件.ttf文件这个到处都是的我就不提供网址了
用下面的代码来找到自己的环境库所在

import matplotlib
print(matplotlib.matplotlib_fname())

在这里插入图片描述
进入这个mpl-data文件下面的font文件这里面的ttf文件夹就是matplotlib的字体库将刚才下载的.ttf文件放入
然后要修改一下配置的json文件,不然识别不出来

import matplotlib
print(matplotlib.get_cachedir())

运行代码 进入显示出来的地址 删除里面的json文件,之后会自动生成再使用字体就不会报错了
在这里插入图片描述

### Matplotlib 字体报错解决方案 当遇到 Matplotlib 使用中文或其他特殊字符时报错显示乱码的情况时,可以通过多种方式进行修复。 #### 获取字体文件路径信息 为了更好地理解当前环境中的字体配置,可以先打印出 `matplotlib` 的配置文件路径: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 这段代码会返回类似 `/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc` 这样的路径[^1]。 #### 修改字体设置 对于中文支持不足的问题,通常是因为默认使用的英文字体不包含所需的汉字编码。因此建议指定一个兼容性更好的中文字体来替代默认字体。具体操作是在绘图前加入以下语句: ```python from matplotlib import rcParams rcParams['font.family'] = 'SimHei' # 黑体 rcParams['axes.unicode_minus'] = False # 正常显示负号 ``` 上述代码片段设置了全局参数以确保后续所有的图表都能正确渲染中文字符[^2]。 #### 清除缓存并重置字体列表 有时即使更改了字体配置也可能无法立即生效,这可能是由于本地存在旧版本的字体缓存所致。此时可尝试清理 `.matplotlib` 下的相关缓存目录后再重新启动 Jupyter Notebook 或 Python 解释器: ```bash rm -rf ~/.matplotlib/font* # 或者 rm -rf ~/.cache/.matplotlib/font* ``` 完成此步之后再次测试是否解决了问题[^3]。 #### 查找可用字体及其路径 如果不确定系统上有哪些合适的 TTF 字体可供选择,则可通过遍历系统内已安装的所有字体来进行查找: ```python import matplotlib.font_manager as fm for font in sorted(set([fm.FontProperties(fname=fname).get_name() for fname in fm.findSystemFonts()])): print(font) ``` 该脚本将列出所有能够被识别出来的字体名称,并允许从中挑选适合项目需求的那一款[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值