Mac如何解决matplotlib的中文乱码问题

 1前言

        Mac用户在PyCharm或VS code中使用matplotlib进行绘图时,经常会出现以下报错“findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei”,其原因是Mac OS系统中没有自带黑体的字体,从而导致中文无法显示。网上的方法大多都是基于安装'SimHei'字体出发,但如果单从中文显示来说,笔者给出的方法更为简单实用。

2正文

2.1问题

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()

运行后出现以下错误: 

findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei

2.2解决方案

将上述代码修改为:

plt.rcParams['font.sans-serif'] = ['Heiti TC'] #用来正常显示中文标签

运行后图片中的中文即可正确显示

2.3其他问题

如果图像中的负号“-”显示为方块,则输入以下代码并运行即可。

plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

2.4解决思路

我们可以输入以下代码来查看目前Python支持的字体:

import matplotlib
from matplotlib import font_manager

font_list=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in font_list:
    print(i)

       通过查看输出结果,我们发现Python目前已有的字体根本不存在'SimHei',但是我们可以使用它已有的字体来进行中文显示,如'Heiti TC'、'SimSong'等都可以正常显示出中文。

3总结

        网上很多主流的解决办法是:macOS不自带'SimHei'字体,因此需要手动安装才能使用。事实上Mac用户使用matplotlib不能正确显示中文的原因是:matplotlib本身就不支持' SimHei',即使安装后还需要让其与Python适配,非常麻烦(可以参考其他帖子,大多数都是用这种办法)。对于新手来说何不使用已有的字体进行操作呢?希望有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值