python 用 matplotlib 绘制圆环形嵌套饼图步骤详解
1、加载库
import matplotlib as mpl
import matplotlib.pyplot as plt
2、单层圆环饼图
# 配置字体,显示中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 配置坐标轴刻度值模式,显示负号
mpl.rcParams['axes.unicode_minus'] = False
# 定义数据
elements = ['面粉', '砂糖', '牛奶', '草莓酱', '坚果']
weight1 = [40, 15, 20, 10, 15]
cs = ['red', 'orange', 'yellow', 'green', 'cyan']
# 对数据进行排序
x = list(zip(elements, weight1, cs))
x.sort(key=lambda e: e[1], reverse=True)
[elements, weight1, cs] = list(zip(*x))
outer_cs = cs
inner_cs = cs
# 初始化图表区
fig = plt.figure(figsize=(12, 8),
facecolor='cornsilk'
)
# 绘制外层圆环
wedges1, texts1, autotexts1 = plt.pie(x=weight1,
autopct='%3.1f%%',
radius=1,
pctdistance=0.85,
startangle=90,
counterclock=False,
colors=outer_cs,
# 锲形块边界属性字典
wedgeprops={'edgecolor': 'white',
'linewidth': 1,
'linestyle': '-'
},
# 锲形块标签文本和数据标注文本的字体属性
textprops=dict(color='k', # 字体颜色
fontsize=14,
family='Arial'
)
)
# 绘制中心空白区域
plt.pie(x=[1],
radius=0.6,
colors=[fig.get_facecolor()]
)
# 设置图例
plt.legend(handles=wedges1,
loc='best',
labels=elements,
title='配料表',
facecolor = fig.get_facecolor(), # 图例框的填充颜色
edgecolor='darkgray',
fontsize=12
)
plt.title(s='果酱面包的配料表占比',
color='blue',
size=15,
weight='bold'
);
图形:
3、内嵌圆环形饼图
# 配置字体,显示中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 配置坐标轴刻度值模式,显示负号
mpl.rcParams['axes.unicode_minus'] = False
# 定义数据
elements = ['面粉', '砂糖', '牛奶', '草莓酱', '坚果']
weight1 = [40, 15, 20, 10, 15]
weight2 = [30, 25, 15, 20, 10]
cs = ['red', 'orange', 'yellow', 'green', 'cyan']
# 对数据进行排序
x = list(zip(elements, weight1, weight2, cs))
x.sort(key=lambda e: e[1], reverse=True)
[elements, weight1, weight2, cs] = list(zip(*x))
# 初始化图表区
fig = plt.figure(figsize=(12, 8),
facecolor='cornsilk'
)
# 绘制外层圆环
wedges1, texts1, autotexts1 = plt.pie(x=weight1,
autopct='%3.1f%%',
radius=1,
pctdistance=0.85,
startangle=90,
counterclock=False,
colors=cs,
# 锲形块边界属性字典
wedgeprops={'edgecolor': 'white',
'linewidth': 1,
'linestyle': '-'
},
# 锲形块标签文本和数据标注文本的字体属性
textprops=dict(color='k', # 字体颜色
fontsize=14,
family='Arial'
)
)
# 绘制内层圆环
wedges2, texts2, autotexts2 = plt.pie(x=weight2,
autopct='%3.1f%%',
radius=0.7,
pctdistance=0.75,
startangle=90,
counterclock=False,
colors=inner_cs,
# 锲形块边界属性字典
wedgeprops={'edgecolor': 'white',
'linewidth': 1,
'linestyle': '-'
},
# 锲形块标签文本和数据标注文本的字体属性
textprops=dict(color='k', # 字体颜色
fontsize=14,
family='Arial'
)
)
# 绘制中心空白区域
plt.pie(x=[1],
radius=0.4,
colors=[fig.get_facecolor()]
)
# 设置图例
plt.legend(handles=wedges1,
loc='best',
labels=elements,
title='配料表',
facecolor = fig.get_facecolor(), # 图例框的填充颜色
edgecolor='darkgray',
fontsize=12
)
plt.title(s='不同果酱面包的配料表比较',
color='blue',
size=15,
weight='bold'
);
图形:
非学无以广才,非志无以成学。
分类:
可视化_统计图形
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架