数据可视化:把数据用图形的方式来呈现,例如:饼图,柱状图,折线图,条形图等等。
需要用到matplotlib库,它是python中非常强大的绘图库。
一、饼图
1.绘制方法
1)需要用到matplotlib库中的pyplot模块,用from...import...形式导入pyplot。
代码:
pip install matplotlib #安装
from matplotlib import pyplot
2)准备数据。创建一个列表,列表内存储需要绘制的数据。
代码:
my_list = [10,40,20,30]
3)画图。使用pyplot模块中的pie()函数,括号中填写需要绘制的参数,将上面的列表作为这个参数。程序会根据每一个数据,计算出每一块扇形的大小,并根据计算的结果绘制饼图。
代码:
pyplot.pie(my_list)
4)显示饼图。需要用到pyplot中的show()函数。
代码:
pyplot.show()
#一个最基本的饼图就绘制好了
2.美化
1)添加标签
Ⅰ画完饼图后发现,我们根本不知道哪一块分别对应哪个数据。为了更直观,可以在每个扇形旁边添加标签,要设置pie()函数的labels参数,填写在pie后面的小括号中,格式为(my_list,labels=参数)
需要注意的是,labels的参数需要设置为一个列表,列表中的每一个元素分别对应一个数据,顺序一一对应。
随后就又会出现一个问题:中文字体不支持显示,需要我们自行设置。
同样,看看你的电脑是什么牌子,苹果电脑用'Arial Unicode MS',Windows用'simhei',这段代码需要加在前面:pyplot.rcParams['font.sans-serif'] = 'simhei'。
代码:
pyplot.rcParams[‘font.sans-serif’] = 'simhei'
my_list = [10,40,20,30]
lab = ['事件一','事件二','事件三','事件四']
pyplot.pie(my_list,labels=lab)
Ⅱ还不够直观?可以添加百分比数据。代码为autopct='%f',填写在pie()函数的小括号中。%f表示以小数的形式显示数据,如果想要以整数形式显示,则填写%d。
这样显示的数据没有百分号,直接在%f后再加两个百分号就行了,加一个百分号会报错。
当以小数形式显示时,我们会发现小数点后的位数过多,想要控制位数,可以在%f中间填写.2,这样就会只显示两位小数了。小数点后的数字表示保留小数位数,即数字是几,就显示几位小数。
代码:
pyplot.pie(my_list,labels=lab,autopct='%.2f%%')
2)饼图的颜色可以自定义,颜色数据存储在一个列表中,和数据一一对应,将它添加到colors参数中。
代码:
colors = ['red','blue','green','yellow']
pyplot.pie(my_list,labels=lab,colors=colors,autopct='%.2f%%')
3)为了使饼图更加立体,可以添加阴影,代码为shadow=True。
代码:
pyplot.pie(my_list,labels=lab,colors=colors,autopct='%.2f%%',shadow=True)
4)设置为正圆形(否则可能为椭圆形)。
代码;
plt.axis('equal')
5)设置饼图的起始角度,默认为0度,需要使用到startangle参数。
代码:
pyplot.pie(my_list,labels=lab,colors=colors,autopct='%.2f%%',shadow=True,startangle=90)
##总代码##
from matplotlib import pyplot
pyplot.rcParams['font.sans-serif'] = 'simhei'
my_list = [10,40,20,30]
lab = ['事件一','事件二','事件三','事件四']
colors = ['red','blue','green','yellow']
pyplot.pie(my_list,labels=lab,colors=colors,autopct='%.2f%%',shabow=True,startangle=90)
plt.axis('equal')
pyplot.show()
【注】
pie n. 派
label n. 标记
angle n. 参数
equal n. 能力
font n. 字体
后面还有。。。
第14章 数据可视化Ⅰ