天天看点

Matplotlib - 饼图、环形图 pie() & 多重饼图 subplots() 所有用法详解

目录

基本用法 

饼图中突出显示某部分

环形图(空心饼图)

多重饼图,并添加分割线

相较散点图和折线图,柱状图、饼图、箱线图是另外 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 饼图中各个饼之间的间距;
labels string 图例说明;
colors string 指定饼图的填充色; 随机色
autopct string 百分比显示格式; None
pctdistance 数值 设置百分比标签与圆心的距离; 0.6
shadow bool 是否添加饼图的阴影效果; FALSE
labeldistance 数值 设置各扇形标签(图例)与圆心的距离; 1.1
startangle 数值 设置饼图的初始摆放角度;
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()#显示图像
           
Matplotlib - 饼图、环形图 pie() & 多重饼图 subplots() 所有用法详解

饼图中突出显示某部分

 通过参数 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()#显示图像
           
Matplotlib - 饼图、环形图 pie() & 多重饼图 subplots() 所有用法详解

环形图(空心饼图)

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()#显示图像
           

Matplotlib - 饼图、环形图 pie() & 多重饼图 subplots() 所有用法详解

多重饼图,并添加分割线

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

datafile = 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()#显示图表
           
Matplotlib - 饼图、环形图 pie() & 多重饼图 subplots() 所有用法详解

继续阅读