在前面的应用中,大家应该都发现了这个问题,Matplotlib中的图表信息,英文可以正常显示,但是中文会显示方框,根本原因就是字体库问题,这节带大家解决!

首先,罗列系统中所有字体库,代码如下:
import matplotlib.pyplot as plt import matplotlib a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist]) for i in a: print(i)
我这里测试会显示非常多的字体库,效果如下图:

这里其实有许多我们熟悉的字体,比如STXihei、STKaiti、STFangsong,这不就是细黑、楷体、仿宋吗?没错!SimHei就是黑体!
这个时候我们在Matplotlib绘制图表时候加这句代码就可以了:
plt.rcParams['font.family'] = 'SimHei' # 替换为你系统里有的字体
也就是说,我们通过设置 plt.rcParams['font.family']这个参数,相当于告诉 Matplotlib 使用选择的字体来渲染中文文本,这样就可以在图表中正确显示中文了
实际上,由于我们写的程序不一定在本机运行,目标机器或者其他电脑不一定安装这个字体库,因此更稳妥的写法,可以通过设置plt.rcParams['font.sans-serif'] 这个参数来设置字体族,从而可以指定多个字体,比如代码
plt.rcParams['font.sans-serif'] = [ # Windows 优先 'SimHei', 'Microsoft YaHei', # macOS 优先 'PingFang SC', 'Heiti TC', # Linux 优先 'WenQuanYi Micro Hei', 'DejaVu Sans' ]
这段代码的意思是为'font.sans-serif'字体族准备了六个字体,根据不同操作系统考虑,从而让代码在不同系统上的兼容性更好。
本系列教程为了省心,全部只指定了一个黑体的字体库,即:
plt.rcParams['font.sans-serif'] = ['SimHei']
大家这下就明白了
添加字体族后,重新运行,即得到效果:

一切正常~请大家亲自上机试验~
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程