背景
使用Python做数据分析时,不可避免的需要使用matplotlib
画图。但它对中文并不友好,使用中文作为标签或者抬头会有乱码方框的问题:
解决方案
方案一:设置中文字体
matplotlib
提供了FontProperties
对象,可以通过手工设置字体来格式化生成的展示图片。具体实现如下:
找到中文字体文件
- 在Mac下,可通过打开“字体册”应用找到对应的字体和字体所在的路径(默认为:/System/Library/Fonts/PingFang.ttc)
- 在windows下,一般在C:\Windows\Fonts目录下。
- 也可直接网上下载需要的字体
配置字体属性
1
2from matplotlib.font_manager import FontProperties
font = FontProperties(fname='/System/Library/Fonts/PingFang.ttc')引用字体属性
1
plt.title("中文测试", fontproperties=font)
画图即可:
方案二: 使用第三方库
为解决中文画图的问题,强大的网友自己做了第三方支持中文库可以方便的展示中文,且支持 matplotlib 混合编程, 完全相同的API设计。
安装pyployz
1
pip install pyplotz
使用pyplotz和matplotlib混合配置
1
2
3
4
5
6
7
8
9
10import matplotlib.pyplot as plt
plt.plot()
# 新建pltz对象,用于显示中文
from pyplotz.pyplotz import PyplotZ
pltz = PyplotZ()
pltz.enable_chinese()
pltz.title('中文测试')
plt.savefig('Chinese_1')
plt.show()
效果如下:
更多介绍可以参考官方说明:https://github.com/songlinhou/pyplotz
总结
两种方式都可以实现中文画图,方法一灵活性更好,但每行涉及到中文的地方都需要配置,方法二需要另外引入第三方包,并进行初始化,在首次使用时会自动下载中文字符集。
建议大家还是按需选用,如果有更好的方法,欢迎交流。