其他
Python可视化29|matplotlib-饼图(pie)
"pythonic生物人"的第74篇分享
本文详细介绍python 使用matplotlib.pyplot.pie绘制饼图(pie)
本文快速预览
更多好文,欢迎随缘关注@pythonic生物人
目录
默认参数
修改配色
饼图某部分突出or爆炸显示
格式化显示每部分数据
圈中文字与中心距离
周围标签名与中心距离
饼图开始角度
饼图半径
顺时针or逆时针显示
饼图框属性设置
饼图中文本属性
饼图高度个性化设置
添加图例
matplotlib.pyplot.pie
语法:matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)
默认参数
import matplotlib.pyplot as plt
import palettable
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],#指定绘图数据
labels=['A','B','C'],#为饼图添加标签说明
)
plt.show()
修改配色
关于颜色的使用可看之前的文章,有详细介绍:一文搞定python颜色盘
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],#修改饼图颜色,传入颜色list
#colors=plt.cm.get_cmap('Set3')(range(5)),#使用matplotlib自带颜色
#colors=palettable.cartocolors.qualitative.Bold_9.mpl_colors,#使用palettable配色库
)
plt.show()
饼图某部分突出or爆炸显示
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
explode=(0, 0.2, 0),#某部分突出显示,值越大,距离中心越远,该法可解决饼图字体重叠的问题
)
plt.show()
格式化显示每部分数据
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',#格式化输出百分比
)
plt.show()
圈中文字与中心距离
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
pctdistance=0.8,#百分比标签与圆心的距离
)
plt.show()
周围标签名与中心距离
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
labeldistance=1.5,#labels与圈边界的距离,默认为1.1
)
plt.show()
饼图开始角度
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
startangle=45,#饼图的开始角度,默认为0度
)
plt.show()
饼图半径
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
radius=1.3,#饼图半径,默认为1
)
plt.show()
顺时针or逆时针显示
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
counterclock=False,#关闭逆时针显示
)
plt.show()
饼图框属性设置
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
#设置框属性
wedgeprops={'edgecolor':'r',#内外框颜色
'linestyle':'--',#线型
'alpha':0.5,#透明度
#更多参考matplotlib.patches.Wedge
}
)
plt.show()
饼图中文本属性
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
#饼图中文本的属性
textprops={'color':'r',#文本颜色
'fontsize':16,#文本大小
'fontfamily':'Microsoft JhengHei',#设置微软雅黑字体
#更多参考matplotlib.pyplot.text
}
)
plt.show()
饼图高度个性化设置
每一部分特异设置
饼图中每一部分都可以拆开单独个性化设置。
plt.pie返回以下三个对象,相应个性化设置都可参考Matplolib详细文档:
matplotlib.patches.Wedge matplotlib.text.Text matplotlib.text.Text
my_dpi=96
plt.figure(figsize=(680/my_dpi,680/my_dpi),dpi=my_dpi)
patches, texts, autotexts = plt.pie(x=[1,2,3],#返回三个对象
labels=['A','B','C'],
colors=["#d5695d", "#5d8ca8", "#65a479"],
autopct='%.2f%%',
explode=(0.1,0,0)
)
texts[0].set_color('r')#修改A标签的颜色
texts[1].set_size('20')#修改B的大小
autotexts[2].set_color('b')#修改50.00%的颜色
#matplotlib.patches.Wedge
patches[0].set_alpha(0.3)#A组分设置透明度
patches[2].set_hatch('|')#C组分添加网格线
patches[1].set_hatch('x')
plt.legend(patches, ['A','B','C'],#添加图例
title="Pie Learning",
loc="center left",
fontsize=15,
bbox_to_anchor=(1, 0, 0.5, 1))
plt.title('Your pie',size=20)
plt.show()
添加图例
#这里简单介绍,后面单独开一篇写图例设置
from string import ascii_letters
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
patches, texts, autotexts = plt.pie(x=range(1,12),
labels=list(ascii_letters[26:])[0:11],
colors=palettable.cartocolors.qualitative.Bold_9.mpl_colors,
autopct='%.2f%%',
)
plt.legend(patches, list(ascii_letters[26:])[0:11],#添加图例
title="Pie Learning",
loc="center left",
bbox_to_anchor=(1, 0, 0.5, 1),
ncol=2,#控制图例中按照两列显示,默认为一列显示,
)
参考资料
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pie.html?highlight=pie#matplotlib.pyplot.pie
更多好文,欢迎随缘关注@pythonic生物人
"点赞"、"在看"鼓