matplotlib 数据可视化 - 饼状图
2018-11-28 本文已影响2人
东南有大树
import matplotlib.pyplot as plt
import numpy as np
饼状图
使用pie()
函数来制作饼状图。先来看一个简单的例子。
labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
plt.show()
哦,上图竟然是扁的!O__O "…
,没关系,一步一步来。
先来解析一下饼图的绘制方法吧!
plt.pie(values,labels=labels,colors=colors)
pile()函数接收一个数据集合,将期求和后再对各元素分配比例,再接收一个列表,存放各元素对应的类别,最后一个元素则可以指定各元素的颜色表现。
指定图表的大小
接下来,将上图的扁的饼图调成一个标准的圆O(∩_∩)O~~
labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
'''在绘制饼图之前,指定图表的大小,令其长宽一致'''
plt.figure(figsize=(6,6))
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
plt.show()
上面是一种改善图表的方法,另一种方法是使用axis()
函数
labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
'''equal表示平等、平衡的意思,即将x/y轴宽度调整为一致,与上例道理上是一样的'''
plt.axis('equal')
plt.show()
突出显示某一块扇形
explode
属性可以指定对应元素脱离饼图的大小,取值范围0~1,值越大,脱离程度越大。
labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]
plt.pie(values,labels=labels,colors=colors,explode=explode)
plt.axis('equal')
plt.show()
让饼状图放置一定的角度
startangle
属性可以指定饼图放置的角度,取值为0~360。
labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]
'''顺便加个标题'''
plt.title('饼状图')
plt.pie(values,labels=labels,colors=colors,explode=explode,startangle=180)
plt.axis('equal')
plt.show()
显示各元素所占的百分比
autopct
可以在第一块的中间位置添加文本标签来显示百分比。
shadow=True
可以为图表添加阴影效果。
labels = ['苹果','华为','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]
plt.title('饼状图')
plt.pie(values,
labels=labels,
colors=colors,
explode=explode,
shadow=True, # 阴影
autopct='%1.1f%%', # 添加百分比,浮点数,保留一位
startangle=180)
plt.axis('equal')
plt.show()
为 DataFrame 绘制饼图
import pandas as pd
data = {'one':[1,3,4,5,5],
'two':[2,4,5,2,7],
'three':[3,2,4,8,9]}
df = pd.DataFrame(data)
df['one'].plot(kind='pie',figsize=(6,6)) # 指定图表类型和大小
plt.show()