Generic family ‘sans-serif‘ not found because none of the following families

当使用Python的Matplotlib库绘图时遇到中文乱码,可以通过下载SimHei字体文件,将其复制到Python环境的字体目录,并在matplotlib配置文件中设置字体为SimHei来解决。具体步骤包括查找并修改matplotlibrc文件,设置font.sans-serif和axes.unicode_minus参数。
摘要由CSDN通过智能技术生成

1背景

python使用matplot绘图标注中文时,出现乱码,部分python代码如下:

    # 解决中文显示问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

2原因

因为上述代码中使用了SimHei字体,但是在当前python的环境中没有该字体数据

3解决

首先要明确当前执行python的用户是root还是其他普通用户,针对具体用户的python环境进行处理。

大概思路:获取字体文件->拷贝至python环境->修改python配置文件

3.1获取字体文件

可以从网上下载也可以从windos中拷贝(通常在这个目录:C:\Windows\Fonts)。

注意:从windos系统获取有个小技巧,需将整个C:\Windows\Fonts中文件都拷贝到桌面新建的目录中,才能看到simhei.ttf文件

3.2拷贝至python环境

检索python环境的字体目录:

[root@localhost ~]# find / -path "*matplotlib/mpl-data/fonts/ttf" 
/home/user_test/.local/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf
/usr/local/python3/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf

 由于我执行python用的是user_test用户,因此,只需要将simhei.ttf拷贝到【/home/user_test/.local/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf】目录下即可。

3.3修改python配置文件

检索python配置文件:

[root@localhost ~]# find / -path "*matplotlibrc"
/home/user_test/.local/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc
/usr/local/python3/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc

同样的,由于我执行python用的是user_test用户,只需修改【/home/user_test/.local/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc】

[root@localhost ~] vi /home/user_test/.local/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc
font.family         : sans-serif
font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif,WenQuanYi Zen Hei Mono
#True改为False,处理'-'符号显示为方块的问题
axes.unicode_minus  : False 

确保有如上三行(不要有重复项)

搞定!!!!!!!

回答: 这个问题是由于找不到字体家族'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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值