你是否在作图是心塞?
辛辛苦苦写出的python代码却不能直接显示中文?
!什么鬼?
今天我们来教大家
如何简单快速的操作,修改此小bug!
你在学习Python的过程中,满心期待地对整理好的数据绘图时,Python却辜负了你,把你的中文全部“翻译”成了框框,犹如这样:
此时此刻你的内心一定是万马奔腾:what?!
搞事情嗦~?
不用怕,本文来教你绘图时显示中文的最简单且一劳永逸的终极办法。
只需4步!就可以轻松KO这些调皮捣蛋。跟我来:
一. 查看系统字体文件夹
windows系统中,系统字体文件夹的路径:C:\windows\Fonts,打开之后直接拉到底,看看你的系统里都有啥中文字体。我的长这样:
真·手把手
不过:要注意的是:
这里要注意图中①与②的不同。
①是单一字体文件,②是几个字体文件集合。分别右键查看二者属性,哦……原来①是ttf文件,②是ttc文件。
(这句作为科普:ttc字体文件是微软开发的新一代字体格式标准,它是由几个ttf构成,这些ttf可以共享同一笔划信息,从而有效节省了字体文件所占空间。但是!有些软件缺乏对这种格式字体的识别,所以可能会导致无法正确处理并显示ttc字体。)
假如你想使用微软雅黑字体,但是现在它是ttc文件。解决办法:上网搜索微软雅黑ttf,下载并放入系统字体文件夹C:\windows\Fonts内。
二. 查看字体英文名称
这步无需多讲,就是把你希望用的中文字体在下图中找到对应的English name。
三. 简单修改Python的字体配置文件
在jupyter notebook中,输入以下代码:
按照运行结果返回的位置,用Notepad++打开matplotlibrc配置文件。
按Ctrl+F,查找:#font.sans-serif。
结果在208行,删除前面的注释符#,并在冒号后面添加第二步表格中的某个English name。
举个栗子,修改为下图所示:
修改后保存退出。
四. 重启Kernel
在jupyter notebook中,按下图操作:
(这句是额外赠送:Python有个字体管理器font_manager.py,每次重启Kernel后,它都会重新生成一个字体配置缓存文件,并修改了绘图程序的字体设置,如下图,所以根本不需要删除这个文件再重启Kernel。)
每次重启Kernel,该文件都会自动重新生成并刷新字体配置
重新执行代码后,之前那些不乖的框框都老实了,重现了她们应有的面貌:
已显示华文新魏中文字体
测试一下:
①修改Python字体配置文件,非衬线体font.sans-serif:Microsoft YaHei, …………(省略)

②重启Kernel并Run all,请直接看结果:

PERFECT!!!完美变成了微软雅黑字体。你学会了吗?
课外知识:
如果你不想修改系统默认配置文件,那么就在每个ipynb文件中,输入下面的代码:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
更新一句:在后续学习seaborn包绘图时,如果绘图之前指定绘图风格,导致不能显示中文时,此时也许会改变原matplotlibrc的配置,尝试增加一句:
sns.set_style('darkgrid',{'font.sans-serif':'Microsoft YaHei'})