目录
基本用法
饼图中突出显示某部分
环形图(空心饼图)
多重饼图,并添加分割线
相较散点图和折线图,柱状图、饼图、箱线图是另外 3 种数据分析常用的图形,主要用于分析数据内部的分布状态或分散状态。饼图主要用于查看各分组数据在总数据中的占比。
Matplotlib 中绘制饼图的函数为 pie () ,使用语法如下:
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False,
labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None,
textprops=None, center=(0, 0), frame=False)
常用参数及说明:
参数 | 接收值 | 说明 | 默认值 |
x | array | 绘图的数据; | 无 |
explode | array | 饼图中各个饼之间的间距; | 0 |
labels | string | 图例说明; | 无 |
colors | string | 指定饼图的填充色; | 随机色 |
autopct | string | 百分比显示格式; | None |
pctdistance | 数值 | 设置百分比标签与圆心的距离; | 0.6 |
shadow | bool | 是否添加饼图的阴影效果; | FALSE |
labeldistance | 数值 | 设置各扇形标签(图例)与圆心的距离; | 1.1 |
startangle | 数值 | 设置饼图的初始摆放角度; | 0 |
radius | 数值 | 设置饼图的半径大小; | None |
counterclock | bool | 是否让饼图按逆时针顺序呈现; | TRUE |
wedgeprops | string | 设置饼图内外边界的属性,如边界线的粗细、颜色等; | None |
textprops | string | 设置饼图中文本的属性,如字体大小、颜色等; | None |
center | 坐标 | 指定饼图的中心点位置 | 原点(0, 0) |
frame | bool | 是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置; | FALSE |
基本用法
import pandas as pd
import matplotlib.pyplot as plt#读取数据
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
#取dataframe中的最后一行的数据画饼图
x = data[data['时间']==2018].iloc[:,1:].values.tolist()[0]plt.figure(figsize=(5,5))#设置画布的尺寸
plt.title('Examples of Pie Graph',fontsize=20)#标题,并设定字号大小
labels = 'Jay income','JJ income','Jolin income','Hannah income'#图例
colors = ['hotpink','slateblue','goldenrod','olivedrab']#startangle:从90度的位置开始画第一个饼图;autopct:显示一位小数;其他参数使用默认值
plt.pie(x,labels=labels,colors = colors, startangle=90,autopct='%1.1f%%')plt.show()#显示图像
饼图中突出显示某部分
通过参数 explode 来实现:
import pandas as pd
import matplotlib.pyplot as plt#读取数据
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
#取dataframe中的最后一行的数据画饼图
x = data[data['时间']==2018].iloc[:,1:].values.tolist()[0]plt.figure(figsize=(5,5))#设置画布的尺寸
plt.title('Examples of Pie Graph',fontsize=20)#标题,并设定字号大小
labels = 'Jay income','JJ income','Jolin income','Hannah income'#图例
colors = ['hotpink','slateblue','goldenrod','olivedrab']
explodes = (0,0,0.1,0)#突出显示Jolin income这部分的饼图plt.pie(x,explode = explodes, labels=labels,colors = colors, startangle=90,autopct='%1.1f%%')plt.show()#显示图像
环形图(空心饼图)
import pandas as pd
import matplotlib.pyplot as plt#读取数据
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
#取dataframe中的最后一行的数据画饼图
x = data[data['时间']==2018].iloc[:,1:].values.tolist()[0]
x_0 = [1,0,0,0]#用于显示空心plt.figure(figsize=(5,5))#设置画布的尺寸
labels = 'Jay income','JJ income','Jolin income','Hannah income'#图例
colors = ['hotpink','slateblue','goldenrod','olivedrab']plt.pie(x , radius=1.0,pctdistance = 0.8,labels=labels,colors = colors, startangle=90,autopct='%1.1f%%')
plt.pie(x_0, radius=0.6,colors = 'w')plt.show()#显示图像
多重饼图,并添加分割线
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdatafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
x1 = data[data['时间']==2005].iloc[:,1:].values.tolist()[0]#多重饼图第一层数据
x2 = data[data['时间']==2010].iloc[:,1:].values.tolist()[0]#多重饼图第二层数据fig,ax = plt.subplots()
colors = ['hotpink','slateblue','goldenrod','olivedrab']
labels = 'Jay income','JJ income','Jolin income','Hannah income'#图例
pie_1 = ax.pie(x1,startangle=90,autopct='%1.1f%%',radius=1.5,pctdistance = 0.9,colors=colors, labels=labels)
pie_2 = ax.pie(x2,startangle=90,autopct='%1.1f%%',radius=1.2,pctdistance = 0.6,colors=colors)#添加多重饼图的分割线
for pie_wedge in pie_1[0]:pie_wedge.set_edgecolor('black')
for pie_wedge in pie_2[0]:pie_wedge.set_edgecolor('black')ax.set(aspect="equal")
plt.show()#显示图表