Matplotlib解决中文支持

Pandas 是一个常用的数据结构工具,常常使用到数据分析中,Pandas 使用到 Matplotlib 库的 API 进行绘图,但是 Matplotlib 默认不支持中文,如果你的标签含有中文,那么绘画图表的中文字体就变成了“豆腐块”,这里需要我们手动修改来完善中文支持。

我这里使用的是 Windows10 环境下最新版 Python3.6.3,这种方法经过测试完全有效。如果你使用的是其他系统版本或 Python 版本,这个方法也能给你一定的参考。

>>> import matplotlib
>>> matplotlib
<module 'matplotlib' from 'D:\\Program Files (x86)\\Python36-32\\lib\\site-packages\\matplotlib\\__init__.py'>

这里显示出了 Matplotlib 模块的位置。

D:\\Program Files (x86)\\Python36-32\\lib\\site-packages\\matplotlib

一、替换大法

由于我把 Python 安装到了 D盘 ,所以可能和你运行的结果有些不同,等你进入了 Matplotlib 模块文件夹的位置后,再依次进行下列目录 mpl-data》fonts》ttf。最终目录 ttf 是此模块存放字体的位置。然后把原先的DejaVuSans.ttf文件更名为DejaVuSans_bak.ttf作为备份保留,复制一份微软雅黑字体到这里并更名为DejaVuSans.ttf。

什么?在哪里找微软雅黑字体!如果你是 Windows vista 版本或以上的,也就是说除了 Windows XP 系统,你的电脑里都应该有微软雅黑字体,实在不行别的一份中文字体也可以,不过微软雅黑的显示效果更好。字体目录在:

C:\Windows\Fonts

复制一份,然后到当前目录粘贴,会出现三份字体文件,我们只保留标准版msyh.ttc ,删除剩下两份加粗或变细的版本,直接按照上面所说把文件名连扩展名一起改掉为 DejaVuSans.ttf,重启Python,大功告成!你现在已经可以正常的显示和制作含有中文的表格了~

二、修改法

之所以把替换法放到最前面,是因为这种方法使用的步骤最少,尽量减少麻烦也是一种功德嘛,但是有些人会发现这种方法不生效,或者是简单的替换不够优雅,不符合自己的气质,那么就通过纯粹的修改配置来完成吧。

Matplotlib 只认识 ttf 格式的字体文件,所以你还是需要像上一个方法一样,把一份中文字体文件放到它的目录下,这里就不再重复这一点,和之前不同的是,你可以不需要给字体改名,微软雅黑就叫微软雅黑,然后修改配置让 Matplotlib 识别。

现在假定你已经在 Matplotlib 的字体目录下 放入了 Microsoft YaHei.ttf 文件,如果没有请参考上面替换法的说明。然后咱们在下列目录找到配置文件进行修改:

Your_Python_Path\Lib\site-packages\matplotlib\mpl-data

此目录下的 matplotlibrc 文件就是字体配置文件,右键——编辑 这个文件,找到下面两行:

#font.family : sans-serif
#font.sans-serif

移除前面的注释,并在 font.sans-serif 行添加微软雅黑名称,变成下面这样:

font.family : sans-serif
font.sans-serif : Microsoft YaHei,

font.sans-serif 行有许多字体名,你需要在最前面添加一个微软雅黑,这说明微软雅黑是首选字体,OK~可以保存退出了。现在你需要到自己的目录下删除掉 Matplotlib 配置文件,让它重新生成一份,它会自动读取我们加入的微软雅黑字体写入配置的。在 Windows 系统下,目录位置在:

C:\Users\Your_Username\.matplotlib

删除掉这个目录下的所有文件,然后就打开 Python 使用 Matplotlib 生成个图表试试~是不是一切都那么完美?

发表评论

电子邮件地址不会被公开。 必填项已用*标注