python中饼图绘制
一、饼图绘制参数详解
1、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:指定绘图的数据
- explode:指定饼图某些部分的突出显示,即呈现爆炸式
- labels:为饼图添加标签说明,类似于图例说明
- colors:指定饼图的填充色
- autopct:自动添加百分比显示,可以采用格式化的方法显示
- pctdistance:设置百分比标签与圆心的距离
- shadow:是否添加饼图的阴影效果
- labeldistance:设置各扇形标签(图例)与圆心的距离
-
startangle:设置饼图的初始摆放角度
-
radius:设置饼图的半径大小
-
counterclock:是否让饼图按逆时针顺序呈现
-
wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等
-
textprops:设置饼图中文本的属性,如字体大小、颜色等
-
center:指定饼图的中心点位置,默认为原点
-
frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置
返回值
- patches:列表。matplotlib.patches.Wedge实例列表。
- text:列表。matplotlib.text.Text实例label的列表。
- autotexts:列表。A是数字标签的Text实例列表。仅当参数autopct不为None时才返回。
官方链接:https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.pie.html
二、实例应用
①
1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal")) 5 6 recipe = ["375 g flour", 7 "75 g sugar", 8 "250 g butter", 9 "300 g berries"] 10 11 data = [float(x.split()[0]) for x in recipe] 12 ingredients = [x.split()[-1] for x in recipe] 13 14 15 def func(pct, allvals): 16 absolute = int(pct/100.*np.sum(allvals)) 17 return "{:.1f}%\n({:d} g)".format(pct, absolute) 18 19 colors=['red', 'yellow', 'magenta','purple','black'] 20 21 wedges, texts, autotexts = ax.pie(data, autopct=lambda pct: func(pct, data), 22 wedgeprops = {'linewidth': 1, 'edgecolor':'green'},# 设置饼图内外边界的属性值 23 textprops = {'fontsize':12, 'color':'white'}, #设置标签里的字体大小、颜色属性 24 startangle = 180, #初始角度 25 colors = colors) #饼状填充的颜色 26 print(wedges,'\n') 27 print(texts,'\n') 28 print(autotexts,'\n') 29 ax.legend(wedges, ingredients, 30 title="Ingredients", 31 loc="center left", 32 bbox_to_anchor=(1, 0, 0.5, 1)) 33 34 plt.setp(autotexts, size=10, weight="bold") 35 36 ax.set_title("Matplotlib bakery: A pie") 37 38 plt.show()

②
1 # 饼图的绘制 2 # 导入第三方模块 3 import matplotlib.pyplot as plt 4 5 # 构造数据 6 edu = [0.2515,0.3724,0.3336,0.0368,0.0057] 7 labels = ['中专','大专','本科','硕士','其他'] 8 # 添加修饰的饼图 9 explode = [0,0.1,0,0,0] # 生成数据,用于突出显示大专学历人群 10 colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555'] # 自定义颜色 11 12 # 中文乱码和坐标轴负号的处理 13 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] 14 plt.rcParams['axes.unicode_minus'] = False 15 16 # 将横、纵坐标轴标准化处理,确保饼图是一个正圆,否则为椭圆 17 plt.axes(aspect='equal') 18 # 绘制饼图 19 plt.pie(x = edu, # 绘图数据 20 explode=explode, # 突出显示大专人群 21 labels=labels, # 添加教育水平标签 22 colors=colors, # 设置饼图的自定义填充色 23 autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数 24 pctdistance=0.8, # 设置百分比标签与圆心的距离 25 labeldistance = 1.1, # 设置教育水平标签与圆心的距离 26 startangle = 180, # 设置饼图的初始角度 27 radius = 1.2, # 设置饼图的半径 28 counterclock = False, # 是否逆时针,这里设置为顺时针方向 29 wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'},# 设置饼图内外边界的属性值 30 textprops = {'fontsize':10, 'color':'black'}, # 设置文本标签的属性值 31 ) 32 33 # 添加图标题 34 plt.title('失信用户的受教育水平分布') 35 # 显示图形 36 plt.show()

③
1 # 导入第三方模块 2 import pandas as pd 3 # 构建序列 4 data1 = pd.Series({'中专':0.2515,'大专':0.3724,'本科':0.3336,'硕士':0.0368,'其他':0.0057}) 5 # 将序列的名称设置为空字符,否则绘制的饼图左边会出现None这样的字眼 6 data1.name = '' 7 # 控制饼图为正圆 8 plt.axes(aspect = 'equal') 9 # plot方法对序列进行绘图 10 data1.plot(kind = 'pie', # 选择图形类型 11 autopct='%.1f%%', # 饼图中添加数值标签 12 radius = 1, # 设置饼图的半径 13 startangle = 180, # 设置饼图的初始角度 14 counterclock = False, # 将饼图的顺序设置为顺时针方向 15 title = '失信用户的受教育水平分布', # 为饼图添加标题 16 wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'}, # 设置饼图内外边界的属性值 17 textprops = {'fontsize':10, 'color':'black'} # 设置文本标签的属性值 18 ) 19 # 显示图形 20 plt.show()

浙公网安备 33010602011771号