pin_drop当前位置:知识文库 ❯ 图文
matplotlib饼图pie教程 - 环形图突出显示百分比标注
一、概述
plt.pie()用于绘制饼图,通过扇形面积占比展示各部分与整体的关系。饼图适合展示分类数据的比例分布,当分类数量较少(3-7个)时效果最佳。
matplotlib的pie()支持突出显示、百分比标注、阴影效果等丰富的自定义选项,还可以绘制环形图(甜甜圈图)等变体。
二、基本语法
代码示例
plt.pie(x, labels=None, autopct=None, **kwargs)
x是各扇区的数值数组,matplotlib会自动计算占比。autopct参数可以自动显示百分比。
三、参数说明
四、代码示例
示例1:基本饼图
绘制编程语言市场份额的基本饼图:
代码示例
import matplotlib.pyplot as plt
# 数据
labels = ['Python', 'Java', 'C++', 'JavaScript', 'Other']
sizes = [35, 25, 15, 20, 5]
# 绘制基本饼图
plt.figure(figsize=(8, 6))
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title('Programming Language Market Share')
plt.savefig('basic_pie.png', dpi=100, bbox_inches='tight')
print("基本饼图已保存")示例2:突出显示与自定义样式
使用explode突出显示重要扇区,添加阴影和自定义颜色:
代码示例
import matplotlib.pyplot as plt
# 数据
labels = ['Housing', 'Food', 'Transport', 'Entertainment', 'Savings', 'Other']
sizes = [35, 20, 15, 10, 12, 8]
colors = ['#2196F3', '#4CAF50', '#FF9800', '#9C27B0', '#00BCD4', '#FFC107']
explode = (0.05, 0, 0, 0, 0.1, 0) # 突出住房和储蓄
plt.figure(figsize=(9, 7))
wedges, texts, autotexts = plt.pie(
sizes,
labels=labels,
autopct='%1.1f%%',
startangle=140,
colors=colors,
explode=explode,
shadow=True,
pctdistance=0.8,
wedgeprops={'edgecolor': 'white', 'linewidth': 2}
)
# 设置百分比文本样式
for autotext in autotexts:
autotext.set_fontsize(10)
autotext.set_fontweight('bold')
plt.title('Monthly Budget Distribution', fontsize=14, fontweight='bold')
plt.savefig('styled_pie.png', dpi=100, bbox_inches='tight')
print("样式饼图已保存")示例3:环形图(甜甜圈图)
使用wedgeprops的width参数创建环形图,中心可放置汇总信息:
代码示例
import matplotlib.pyplot as plt
# 数据
labels = ['Direct', 'Organic Search', 'Social Media', 'Referral', 'Email']
sizes = [30, 25, 20, 15, 10]
colors = ['#2196F3', '#4CAF50', '#FF9800', '#9C27B0', '#F44336']
fig, ax = plt.subplots(figsize=(8, 8))
# 环形图:通过wedgeprops设置宽度
wedges, texts, autotexts = ax.pie(
sizes,
labels=labels,
autopct='%1.1f%%',
colors=colors,
startangle=90,
pctdistance=0.82,
wedgeprops={'width': 0.4, 'edgecolor': 'white', 'linewidth': 2}
)
# 中心文本
ax.text(0, 0, 'Traffic\nSources', ha='center', va='center',
fontsize=16, fontweight='bold', color='#333333')
ax.set_title('Website Traffic Sources', fontsize=14, fontweight='bold', pad=20)
plt.savefig('donut_pie.png', dpi=100, bbox_inches='tight')
print("环形图已保存")五、实际应用场景
-
市场报告:使用饼图展示各品牌市场份额,突出主要竞争者
-
财务分析:使用饼图展示支出构成比例,帮助识别主要开支项
-
流量分析:使用环形图展示网站流量来源分布,中心显示总量或关键指标
六、饼图变体对比
七、注意事项
-
分类数量:饼图分类不宜超过7个,过多分类应合并为"其他"或改用柱状图
-
转义字符:autopct='%1.1f%%'中的%%是转义字符,输出一个%符号
-
环形图参数:环形图通过wedgeprops={'width': 0.4}实现,width为环的宽度比例
小贴士:在数据可视化最佳实践中,当需要精确比较数值大小时,柱状图通常比饼图更有效。饼图最适合展示"部分占整体的比例"这概念,而不是精确的数值对比。
八、小结
-
pie()通过扇形面积展示各部分占比,适合3-7个分类
-
autopct参数自动计算并显示百分比
-
explode参数突出显示特定扇区,shadow添加阴影效果
-
环形图通过wedgeprops={'width': 0.4}实现,中心可放置汇总信息
九、练习题
练习1
绘制一个饼图,展示5种编程语言的使用比例,添加百分比标注和阴影效果。
练习2
绘制一个突出显示最大扇区的饼图,使用自定义颜色列表。
练习3
绘制一个环形图,在中心显示总计数值。
常见问题
饼图和柱状图应该如何选择?
当需要展示"部分占整体的比例"且分类较少(3-7个)时,使用饼图。当需要精确比较数值大小或分类较多时,使用柱状图。柱状图在视觉比较上更准确。
如何让饼图从12点方向开始排列?
使用startangle=90参数。matplotlib默认从3点方向(0度)开始,startangle=90会将起始点旋转到12点方向。可以配合counterclock=True/False控制顺时针或逆时针排列。
如何创建嵌套饼图(多层环形图)?
调用两次pie(),第一次设置较大的radius,第二次设置较小的radius。例如:第一次radius=1.0, width=0.3,第二次radius=0.65, width=0.3。两层使用不同的数据和颜色,实现层级数据的可视化。
饼图中的百分比如何保留一位小数?
使用autopct='%1.1f%%'格式字符串。%1.1f表示浮点数,整数部分不限制宽度,小数部分保留1位。如果需要保留2位小数,使用'%1.2f%%'。注意%%是转义字符,表示输出一个实际的%符号。
本文涉及AI创作
内容由AI创作,请仔细甄别