饼图的核心作用是直观呈现各部分数据占总体的比例关系 (比如不同产品的市场份额、家庭开支构成、班级成绩等级分布等),通过扇形的大小对比,能快速看出 "谁占比最高""谁占比最低"。借助matplotlib库,新手也能轻松用 Python 画出清晰的饼图。
一、准备工作:安装并导入库
和之前的柱状图、折线图、散点图一致,核心依赖matplotlib库,若未安装,打开终端 / 命令提示符输入:
bash
pip install matplotlib
安装完成后,在代码中导入库(惯例简写为plt):
python
import matplotlib.pyplot as plt
二、最基础的饼图:3 行核心代码
我们以 "某家庭 monthly 开支构成" 为例,手把手实现第一个饼图。
步骤 1:准备数据
定义两个列表,对应 "分类数据"(比如开支项目)和 "对应占比 / 数值"(比如开支金额,饼图会自动计算占比):
python
# 分类数据(饼图的各部分名称)
expenses = ["房租", "餐饮", "交通", "娱乐", "其他"]
# 对应数值(可直接用金额,饼图自动计算占比)
amounts = [3500, 2000, 800, 1200, 500]
步骤 2:绘制饼图
用plt.pie()函数绘制,核心参数是数值数据和分类标签:
python
# 绘制饼图(核心代码)
plt.pie(amounts, labels=expenses)
步骤 3:显示图表
用plt.show()展示绘制结果:
python
# 显示图表
plt.show()
完整代码(直接运行可用)
python
import matplotlib.pyplot as plt
# 1. 准备数据
expenses = ["房租", "餐饮", "交通", "娱乐", "其他"] # 分类标签
amounts = [3500, 2000, 800, 1200, 500] # 对应数值(金额/数量)
# 2. 绘制饼图
plt.pie(amounts, labels=expenses)
# 3. 显示图表
plt.show()
三、简单优化:让占比更清晰
基础饼图可以添加 "占比百分比""颜色区分""突出某部分",让图表更专业,补充 3 行代码即可:
Python
import matplotlib.pyplot as plt
expenses = ["房租", "餐饮", "交通", "娱乐", "其他"]
amounts = [3500, 2000, 800, 1200, 500]
# 定义颜色列表(可选,让各部分更易区分)
colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FECA57"]
# 突出某部分(比如突出占比最高的房租,explode参数控制偏移距离)
explode = (0.1, 0, 0, 0, 0)
# 绘制饼图:添加百分比、颜色、突出效果、文本格式
plt.pie(
amounts,
labels=expenses,
colors=colors,
explode=explode,
autopct="%1.1f%%", # 显示占比百分比(保留1位小数)
startangle=90 # 饼图起始角度(90度=从正上方开始)
)
plt.title("某家庭月度开支构成图") # 图表标题
plt.axis("equal") # 保证饼图是正圆形(避免默认椭圆)
plt.show()
四、关键函数说明(新手必记)
| 函数 | 作用 | 常用参数 |
|---|---|---|
plt.pie(x) |
绘制饼图(核心) | x = 数值数据;labels = 分类标签;colors = 颜色列表;explode = 突出效果(元组,对应每个部分的偏移量);autopct = 百分比格式(如 "%1.1f%%"= 保留 1 位小数);startangle = 起始角度 |
plt.title() |
设置图表标题 | 字符串(如 "月度开支构成") |
plt.axis("equal") |
保证饼图为正圆形 | 固定参数 "equal",必加(否则可能是椭圆) |
plt.show() |
显示图表 | 无 |
五、常见应用场景
饼图的核心是 "展示占比",适合这些场景:
- 构成分析:公司营收构成、产品市场份额、班级学生性别比例
- 资源分配:项目预算分配、时间利用占比、库存品类占比
- 层级展示:某指标下各子类别占总体的比例(比如总销售额中各区域的占比)
- 注意:分类不宜过多(建议不超过 6 类),否则扇形太小,可读性变差