【matplotlib字体报错问题】findfont: Generic family ‘sans-serif‘ not found (win11)

这个问题之前有遇到过,解决问题之后也没有上心。这次又遇到了,花了好多时间来解决。为了避免之后再做重复的工作,决定写下这一篇博客咯。希望能帮到大家。

方案一:

方案一是在python终端中进行的。确保自己的终端中已经启动python。

导入matplotlib库。

import matplotlib as mpl

导入matlablib库中的子模块:font_manager,这个模块可能有时候不会被__init__.py自动导入。在一些问题中,报错就是由于这个模块引起的。

import matplotlib.font_manager

找到matplotlib的字体缓存文件。

mpl.get_cachedir()

找到对应路径下的缓存文件,将它删除。接着尝试重新运行代码。如若问题仍然存在,尝试以下方案。

方案二:

删除matplotlib缓存中的字体。步骤同上。

找到matplotlib的字体目录,下面是我的目录,可以用作参考。

D:\miniconda3\pkgs\matplotlib-base-3.6.2-py310h1094b8e_0\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

把相关字体复制到此目录下,字体的链接如下。

https://www.fontsquirrel.com/fonts/computer-modern

如果不是你需要的那种字体,尝试从Windows系统中去找一下这种字体。下面介绍在Windows系统中寻找字体。

一般Windows系统中的字体保存在如下路径下:

C:\Windows\Fonts

显示的页面如下:

图1 Windows系统自带字体

选中需要的字体,Ctrl+C,将字体复制到matplotlib的字体目录。接下来在python代码中进行动态设置参数即可。

以微软雅黑为例:

在代码前加入这两句代码:

plt.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

其中,第一句表示在绘图中使用微软雅黑字体。第二句是为了防止图像中的负号无法正常显示而加入的。

下图给出的是Windows系统自带字体的对应名称:

图2 Windows系统自带字体名称对照表

方案三:

如果以上两种方法仍然没有解决你的问题,那有可能你代码中使用的字体是第三方的字体库。这种情况就比较难处理了。

你可能需要考虑换种字体,或者想办法去下载到这个第三方的字体库。下面给出两个字体下载的链接。

https://www.fontpalace.com/
https://fontzone.net/popular-fonts/

【写在最后】

很高兴,最近迎来了自己的第七个粉丝,同时也是我的第六个真人粉丝。感谢你的关注,创作一下子就有了动力^v^。

在之前的博客中,有预告说会在之后的更新中结合具体代码来讲讲模糊系统,一月份有点小忙,计划将在下个月,也就是二月份的时候来把这个坑给填上咯。

最后,感谢大家的关注!

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 这个问题是由于找不到字体家族'sans-serif'导致的。根据引用\[1\]和引用\[2\]的报错信息,可以看出在系统中找不到SimHei字体。为了解决这个问题,你可以按照引用\[3\]中的步骤进行操作。首先,在Python环境中输入以下代码来查看字体路径:import matplotlib matplotlib.matplotlib_fname()。这将显示matplotlib的配置文件路径。然后,你可以将SimHei字体文件复制到该路径下的字体文件夹中。这样,当你再次运行程序时,就能够找到并使用SimHei字体了。 #### 引用[.reference_title] - *1* [解决linux服务器上matplotlib绘图中文显示方框问题](https://blog.csdn.net/liu_xzhen/article/details/122881997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [linux下python matplotlib 中文字体Font family [‘sans-serif‘] not found. Falling back to DejaVu Sans](https://blog.csdn.net/sinat_36728101/article/details/124349841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [解决使用matplotlib.pyplot画图包含中文乱码显示问题(macbook上 family ‘sans-serif‘ not found 问题)](https://blog.csdn.net/ben_na_/article/details/124238611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值