摆盘篇-Day28|占比圆盘:饼图 pie,看占比分布

0 次阅读 2026-10-22 09:46

📖 知识点

1. 饼图适合什么?

饼图(pie):把一个整体切成几块,每块大小代表该类占整体的比例。最适合看 "占比分布"。

💡 生活比喻饼图像一块 "披萨":按人头分,谁吃得最多、占了几成,一看切片大小就清楚。比例分布用它最直观。

2. 基本饼图

 

import matplotlib.pyplot as plt
import pandas as pd

# 各菜系销量占比
df = pd.DataFrame({
    "菜系": ["川菜", "鲁菜", "粤菜"],
    "销量": [140, 90, 50],
})
# 画饼图:用"菜系"做标签、"销量"做占比
df.plot(kind="pie", y="销量", labels=df["菜系"], autopct="%.1f%%", title="各菜系销量占比")
plt.show()

 

  • y="销量":用哪一列算占比

  • labels=df["菜系"]:每块的标签(菜系名)

  • autopct="%.1f%%":在每块上显示占比数字(保留 1 位小数)

3. 常用参数

 

 

 

参数作用

labels

每块的标签

autopct

显示占比数字格式

title

标题

figsize

图大小

⚠️ 易错提醒

  1. 饼图只适合看占比,不适合比精确大小(人眼对面积不如对长度准)

  2. 类别太多时饼图会很乱,建议类别少(3~6 类)时用

  3. labels 要传列表,和 y 列的长度对应

⚔️ Kata 实战任务

任务需求:

  1. 导入 matplotlib 和 pandas

  2. 创建一份 "各菜系销量" 数据

  3. 用 kind="pie" 画饼图,y="销量"、labels 设菜系

  4. 加 autopct 显示占比数字

  5. 显示并打印占比解读

参考代码

 

import matplotlib.pyplot as plt
import pandas as pd

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 各菜系销量数据
df = pd.DataFrame({
    "菜系": ["川菜", "鲁菜", "粤菜"],
    "销量": [140, 90, 50],
})

# 占比圆盘:画饼图
df.plot(kind="pie", y="销量", labels=df["菜系"],
        autopct="%.1f%%", title="各菜系销量占比", figsize=(6, 6))
plt.show()

# 打印占比
total = df["销量"].sum()
print(f"✅ 饼图已生成!总销量{total}")
for _, row in df.iterrows():
    print(f"  {row['菜系']}: {row['销量']}({row['销量']/total*100:.1f}%)")

 

运行输出(弹出一张饼图 + 终端打印):

 

✅ 饼图已生成!总销量280
  川菜: 140(50.0%)
  鲁菜: 90(32.1%)
  粤菜: 50(17.9%)

 

💡 观察:饼图把 280 的销量切成 3 块,川菜占一半 (50%) 最大块,粤菜最小 (17.9%)。占比分布一眼看清。

🧠 思考题

  1. 饼图和柱状图都涉及 "多个类别",它们各自最擅长表达什么?什么时候该用饼图?

  2. 如果菜系有 8 个,还适合用饼图吗?为什么?