Python 饼图入门:3 行代码展示数据占比

饼图的核心作用是直观呈现各部分数据占总体的比例关系 (比如不同产品的市场份额、家庭开支构成、班级成绩等级分布等),通过扇形的大小对比,能快速看出 "谁占比最高""谁占比最低"。借助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() 显示图表

五、常见应用场景

饼图的核心是 "展示占比",适合这些场景:

  1. 构成分析:公司营收构成、产品市场份额、班级学生性别比例
  2. 资源分配:项目预算分配、时间利用占比、库存品类占比
  3. 层级展示:某指标下各子类别占总体的比例(比如总销售额中各区域的占比)
  4. 注意:分类不宜过多(建议不超过 6 类),否则扇形太小,可读性变差
相关推荐
旮旯村CDN1 小时前
深入旮旯村:我用后端架构拆解了VPN的底层逻辑
后端
花酒锄作田1 小时前
FastAPI - Tracking ID的设计
后端
十月南城1 小时前
SQL性能的三要素——索引、执行计划与数据分布的协同影响
后端·程序员
Lear1 小时前
SpringBoot导出PDF终极解决方案实战!
后端
Dwzun1 小时前
基于SpringBoot+Vue的体重管理系统【附源码+文档+部署视频+讲解)
vue.js·spring boot·后端
兔子撩架构1 小时前
Dubbo 的同步服务调用
java·后端·spring cloud
技术不打烊1 小时前
10 分钟搞懂 Go 并发:Goroutine vs Thread,一看就会用
后端
r***11331 小时前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking
u***45751 小时前
SpringBoot Maven 项目 pom 中的 plugin 插件用法整理
spring boot·后端·maven