数据可视化——matplotlib(3)
导入相关模块
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
中文显示设置
在之前,绘图时均使用的是英文,并没有使用过中文,那是因为直接使用中文会遇到乱码的问题,就比如:
a = (1,3,2,5,4)
b = (2,5,3,4,1)
plt.plot(a)
plt.xlabel('类型')
plt.ylabel('数量')
plt.title('某商店货物数量')
plt.show()
当然,并不是因为matplotlib不支持中文。作为Python中的热门模块,matplotlib是支持Unicode编码的,但是在默认情况下,它使用的是自带的字体,这些字体并没有中文支持。因此,最后的结果就是一堆的乱码。
解决乱码的方法有几种,主要方法有一下集中:
临时设置
matplotlib将许多常用模块集中到了统一的namespace中,产生了pylab。导入pylab后可以轻易的设置matplotlib所使用的字体,一个简单的例子如下:
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.plot(a)
plt.xlabel('类型')
plt.ylabel('数量')
plt.title('某商店货物数量')
plt.show()
当然,使用临时方法可以解决中文显示,甚至在移植编码时,也保持了一定的容错性(除非新系统中缺少当前设置的字体)。但是,在每一次创建新的coding时,需要再次的设定,也就多了些许的麻烦。
暴力替换
除了每次进行设置,还有一种比较暴力的方式,也就是将matplotlib默认的字体替换为某种中文字体,然后就能一劳永逸了。当然这种方式并不推荐使用。最主要的原因是,替换后,虽然本地的代码可以正常显示,但是,在移植后,因为新系统和旧系统之间存在差异,很可能再次出现乱码。所以,不到万不得已,还是不推荐使用。