作为Python下最流行的数据可视化库,matplotlib为众多不同需求的绘图任务提供了相当简单易用的接口。但时至今日(2019年7月),已经更新到3.1.x的matplotlib,仍然还会给它的不少初学者们一记下马威——小萌新辛辛苦苦输入的诸多title、label文字,毫不留情地被一大堆不明所以的小框框取而代之。本文致力于尽可能简明但又充分地讨论下其个中缘由,解决方案则是水到渠成。
本文基于Python 3.6.8 & matplotlib 3.1.x
使用matplotlib时,初学者常常会遇到中文显示的问题。比如
import matplotlib.pyplot as plt
# 最简单的绘图
plt.plot([-1, 2], [1, 4])
plt.title("标题")
plt.xlabel("x轴坐标")
plt.ylabel("y轴坐标")
plt.show()
你大概率会看到这么个结果
没错,无论是你输入的标题,还是x, y轴标签,除了"x""y"这俩英文字母,其余字符都没能正确显示出来。这一情况常常被描述为“中文乱码”,看来matplotlib没有很好地支持中文?
然后你上某度搜索这种情况,蹦出来很多文章告诉你只需在绘图代码开头添加类似这样两条命令
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False