【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】

【📊plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】!

在这里插入图片描述

利用Matplotlib进行数据可视化示例


在这里插入图片描述

🌵文章目录🌵

  • 🎨 一、饼图初探:基本概念与用途
  • 💡 二、深化理解:饼图的定制与优化
  • 💫 三、交互式体验:动态饼图制作
  • 📚 四、参考文档
  • 🌳 五、结尾

🎨 一、饼图初探:基本概念与用途

  饼图,作为一种常见的数据可视化工具,能够直观地展示数据的分布和比例。在Python的数据可视化库Matplotlib中,plt.pie()函数就是用来绘制饼图的。通过它,我们可以轻松地创建出具有不同颜色、标签和标题的饼图,以展示数据的整体和部分之间的关系。

  首先,让我们通过简单的代码示例来了解一下plt.pie()函数的基本用法。

# 导入matplotlib库的pyplot模块,并简写为plt,该模块提供了类似于MATLAB的绘图功能。
import matplotlib.pyplot as plt# 定义标签列表,用于表示饼图中的各个扇区。
labels = ['A', 'B', 'C', 'D']# 定义数据列表,用于表示饼图中各个扇区的大小。
sizes = [20, 25, 45, 10]# 设置全局字体为支持中文的字体'SimHei',确保在图中能够正确显示中文。
plt.rcParams['font.sans-serif'] = ['SimHei']# 使用plt.pie()函数绘制饼图。其中:
# sizes参数指定了饼图中各个扇区的大小;
# labels参数指定了各个扇区的标签,
# autopct参数指定了扇区百分比的格式;
# startangle参数指定了饼图的起始角度(这里设置为90度,即从上方开始);
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)# 使用plt.title()函数为饼图添加标题,标题内容为'示例饼图'。
plt.title('示例饼图')# 使用plt.show()函数显示图形
# 在Jupyter Notebook等环境中,这一步不是必须的,但在普通Python脚本中需要这一步来展示图形。
plt.show()

  以上代码是一个简单的饼图绘制示例,使用了Matplotlib库中的pyplot模块。它首先设置了支持中文的字体,然后定义了标签和数据列表,接着调用plt.pie()函数绘制饼图,并设置了饼图的标题。最后,使用plt.show()函数显示图形:

在这里插入图片描述

Fig.1 使用`plt.pie()`函数绘制基本的饼图

💡 二、深化理解:饼图的定制与优化

在掌握了plt.pie()函数的基本用法后,我们可以进一步定制和优化饼图,使其更加美观和实用。

  1. 个性化定制

    • 颜色与样式:通过colors参数,我们可以为饼图指定不同的颜色。同时,shadowexplode参数可以用于添加阴影和突出显示某个扇区。
    plt.pie(sizes, labels=labels, colors=['red', 'blue', 'green', 'yellow'], shadow=True, explode=(0, 0.1, 0, 0))
    
    • 标签与标题:除了之前提到的labelstitle参数外,我们还可以使用labeldistancetitledistance参数来调整标签和标题与饼图之间的距离。
    plt.pie(sizes, labels=labels, labeldistance=1.1, titledistance=1.2)
    
    • 饼图大小与位置:通过figsize参数,我们可以设置画布的大小,从而调整饼图的大小。而subplots_adjust参数则可以用于调整饼图在画布中的位置。
    plt.figure(figsize=(8, 6))
    plt.pie(sizes, labels=labels)
    plt.subplots_adjust(left=0.2, right=0.8, top=0.8, bottom=0.2)
    
  2. 高级优化

    • 数据排序:默认情况下,plt.pie()函数会按照数据的大小自动对扇区进行排序。如果我们需要按照特定的顺序显示扇区,可以通过sort参数进行控制。
    plt.pie(sizes, labels=labels, sort=False)
    
    • 数据显示:通过textprops参数,我们可以设置饼图上显示的数据标签的样式,包括字体大小、颜色等。
    plt.pie(sizes, labels=labels, textprops={'fontsize': 14, 'color': 'white'})
    
    • 缺失数据处理:当饼图的数据中存在零值或缺失值时,我们可以通过设置wedgeprops参数来控制这些扇区的显示方式,比如将其设置为透明或添加线条边框。
    plt.pie(sizes + [0], labels=labels + ['缺失数据'], wedgeprops={'edgecolor': 'black', 'linewidth': 2})
    
  3. 实战:个性化定制饼图

import matplotlib.pyplot as plt# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']def draw_customized_pie_chart(sizes, labels, colors, explode=None, autopct='%1.2f%%', startangle=90, shadow=True):"""绘制自定义的饼图。参数:sizes (list): 饼图各部分的大小。labels (list): 饼图各部分的标签。colors (list): 饼图各部分的颜色。explode (list, optional): 饼图各部分突出的距离。默认为None。autopct (str, optional): 显示百分比的格式。默认为'%1.2f%%'。startangle (float, optional): 饼图的起始角度。默认为90。shadow (bool, optional): 是否添加阴影。默认为True。返回:None"""# 创建一个新的图形,并设置其大小plt.figure(figsize=(8, 6))# 定义饼图的参数pie_params = {'x': sizes,'labels': labels,'colors': colors,'autopct': autopct,'startangle': startangle,'shadow': shadow,'explode': explode,'labeldistance': 1.1,'pctdistance': 0.7,'textprops': {'fontsize': 14, 'color': 'black'},'wedgeprops': {'edgecolor': 'black', 'linewidth': 1.5}}# 绘制饼图plt.pie(**pie_params)# 添加标题plt.title('定制和优化后的饼图', pad=20)# 调整子图的位置,确保饼图在画布中居中显示plt.subplots_adjust(left=0.1, right=0.8, top=0.9, bottom=0.1)# 显示图形plt.show()# 示例数据
sizes = [20, 25, 35, 10, 10]
labels = ['A', 'B', 'C', 'D', '缺失数据']
colors = ['red', 'blue', 'green', 'yellow', 'lightgray']# 调用函数绘制饼图
draw_customized_pie_chart(sizes, labels, colors, explode=(0, 0.1, 0, 0, 0))

  这段代码💻定义了一个超赞的👏函数draw_customized_pie_chart,这个函数可以绘制出各种自定义的饼图🥧!通过传入的参数📋,你可以轻松定制饼图的尺寸📐、标签🏷️、颜色🌈、突出显示部分💥、百分比显示格式🔍、起始角度🌐以及是否添加阴影🌑。函数内部使用了强大的matplotlib.pyplot库📊来绘制饼图,并且设置了全局字体为支持中文的SimHei字体🔡。

  除了这些,代码还展示了如何使用这个函数来绘制一个包含五个部分(A、B、C、D和缺失数据❌)的饼图。其中,B部分被突出显示💡,让整个饼图更加生动和引人注目👀。

  绘制完成后,饼图会在一个8x6英寸的窗口中🖥️显示出来,并且具有一个精美的标题🎯和适当的子图位置调整🔄,以确保饼图在画布中居中显示🎯。这样一来,你的饼图就会更加美观和易读啦!

🎉 效果展示

在这里插入图片描述

Fig.2 使用`plt.pie()`函数定制个性化饼图

💫 三、交互式体验:动态饼图制作

  除了静态的饼图外,我们还可以利用Matplotlib的交互功能,制作可动态变化的饼图。这可以通过结合使用plt.pie()函数和事件处理函数来实现。

  下面是一个简单的示例代码,展示如何制作一个可以通过鼠标点击来切换扇区颜色的动态饼图:

import matplotlib
import matplotlib.pyplot as plt# 设置matplotlib使用TkAgg作为其后端,TkAgg是一个基于Tkinter的GUI后端
matplotlib.use('TkAgg')# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']import matplotlib.colors as mcolors# 饼图数据
sizes = [20, 25, 35, 10, 10]
labels = ['data1', 'data2', 'data3', 'data4', '缺失数据']
colors = ['red', 'blue', 'green', 'orange', 'lightgray']# 绘制饼图
fig, ax = plt.subplots()
patches, _, _ = ax.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)# 设置标题
ax.set_title('交互式的自定义饼图')# 确保饼图是圆形的
ax.axis('equal')# 保存每个扇区的原始颜色
original_colors = {patch: patch.get_facecolor() for patch in patches}# 将颜色名称转换为 RGB 元组的函数
def color_name_to_rgb(color_name):return mcolors.to_rgb(color_name)# 黄色的 RGB 值
yellow_rgb = color_name_to_rgb('yellow')# 创建一个函数来处理鼠标点击事件
def onclick(event):for patch in patches:if patch.contains(event)[0]:  # 检查点击是否在扇区内# 获取扇区的当前颜色current_color = patch.get_facecolor()# 将当前颜色转换为 RGB 元组current_rgb = mcolors.to_rgb(current_color)# 检查当前颜色是否是黄色if current_rgb == yellow_rgb:# 如果是黄色,则还原为原始颜色patch.set_facecolor(original_colors[patch])else:# 否则,将颜色设置为黄色patch.set_facecolor('yellow')fig.canvas.draw_idle()  # 更新图形break# 绑定鼠标点击事件到图形fig.canvas.mpl_connect('button_press_event', onclick)# 显示图表
plt.show()

  🎉以上代码创造了一个超酷的交互式饼图!🎨 每个扇区在轻轻一点之间就能变成亮黄色,再次点击又能优雅地恢复原状。🔄 这是怎么实现的呢?原来,代码早已悄悄保存了每个扇区的原始颜色,并在你点击时智慧地检查当前颜色,然后迅速作出切换。✨ 通过巧妙运用Matplotlib库的强大功能和事件处理机制,以上代码可以带来不错的交互体验!💥

🎉 效果展示
在这里插入图片描述

Fig.3 使用`plt.pie()`制作可动态变化的饼图

📚 四、参考文档

  1. Matplotlib官网
  2. Matplotlib初探:认识数据可视化与Matplotlib
  3. 数据分析利器对决:Matplotlib中的MATLAB风格与面向对象风格,你选谁?
  4. Matplotlib plt.colorbar:从入门到精通,只需一篇文章!

🌳 五、结尾

  亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。

  我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!

  您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现KDJ指标计算:股票技术分析的利器系列(3)

Python实现KDJ指标计算:股票技术分析的利器系列(3) 介绍算法解释 代码rolling函数介绍计算LLV(最低价最小值)和HHV(最高价最大值)计算RSV计算SMA(简单移动平均) 完整代码…

Linux——信号(1)

在我们使用Linux系统的时候我们经常会使用ctrl c的方式来终止进程,也 会使用kill命令来杀掉进程,评判进程退出的健康程度中也有信号的身影。那 么Linux中的信号到底是什么?今天就由我来介绍Linux中的信号。1. 信号的概念 要了解计算机中的信…

mysql在服务器中的主从复制Linux下

mysql在服务器中的主从复制Linux下 为什么要进行主从复制主从复制的原理主从复制执行流程操作步骤主库创建从库创建 测试 为什么要进行主从复制 在业务中通常会有情况,在sql执行时,将表锁住,导致不能进行查询,这样就会影响业务的…

DS:栈和队列的相互实现

创作不易,感谢友友们三连!! 一、前言 栈和队列的相互实现是用两个栈去实现队列或者是用两个队列去实现栈,这样其实是把问题复杂化的,实际中没有什么应用价值,但是通过他们的相互实现可以让我们更加深入地理…

vue的十大面试题详情

1 v-show与v-if区别 v-if与v-show可以根据条件的结果,来决定是否显示指定内容&#xff1a; v-if: 条件不满足时, 元素不会存在. v-show: 条件不满足时, 元素不会显示(但仍然存在). <div id"app"><button click"show !show">点我</but…

(2024,提示优化,监督微调,强化学习,近端策略优化)用于安全生成文本到图像的通用提示优化器

Universal Prompt Optimizer for Safe Text-to-Image Generation 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. 提议的框架 4. 实验 0. 摘要 文本-图像&a…

软件实例分享,酒店酒水寄存管理系统软件教程

软件实例分享&#xff0c;酒店酒水寄存管理系统软件教程 一、前言 以下软件教程以 佳易王酒水寄存管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、寄存的商品名称可以预先设置 2、寄存人可以使用手.机号识别 3、会员充值…

详解4大C语言内存函数【超详细建议点赞收藏】

目录 1. memcpy----内存拷贝1.1 函数介绍1.2 函数使用1.3 模拟实现 2. memmove----重叠内存的数据拷贝2.1 函数介绍2.2 函数使用2.3 模拟实现 3. memcmp----内存比较3.1 函数介绍3.2 函数使用 4.memset----内存设置4.1 函数介绍4.2 函数使用 注意&#xff1a;以下4个内存函数在…

Springboot医院信息管理系统源码 带电子病历和LIS Saas应用+前后端分离+B/S架构

目录 系统特点 技术架构 系统功能 1、 标准数据维护 2、 收费&#xff08;门诊/住院&#xff09;系统 3、 药剂管理系统 4、 医生工作站系统 5、 护士工作站系统 6、电子病历系统 系统优点 云HIS系统简介 云HIS系统功能模块 门急诊挂号管理 门诊收费管理 门诊医…

ansible剧本中的角色

1 roles角色 1.1 roles角色的作用&#xff1f; 可以把playbook剧本里的各个play看作为一个角色&#xff0c;将各个角色打的tasks任务、vars变量、template模版和copy、script模块使用的相关文件等内容放置在指定角色的目录里统一管理&#xff0c;在需要的时候可在playbook中使…

直接选择排序算法

​​​​​​目录 选择排序 SelectSort直接选择排序 整体思路 图解分析 ​ 代码实现 时间复杂度 选择排序 基本思想&#xff1a; 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排…

【SV的面向对象 SV的类_2024.01.02】

OOP术语 OOP&#xff1a;object oriented programming Class类&#xff1a;包含变量和子程序的基本构建块 Object对象&#xff1a;类的一个实例 Handle句柄&#xff1a;指向对象的指针 Property属性&#xff1a;存储数据的变量&#xff1b;在V中&#xff0c;可以是wire或reg类…

NOTA-马来酰亚胺,1295584-83-6,可作为过渡金属离子的配体

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;NOTA-马来酰亚胺&#xff0c;NOTA Maleimide &#xff0c;NOTA-Mal&#xff0c;1295584-83-6 一、基本信息 产品简介&#xff1a;NOTA Maleimide, also known as NOTA maleimide, is a novel bifunctional integrat…

Sora不懂物理世界,翻车神图全网爆笑!LeCun马斯克DeepMind大佬激辩世界模型

大火的Sora&#xff0c;让许多动画、影视行业的人大为恐慌。 不过&#xff0c;今天网上广为流传的这张图&#xff0c;让大家倒是放心了不少。 可以看到&#xff0c;在这个视频中&#xff0c;玻璃杯碎裂的方式十分诡异—— 它被抬到半空中时&#xff0c;桌子上就忽然出现了一滩…

PWM功能介绍 和配置

泰山派默认提供了3组PWM的GPIO &#xff0c; 为了检测PWM的输出&#xff0c;我们可以配合逻辑分析仪来查看效果&#xff0c;或者搭配STC8的LED灯 PWM 测试 列举所有的PWM设备&#xff1a; # 查找所有有pwm名称的文件 find / -name "pwm" # pwm4: pwmfe6e0000 edp屏幕…

【图像分割 2023 WACV】HiFormer

【图像分割 2023 WACV】HiFormer 论文题目&#xff1a;HiFormer: Hierarchical Multi-scale Representations Using Transformers for Medical Image Segmentation 中文题目&#xff1a;HiFormer:基于Transformer的分层多尺度表示医学图像分割 论文链接&#xff1a; 论文代码&a…

解决updatexml和extractvalue查询显示不全

报错注入是一种常见的SQL 注入方式&#xff0c;通过注入代码&#xff0c;触发数据库的错误响应&#xff0c;并从错误信息中获取有用的信息。 updatexml和extractvalue updatexml和extractvalue 是常用的两个报错注入函数 http://localhost/sqli/Less-5/?id1%27and%20updat…

Maxwell - 增量数据

前言 今天来学习一个新的大数据小工具 Maxwell &#xff0c;它和 Sqoop 很像。Sqoop主要用于在 Hadoop &#xff08;比如 HDFS、Hive、HBase 等&#xff09;和关系型数据库之间进行数据的批量导入和导出&#xff0c;而 Maxwell 则主要用于监控数据库的变化&#xff08;通过监控…

如何使用Docker部署Drupal并结合cpolar实现固定公网地址访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它的学习…

2024年及以后在您的项目中使用的最佳CSS框架

在过去几年中&#xff0c;CSS已经取得了长足的进步。在过去&#xff0c;您可能会使用CSS来创建依赖于HTML表格和CSS浮动作为其布局系统的简单外观的Web应用程序。而现在&#xff0c;您可以设计复杂的交互式用户界面&#xff0c;具有优雅的设计。 尽管CSS变得越来越先进&#x…