【技术专题】Matplotlib3 Python 数据可视化 - Matplotlib3 绘制饼状图(Pie)

大家好,我是锋哥。最近连载更新《Matplotlib3 Python 数据可视化》技术专题。

本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置,绘图参数及主要函数,以及Matplotlib基础绘图,和Matplotlib高级绘图。同时也配套视频教程 《2026版 Matplotlib3 Python 数据可视化 视频教程》

饼状图用于展示分类数据的比例关系,通过扇形面积表示各部分在整体中的占比,适合展示不超过7个类别的构成情况。

核心函数:plt.pie()

ini 复制代码
plt.pie(
    x,               # 数据数组(各部分的数值)
    labels=None,      # 各部分标签
    autopct=None,     # 百分比显示格式
    colors=None,      # 颜色列表
    explode=None,     # 突出显示某些部分
    shadow=False,     # 是否添加阴影
    startangle=0,     # 起始角度(0表示从x轴开始)
    wedgeprops=None   # 扇形属性设置
)

关键参数详解

参数 说明 示例值
autopct 百分比显示格式 '%1.1f%%', '%1.0f%%'
explode 突出显示部分 (0, 0.1, 0)
startangle 起始旋转角度 90(从y轴开始)
pctdistance 百分比标签位置 0.85(中心为0,边缘为1)
labeldistance 标签位置 1.1
wedgeprops 扇形属性 {'linewidth': 2, 'edgecolor': 'black'}
textprops 文本属性 {'fontsize': 12, 'color': 'darkblue'}

我们来几个示例:

1,基础饼状图

ini 复制代码
import matplotlib
import matplotlib.pyplot as plt
​
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
​
sizes = [25, 35, 20, 20]
labels = ['苹果', '香蕉', '樱桃', '枣']
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
​
plt.pie(sizes, labels=labels, colors=colors,
        autopct='%1.1f%%', startangle=90)
plt.title("水果配送")
plt.show()

2,突出显示部分+阴影效果

ini 复制代码
import matplotlib
import matplotlib.pyplot as plt
​
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
​
sizes = [25, 35, 20, 20]
labels = ['苹果', '香蕉', '樱桃', '枣']
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
​
explode = (0, 0.1, 0, 0)  # 突出第二个部分(Bananas)
​
plt.pie(sizes, explode=explode, labels=labels,
        colors=colors, autopct='%1.1f%%',
        shadow=True, startangle=135)
plt.axis('equal')  # 确保圆形不变形
plt.title("突出部分")
plt.show()

3,环形图(甜甜圈图)

ini 复制代码
import matplotlib
import matplotlib.pyplot as plt
​
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
​
sizes = [25, 35, 20, 20]
labels = ['苹果', '香蕉', '樱桃', '枣']
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
​
plt.pie(sizes, labels=labels, colors=colors,
        wedgeprops={'width': 0.4, 'edgecolor': 'white', 'linewidth': 3},
        autopct='%1.0f%%', pctdistance=0.8)
​
# 中心添加文字
plt.text(0, 0, "水果", ha='center', va='center', fontsize=14)
plt.title("甜甜圈图")
​
plt.show()

4,自定义标签和百分比样式

ini 复制代码
import matplotlib
import matplotlib.pyplot as plt
​
# 设置matplotlib使用黑体显示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
​
sizes = [25, 35, 20, 20]
labels = ['苹果', '香蕉', '樱桃', '枣']
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
​
textprops = {'fontsize': 10, 'color': 'darkblue', 'weight': 'bold'}
​
plt.pie(sizes, labels=labels, colors=colors,
        autopct=lambda p: f'{p:.1f}% ({int(p * sum(sizes) / 100)})',
        startangle=180, textprops=textprops,
        wedgeprops={'linewidth': 2, 'edgecolor': 'white'})
​
plt.title("自定义标签")
​
plt.show()
相关推荐
你不是我我7 小时前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
雪碧聊技术8 小时前
大模型爆火!Java后端如何抓住Agent全栈开发的风口
java·大模型·agent·全栈开发
逻辑驱动的ken9 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
AI人工智能+电脑小能手10 小时前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ11 小时前
通过java后端代码来实现给word内容补充格式文本内容控件,以及 设置控件的标记和标题
java·c#·word
無限進步D12 小时前
Java 面向对象高级 接口
java·开发语言
逸Y 仙X12 小时前
文章二十七:ElasticSearch ES查询模板(Search Template)高效复用实战
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
二哈赛车手13 小时前
新人笔记---Spring AI的Advisor以及其底层机制讲解(涉及源码),包含一些遇见的Spring AI的Advisor缺陷问题的解决方案
java·人工智能·spring boot·笔记·spring
AC赳赳老秦13 小时前
接口测试自动化:用 OpenClaw 对接 Postman,实现批量回归测试、测试报告自动生成与推送
java·人工智能·python·算法·elasticsearch·deepseek·openclaw