一、plt.pie() 常用参数plt.pie(x, explodeNone, labelsNone, colorsNone, autopctNone, pctdistance0.6, shadowFalse, labeldistance1.1, startangle0, counterclockTrue, wedgepropsNone, textpropsNone, radius1)参数说明x必选数值序列饼图各部分占比原始数据内部自动计算占比explode元组/列表设置每一块向外偏移距离(0,0.1,0)第2块突出labels列表每一块的类别标签colors列表自定义每一块颜色autopct显示百分比格式字符串%1.1f%%保留1位小数百分比pctdistance百分比文字距离圆心的相对半径默认0.6labeldistancelabel标签距离圆心相对半径默认1.1shadowbool是否开启阴影startangle起始旋转角度逆时针旋转startangle90第一块从正上方开始counterclockboolTrue逆时针排布False顺时针排布wedgeprops字典饼块样式边框宽度、边框颜色textprops字典所有文字字体、大小、颜色radius饼图半径默认1完整演示代码支持中文逐步叠加参数import matplotlib.pyplot as plt # 解决中文显示 plt.rcParams[font.family] [SimHei] plt.rcParams[axes.unicode_minus] False data [35, 25, 20, 20] lab [产品A,产品B,产品C,产品D] fig, axes plt.subplots(2,3,figsize(14,8)) # 1.基础饼图 ax1 axes[0,0] ax1.pie(data) ax1.set_title(1.基础 plt.pie(x)) # 2.增加 labels、startangle ax2 axes[0,1] ax2.pie(data, labelslab, startangle90) ax2.set_title(2.增加 labels startangle90) # 3.增加 autopct 百分比显示 ax3 axes[0,2] ax3.pie(data, labelslab, startangle90, autopct%1.1f%%) ax3.set_title(3.增加 autopct 百分比) # 4.explode突出某一块 shadow阴影 ax4 axes[1,0] exp [0,0.1,0,0] ax4.pie(data, labelslab, explodeexp, autopct%1.1f%%, shadowTrue, startangle90) ax4.set_title(4.explode突出块 shadow阴影) # 5.pctdistance、labeldistance 调整文字位置 ax5 axes[1,1] ax5.pie(data, labelslab, autopct%1.1f%%, startangle90, pctdistance0.4, labeldistance1.3) ax5.set_title(5.pctdistance / labeldistance 调整文字距离) # 6.wedgeprops边框 counterclockFalse顺时针 ax6 axes[1,2] wp {edgecolor:black,linewidth:1.5} ax6.pie(data, labelslab, autopct%1.1f%%, startangle90, counterclockFalse, wedgepropswp) ax6.set_title(6.wedgeprops边框 counterclockFalse顺时针) plt.tight_layout() plt.show()关键注意点x不需要手动算百分比plt.pie内部自动求和计算占比。autopct输出百分号格式字符串必须写%%。wedgeprops设置饼图边框做环形图wedgeprops{width:0.4}width设置环宽度。环形饼图示例片段import matplotlib.pyplot as plt # 解决中文显示 plt.rcParams[font.family] [SimHei] plt.rcParams[axes.unicode_minus] False data [35, 25, 20, 20] lab [产品A,产品B,产品C,产品D] plt.pie(data, labelslab, autopct%1.1f%%, wedgeprops{width:0.7}) plt.title(环形饼图) plt.show()二、分步讲解基础data数据大小之间的关系import matplotlib.pyplot as plt data [1, 1, 1, 1] data [1, 1, 1] data [1] data [2] data [1,1,2] plt.pie(data) plt.show()explode参数饼图展示图形与数据的顺序关系explode与数据的对应关系import matplotlib.pyplot as plt data [15, 40, 10, 10] exp[0,0,0,0] # exp[0,1,0,0] # exp[0,0.2,0.3,0] plt.pie(data,explodeexp) plt.show()labels标签import matplotlib.pyplot as plt data [20, 30, 40, 10] lab [A,B,C,D] plt.pie(data, labelslab) plt.show()autopct 参数饼图上显示百分比文本%%%m.n小结%m.nfm 最小总宽度n 小数位数m0不强制预留占位空格m1最小占 1 字符想要数字前面补 0把 m 写成 02例如%02.0f写法效果autopct%1.0f%%整数百分比如25%autopct%1.1f%%保留 1 位小数如25.3%autopct%1.2f%%保留 2 位小数如25.34%print(|%4.0f%%| % 5) # | 5%| print(|%4.0f%%| % 25) # | 25%| # %1.0f print(|%1.0f%%| %5) # |5%| # %0.0f print(|%0.0f%%| %5) # |5%|import matplotlib.pyplot as plt data [35, 20, 40, 10] labels [A,B,C,D] aut %1.1f%% aut %1.0f%% aut %1.2f%% aut %2.2f%% aut %2.2f% aut %05.2f%% plt.pie(data, labelslabels, autopctaut) plt.show()labeldistance控制labels 分类标签距离饼图圆心距离import matplotlib.pyplot as plt data [35, 20, 40, 10] labels [A,B,C,D] l1 l0.5 l0.2 l1.3 plt.pie(data, labelslabels, labeldistancel) plt.show()pctdistance控制autopct 生成的百分比文字距离圆心的距离必须与autopct配合使用import matplotlib.pyplot as plt data [35, 20, 40, 10] labels [A,B,C,D] p0.5 p1 p0.2 plt.pie(data, labelslabels,autopct%1.1f%%, pctdistancep) plt.show()wedgepropsimport matplotlib.pyplot as plt plt.rcParams[font.family] [SimHei] plt.rcParams[axes.unicode_minus] False data [35,25,25,15] labels [苹果,香蕉,橘子,葡萄] fig, axes plt.subplots(1,4,figsize(18,4)) #1 默认无边框 ax1 axes[0] ax1.pie(data,labelslabels,autopct%1.0f%%,startangle90) ax1.set_title(1.默认 wedgeprops) #2 增加黑色边框 ax2 axes[1] wp2 {edgecolor:black,linewidth:1.5} ax2.pie(data,labelslabels,autopct%1.0f%%,wedgepropswp2,startangle90) ax2.set_title(2.edgecolorlinewidth 添加边框) #3 环形饼图 width0.4 ax3 axes[2] wp3 {edgecolor:white,linewidth:1,width:0.4} ax3.pie(data,labelslabels,autopct%1.0f%%,wedgepropswp3,startangle90,pctdistance0.75) ax3.set_title(3.width0.4 环形饼图) #4 环形透明度 ax4 axes[3] wp4 {edgecolor:black,linewidth:1,width:0.5,alpha:0.7} ax4.pie(data,labelslabels,autopct%1.0f%%,wedgepropswp4,startangle90,pctdistance0.75) ax4.set_title(4.环形alpha透明度) plt.tight_layout() plt.show()textpropsimport matplotlib.pyplot as plt plt.rcParams[font.family] [SimHei] plt.rcParams[axes.unicode_minus] False data [35,25,25,15] labels [苹果,香蕉,橘子,葡萄] fig, axes plt.subplots(1,3,figsize(14,4)) #1 默认样式 ax1 axes[0] ax1.pie(data,labelslabels,autopct%1.0f%%,startangle90) ax1.set_title(1.默认textprops) #2 textprops 设置字号、颜色 ax2 axes[1] tp2 {fontsize:14,color:darkblue} ax2.pie(data,labelslabels,autopct%1.0f%%,textpropstp2,startangle90) ax2.set_title(2.textprops修改字号颜色) #3 文字加粗 环形饼图组合 ax3 axes[2] tp3 {fontsize:13,weight:bold} wp3 {width:0.4,edgecolor:black} ax3.pie(data,labelslabels,autopct%1.0f%%, textpropstp3,wedgepropswp3,pctdistance0.75,startangle90) ax3.set_title(3.textprops 环形饼图) plt.tight_layout() plt.show()