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 类),否则扇形太小,可读性变差
相关推荐
SamChan906 分钟前
用Python+Requests批量翻译PDF:从脚本到调度
后端·python·microsoft·ai·pdf·机器翻译
草莓熊Lotso7 分钟前
【LangChain】核心技术:嵌入模型与向量存储完全指南
服务器·网络·python·langchain
zyplayer-doc8 小时前
VuePress类静态文档站和动态知识库怎么选:两种技术路线的适用场景
javascript·人工智能·后端·安全·智能手机
leisoo80978 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
WangYan20228 小时前
基于XGBoost与AI的生态—地学多源数据建模:植被与土地利用识别、土壤碳氮空间预测、生物多样性驱动机制、土壤微生物功能预测、生态退化与风险识别
python·机器学习·xgboost
用户938515635079 小时前
从前后端分离到前端接口工程:React + MockJS + Vite 解析
前端·后端·全栈
码事漫谈10 小时前
世界由什么构成——这个问题比你想的更缠人
后端
摇滚侠10 小时前
《SpringBoot 3:入门与应用实战》第 2 章 IOC 思想与实现 阅读笔记 1
spring boot·笔记·后端
金銀銅鐵10 小时前
[Python] 借助 turtle 逐字展示唐诗《金缕衣》
python