P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器本文档基于 Matplotlib 从零实现饼图的绘制涵盖环境准备、pie()函数核心参数详解、完整代码实现及逐行解析、运行结果展示等内容。通过一个电商公司销售渠道占比的实际案例帮助读者深入理解饼图的绘制方法和参数配置技巧 This document implements pie chart drawing from scratch using Matplotlib, covering environment setup, detailed parameter explanation of thepie()function, complete code implementation with line-by-line analysis, and result visualization. Through a real-world e-commerce sales channel case study, it helps readers deeply understand pie chart drawing techniques and parameter configuration 术语表 / Terminology术语 / Term说明 / DescriptionPie Chart饼图用于展示各类别在总体中所占比例的圆形统计图每个扇形Wedge代表一个类别Wedge扇形饼图中的每一个扇形区域代表一个数据类别及其在整体中的占比explode突出将某个扇形从饼图中心向外偏移的效果用于强调特定数据autopct自动百分比在扇形上自动显示百分比数值的参数支持格式化字符串startangle起始角度饼图第一个扇形开始绘制的角度位置默认从 x 轴正方向3 点钟方向开始labeldistance标签距离类别标签与饼图中心的相对距离以半径为基准的比值pctdistance百分比距离百分比文本与饼图中心的相对距离以半径为基准的比值章节阅读路线图 ️ / Chapter Reading Roadmap环境准备 / Environment Setup → 确认 Matplotlib 安装并导入必要库饼图基础概念 / Basic Concepts of Pie Chart → 了解饼图的定义、适用场景和核心要素核心参数详解 / Core Parameters Explained → 深入理解pie()函数的关键参数及其作用完整代码实现 / Complete Code Implementation → 电商渠道占比案例的完整代码代码逐行解析 / Line-by-Line Code Analysis → 详细拆解每一步的计算和数据流向运行结果展示 / Result Visualization → 展示生成的饼图效果总结 / Summary → 回顾核心要点和参数配置技巧1. 环境准备 / Environment SetupNote:本章确认 Matplotlib 安装并导入必要库 / This chapter confirms Matplotlib installation and imports required libraries. 在开始绘图之前请确保你的环境中已经安装了 Matplotlib。如果还没有安装可以通过以下命令快速安装pipinstallmatplotlib 绘制饼图通常只需要导入 Matplotlib 的 pyplot 模块同时为了处理中文显示问题还需要进行字体配置importmatplotlib.pyplotasplt# 导入 pyplot 模块提供类似 MATLAB 的绘图接口 importnumpyasnp# 导入 NumPy 库用于数值计算和数组操作 # 设置 Matplotlib 支持中文显示 plt.rcParams[font.sans-serif][SimHei,DejaVu Sans]# 设置中文字体为黑体英文字体为 DejaVu Sansplt.rcParams[axes.unicode_minus]False# 解决坐标轴负号显示为方块的问题 ✅matplotlib.pyplotMatplotlib 的核心模块提供类似 MATLAB 的绘图接口numpy数值计算库用于处理数据数组rcParams⚙️Matplotlib 的运行时配置参数字典用于全局设置字体、样式等 如果你的系统没有 SimHei 字体也可以使用其他中文字体如Microsoft YaHei微软雅黑或KaiTi楷体具体取决于你的操作系统。参考资料matplotlib.pyplot.pie 官方文档 – Matplotlib ⭐值得阅读Matplotlib 饼图 – 菜鸟教程Matplotlib 中文显示 – 菜鸟教程2. 饼图基础概念 / Basic Concepts of Pie ChartNote:本章介绍饼图的定义、适用场景和核心要素 / This chapter introduces the definition, use cases, and core elements of pie charts.2.1 什么是饼图 / What is a Pie Chart?饼图Pie Chart是一种圆形统计图表它将一个圆划分为多个扇形Wedge每个扇形的面积代表该类别在整体中所占的比例。饼图的核心思想是“整体与部分的关系”—— 整个圆代表 100%整体每个扇形代表一个类别部分。直观类比想象一个完整的披萨被切成不同大小的块整个披萨 总销售额100%每块披萨的大小 每个渠道的销售额占比块越大 该渠道贡献的销售额越多2.2 适用场景 / When to Use Pie Charts饼图最适合展示“部分占整体的比例关系”特别是在以下场景场景示例说明市场份额分析各电商平台的市场占有率直观对比谁大谁小预算分配各部门的预算占比展示资源分配结构用户画像不同年龄段的用户比例展示构成分布时间分配⏰各项活动耗时占比展示时间投入结构2.3 使用注意事项 ⚠️ / Usage Considerations饼图虽然直观但有以下局限性类别不宜过多建议不超过 5-6 个类别太多会使扇形过于拥挤差异不宜过小如果比例接近如 48% vs 52%饼图难以区分建议使用条形图不适合比较多个总体饼图只能展示一个整体内部的比例多个整体对比应使用堆叠条形图参考资料Pie charts – Matplotlib Documentation ⭐值得阅读Matplotlib 饼图 – 菜鸟教程3. 核心参数详解 / Core Parameters ExplainedNote:本章深入讲解pie()函数的关键参数及其作用 / This chapter explains the key parameters of thepie()function in detail.plt.pie()是 Matplotlib 中用于绘制饼图的核心函数其基本语法如下plt.pie(x,explodeNone,labelsNone,colorsNone,autopctNone,pctdistance0.6,shadowFalse,labeldistance1.1,startangle0,radius1,counterclockTrue,wedgepropsNone,textpropsNone)3.1 核心参数速查表 / Core Parameters Quick Reference参数类型默认值说明xarray-like必填每个扇形的数值函数内部自动计算x / sum(x)作为比例explodearray-likeNone每个扇形偏离中心的距离以半径比例为单位用于突出显示labelslistNone每个扇形的标签文字colorslist自动每个扇形的颜色支持十六进制、RGB、颜色名称等autopctstr/callableNone百分比显示格式如%1.1f%%表示保留 1 位小数startanglefloat0起始角度0 表示从 x 轴正方向3 点钟方向开始labeldistancefloat1.1标签与圆心距离半径的倍数1 在圆外1 在圆内pctdistancefloat0.6百分比文本与圆心距离半径的倍数3.2 关键参数详解 / Key Parameters Deep Dive3.2.1explode参数 —— 突出显示特定扇形 explode参数是一个与x等长的数组每个值表示对应扇形向外偏移的距离以半径为基准0不偏移0向外偏移指定距离值越大扇形偏离中心越远explode(0,0,0.1,0,0)# 第3个扇形索引2向外偏移 0.1 倍半径 直观类比就像从披萨中抽出一块让这块更醒目地展示在盘子上图解读左图所有扇形紧贴圆心无法突出任何渠道右图中拼多多绿色扇形向外偏移 0.1 倍半径立即成为视觉焦点读者可以第一时间关注到这个渠道。图片来源本文档配套生成 – Python-基础技术3.2.2autopct参数 —— 显示百分比 autopct控制百分比文本的显示格式格式字符串效果示例输出%d%%整数百分比30%%1.1f%%保留 1 位小数30.0%%1.2f%%保留 2 位小数30.00%⚠️注意%%中的第一个%是转义字符表示输出一个字面上的百分号%图解读左图没有设置 autopct读者只能通过扇形面积大致判断比例无法获取精确数值右图设置autopct%1.1f%%后每个扇形内部直接显示保留 1 位小数的百分比数据一目了然。图片来源本文档配套生成 – Python-基础技术3.2.3startangle参数 —— 控制起始角度 startangle决定饼图从哪个方向开始绘制第一个扇形0默认从 x 轴正方向3 点钟或 East 方向开始90从 y 轴正方向12 点钟或 North 方向开始180从 x 轴负方向9 点钟方向开始270从 y 轴负方向6 点钟方向开始直观类比就像转动一个转盘改变起始指针的位置图解读左图从正右方3 点钟方向开始绘制天猫扇形出现在右侧右图旋转 90 度后从正上方12 点钟方向开始天猫扇形出现在顶部。startangle90 的布局更符合从上到下的阅读习惯是大多数商业报告的首选。图片来源本文档配套生成 – Python-基础技术3.2.4labeldistance和pctdistance—— 控制文本位置 这两个参数控制标签和百分比文本与圆心的距离以半径的比值表示labeldistance1.1默认标签在圆外距离边缘 0.1 倍半径的位置pctdistance0.6默认百分比文本在扇形内部距离圆心 0.6 倍半径的位置当labeldistance 1时标签显示在圆内当pctdistance 1时百分比显示在圆外。图解读左图标签在圆外距离圆心 1.1 倍半径与百分比文本内外呼应、布局清晰右图标签移入圆内0.6 倍半径虽然节省了外部空间但可能导致标签与百分比文本重叠。在实际应用中labeldistance1.1是更安全的选择。图片来源本文档配套生成 – Python-基础技术图解读左图百分比文本距离圆心 0.6 倍半径位于扇形内部靠近中心右图距离 0.8 倍半径百分比外移到扇形中部偏外位置。选择 pctdistance0.8 可以让百分比文本与标签保持平衡避免过于拥挤。图片来源本文档配套生成 – Python-基础技术参考资料matplotlib.pyplot.pie 官方参数文档 – Matplotlib ⭐值得阅读Pie charts 示例 – Matplotlib Gallery ⭐值得阅读Python matplotlib 饼图参数详解 – 博客园4. 完整代码实现 / Complete Code ImplementationNote:本章展示电商渠道销售额占比的饼图完整代码 / This chapter presents the complete code for the e-commerce channel sales pie chart.4.1 案例数据 / Case Data某电商公司2026 年第二季度Q2各渠道销售额占比数据如下渠道销售额占比说明天猫30%传统电商主力渠道京东25%综合电商平台拼多多20%需要突出显示的渠道抖音15%直播电商新渠道快手10%短视频电商渠道4.2 完整代码 / Complete Codeimportmatplotlib.pyplotasplt# 导入 pyplot 模块提供绘图接口 importnumpyasnp# 导入 NumPy用于数组运算 # 1. 设置中文字体 plt.rcParams[font.sans-serif][SimHei,DejaVu Sans]# 设置黑体为默认字体确保中文正常显示plt.rcParams[axes.unicode_minus]False# 解决负号显示为方块的问题 ✅# 2. 准备数据 # 各渠道名称数据流动字符串列表 → labels 参数labels[天猫,京东,拼多多,抖音,快手]# 各渠道销售额占比%数据流动[30, 25, 20, 15, 10] → pie() 自动归一化sizes[30,25,20,15,10]# 自定义颜色使用柔和的配色方案 colors[#ff9999,#66b3ff,#99ff99,#ffcc99,#c2c2f0]# 3. 设置突出效果 # explode 参数第3个渠道拼多多索引2突出 0.1 倍半径# 数据流动[0, 0, 0.1, 0, 0] → 拼多多扇形偏离中心 0.1 倍半径explode(0,0,0.1,0,0)# 4. 绘制饼图 plt.pie(# 调用 pie() 绘制饼图sizes,# x各渠道的数值数据 explodeexplode,# explode突出拼多多渠道 labelslabels,# labels各渠道的名称标签 ️colorscolors,# colors自定义颜色方案 autopct%1.1f%%,# autopct显示百分比保留 1 位小数 startangle90,# startangle从 12 点钟方向开始绘制 labeldistance1.1,# labeldistance标签距离圆心 1.1 倍半径 pctdistance0.8# pctdistance百分比距离圆心 0.8 倍半径 )# 5. 添加标题和美化 ️plt.title(2026年Q2销售渠道占比分析)# 设置饼图标题说明图表内容 ️plt.axis(equal)# 设置坐标轴等比例确保饼图为正圆形 # 6. 显示饼图 ️plt.show()# 渲染并显示饼图Jupyter 中可省略️提示如果需要在非交互式环境中保存图片可以使用plt.savefig(pie_chart.png, dpi150, bbox_inchestight)替代plt.show()。参考资料Pie charts 示例代码 – Matplotlib Gallery ⭐值得阅读Matplotlib 饼图 – 菜鸟教程Python 绘制饼图详解 – 知乎5. 代码逐行解析 / Line-by-Line Code AnalysisNote:本节详细拆解每一步的操作和数据流向 / This section breaks down each step’s operation and data flow.第1步设置中文字体 plt.rcParams[font.sans-serif][SimHei,DejaVu Sans]# 设置中文字体为黑体 SimHeiplt.rcParams[axes.unicode_minus]False# 修复负号显示为方块的问题 ✅Matplotlib 默认字体不支持中文直接使用中文标签会出现乱码显示为小方块。通过修改rcParams配置font.sans-serif设置无衬线字体列表SimHei黑体排在第一优先级axes.unicode_minus设置为False解决负号显示异常为什么需要设置中文字体Matplotlib 的默认字体是 DejaVu Sans它不包含中文字符集。SimHei黑体是 Windows 系统自带的中文字体也可以使用Microsoft YaHei微软雅黑。第2步准备数据 labels[天猫,京东,拼多多,抖音,快手]# 各渠道名称sizes[30,25,20,15,10]# 各渠道销售额占比colors[#ff9999,#66b3ff,#99ff99,#ffcc99,#c2c2f0]# 自定义颜色数据准备要点sizes 数据可以是绝对值如销售额金额也可以是百分比值。pie()内部自动执行x / sum(x)归一化labels 顺序必须与 sizes 一一对应colors 数量必须与 sizes 数量一致这里 5 个渠道对应 5 种颜色颜色格式使用十六进制颜色码#RRGGBB也可以使用颜色名称如red、blue或 RGB 元组第3步设置突出效果 explode(0,0,0.1,0,0)# 第3个渠道拼多多索引2突出 0.1 倍半径explode 的工作原理每个元素的值代表对应扇形向外偏移的距离以半径为基准0 不偏移0.1 向外偏移 0.1 倍半径值越大突出越明显直观类比就像从完整的披萨中抽出一块让它单独站出来吸引注意力。在电商场景中突出拼多多可以让读者快速关注到这个特定渠道的表现。第4步绘制饼图 这是最核心的一步plt.pie()的每个参数都有明确的作用plt.pie(sizes,# x原始数据函数自动计算比例explodeexplode,# explode突出拼多多渠道labelslabels,# labels各渠道名称colorscolors,# colors自定义配色autopct%1.1f%%,# autopct保留 1 位小数的百分比startangle90,# startangle从 12 点钟方向开始labeldistance1.1,# labeldistance标签在圆外 0.1 倍半径处pctdistance0.8# pctdistance百分比文本在扇形内部)参数详解autopct%1.1f%%这是一个格式化字符串其中%1.1f浮点数格式总宽度为 1保留 1 位小数%%输出一个百分号第一个%是转义字符示例20.0→20.0%startangle90默认startangle0从 x 轴正方向3 点钟或 East开始。设置为 90 表示逆时针旋转 90 度即从 y 轴正方向12 点钟或 North开始。这样第一个类别天猫会出现在饼图正上方更符合阅读习惯。labeldistance1.1和pctdistance0.8这两个参数都以半径为基准的相对距离labeldistance1.1标签位于圆外1.0 是边缘多出的 0.1 在圆外pctdistance0.8百分比位于扇形内部距离圆心 0.8 倍半径处第5步添加标题和美化 ️plt.title(2026年Q2销售渠道占比分析)# 设置标题说明图表主题plt.axis(equal)# 设置坐标轴等比例确保饼图为正圆形plt.axis(equal)这是饼图绘制中非常关键的一步。如果不设置Matplotlib 默认的坐标轴比例会导致饼图显示为椭圆形。axis(equal)强制 x 轴和 y 轴使用相同比例确保饼图呈现出完美的正圆形。直观类比就像用圆规画圆时确保两脚间距不变否则画出来的是椭圆而不是正圆。图解读左图没有设置axis(equal)饼图被拉伸为椭圆形视觉上歪曲了各渠道的占比关系右图设置axis(equal)后饼图为完美的正圆形各扇区的面积比例准确反映数据。这是绘制饼图时最容易忽略但最关键的一步。图片来源本文档配套生成 – Python-基础技术第6步显示饼图 ️plt.show()# 渲染并显示图像plt.show()将缓冲区中的图形渲染到屏幕上。在 Jupyter Notebook 中这步可以省略Notebook 自动显示最后绘制的图形但在 Python 脚本中必须调用plt.show()或plt.savefig()才能看到图形。参考资料Matplotlib 中文乱码问题解决 – CSDNMatplotlib rcParams 配置详解 – CSDN6. 运行结果展示 / Result VisualizationNote:本章展示生成的饼图效果 / This chapter shows the resulting pie chart.运行上述代码后将生成一个展示 2026 年 Q2 各渠道销售额占比的饼图天猫30%占比最高使用粉色#ff9999京东25%第二高使用蓝色#66b3ff拼多多20%被突出显示从饼图中心分离使用绿色#99ff99抖音15%使用橙色#ffcc99快手10%占比最小使用紫色#c2c2f0饼图解读要点扇形面积扇形面积越大该渠道的销售额占比越高突出效果拼多多扇形与主体分离是最先吸引视觉注意力的部分百分比标签每个扇形内部显示精确到 1 位小数的百分比渠道标签圆外标注各渠道名称便于识别正圆形由于设置了axis(equal)饼图为完美的正圆Key Takeaways / 核心要点Pie chart visualizes proportions— each wedge represents a category’s share / 饼图直观展示比例关系每个扇形代表一个类别的占比Explode highlights key data— offset the wedge to draw attention / explode 参数突出关键数据点通过偏移吸引注意力startangle90 aligns with convention— starting from 12 o’clock is intuitive / 从 12 点钟方向开始绘制更符合阅读习惯axis(‘equal’) ensures circular shape— prevents distortion into an ellipse / 等比例约束确保正圆形避免视觉变形参考资料Creating Pie Charts in Python with Matplotlib – Canard AnalyticsPlot a Pie Chart in Python using Matplotlib – GeeksforGeeks7. 总结 / Summary本节我们完成了 Matplotlib 饼图的绘制从案例数据到完整代码实现核心要点回顾步骤操作代码对应1️⃣设置中文字体plt.rcParams[font.sans-serif] [SimHei, ...]2️⃣准备数据labels [...],sizes [...],colors [...]3️⃣设置突出explode (0, 0, 0.1, 0, 0)4️⃣绘制饼图plt.pie(sizes, explode..., labels..., ...)5️⃣添加标题和约束plt.title(...),plt.axis(equal)️6️⃣显示图表plt.show()️关键理解 饼图的核心是展示部分与整体的比例关系使用pie()函数绘制explode参数通过偏移突出特定类别让数据站出来说话startangle90从 12 点钟方向开始更符合视觉阅读习惯labeldistance和pctdistance分别控制标签和百分比的显示位置plt.axis(equal)确保饼图为正圆形是绘制饼图的标准实践 自定义颜色方案让图表更具专业感配色应柔和协调参考资料matplotlib.pyplot.pie 官方文档 – Matplotlib ⭐值得阅读Pie charts – Matplotlib Gallery ⭐值得阅读Matplotlib 饼图 – 菜鸟教程Creating Pie Charts in Matplotlib – Canard AnalyticsPlot a Pie Chart in Python using Matplotlib – GeeksforGeeksPython matplotlib 饼图参数详解 – 博客园最后更新时间2026-06-29