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适配,非常麻烦(可以参考其他帖子,大多数都是用这种办法)。对于新手来说何不使用已有的字体进行操作呢?希望有所帮助。