Python绘图-9饼图(上)

饼图(Pie Chart)是一种用于表示数据分类和相对大小的可视化图形。在饼图中,整个圆形代表数据的总和,而圆形内的各个扇形则代表不同的分类或类别,扇形的面积大小表示该类别在整体中所占的比例。饼图通常用于展示数据的分布和比例关系,特别是当需要强调每个部分相对于整体的重要性时。在饼图中,每个扇形的标签通常会显示该类别的名称,而扇形的中心角或面积则表示该类别的数值或比例。

9.1默认饼图

9.1.1图像呈现

9.1.2 绘图代码

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
# 定义一个列表,包含四个数值  
numbers = [15, 30, 45, 10]
plt.figure(dpi=120)
# 使用pyplot的pie方法绘制饼图。只需传入每个组分(即列表中的每个数值)的比例即可。  
# 这些数值会被自动归一化,所以传入的比例不需要预先计算。  
plt.pie(numbers)#只需传入每个组分比例即可plt.show()

9.1.3注意

这段代码的主要功能是使用matplotlib库绘制一个饼图,其中四个组分的比例分别为15%、30%、45%和10%。饼图用于展示数据的分布和比例关系,每个扇形的面积大小表示该组分在整体中所占的比例。

9.2饼图添加组分比例、名称

9.2.1图像呈现

9.2.2绘图代码 

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化# 数据
labels = ['类别A', '类别B', '类别C', '类别D']  # 创建一个列表,包含饼图中每个扇形的标签
sizes = [15, 30, 45, 10]# 创建一个列表,包含饼图中每个扇形的大小(通常是百分比或数值)# 创建饼图plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体,这里指定为'SimHei',这是为了支持中文显示
# 创建一个新的图形窗口和一个子图轴对象
fig1, ax1 = plt.subplots()
# 在子图轴对象上绘制饼图,传入扇形大小列表和标签列表
# autopct参数用于显示每个扇形的百分比,'%1.1f%%'表示保留一位小数的百分比格式
# startangle参数设置饼图的起始角度,这里设置为90度,即饼图从正上方开始
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
# 设置轴的比例,使其成为一个圆形,而不是椭圆形
# 这是因为默认情况下,matplotlib的饼图绘制在一个方形区域内,设置'equal'可以使x轴和y轴的比例相同,从而显示为圆形
ax1.axis('equal')# 显示图形
plt.show()

9.2.3注意

这段代码的主要目的是使用matplotlib库绘制一个包含四个类别(A、B、C、D)的饼图,每个类别的大小由sizes列表定义,并且每个扇形的标签由labels列表定义。通过plt.rcParams['font.sans-serif'] = ['SimHei']设置,确保了饼图上的中文标签能够正确显示。ax1.axis('equal')确保了饼图是一个完美的圆形,而不是椭圆形。

9.3饼图设置起始角度

9.3.1图像呈现

9.3.2绘图代码 

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体,这里指定为'SimHei',这是为了支持中文显示
labels = '类别A', '类别B', '类别C', '类别D'# 定义饼图的标签
sizes = [15, 30, 45, 10]# 定义饼图各部分的大小
explode1 = (0, 0.1, 0, 0)# 定义第一个饼图的突出显示参数,这里将'类别B'部分突出显示
explode2 = (0, 0, 0.1, 0)# 定义第二个饼图的突出显示参数,这里将'类别C'部分突出显示
plt.figure(figsize=(10, 10), dpi=120)# 创建一个新的图形窗口,设置其大小为10x10英寸,DPI为120
plt.subplot(121)# 在图形窗口上创建一个子图,位置为1行2列的第1个位置
# 绘制第一个饼图,使用sizes作为各部分的大小,labels作为标签,autopct显示百分比,startangle设置起始角度为90°
plt.pie(sizes,labels=labels,autopct='%1.1f%%',startangle=90)
# 设置第一个饼图的标题
plt.title('Startangle = 90°')
# 在图形窗口上创建另一个子图,位置为1行2列的第2个位置
plt.subplot(122)
# 绘制第二个饼图,与第一个饼图类似,但起始角度为180°并突出显示'类别C'
plt.pie(sizes,labels=labels,autopct='%1.1f%%',startangle=180 )
# 设置第二个饼图的标题
plt.title('Startangle = 180°')
# 显示图形窗口  
plt.show()

9.3.3注意

  1. explode参数用于突出显示饼图的某个部分。例如,explode1中的(0, 0.1, 0, 0)意味着'类别B'部分将被突出显示,与其他部分之间有一个0.1单位的间隔。
  2. startangle参数用于设置饼图的起始角度。在这里,第一个饼图从90°开始,第二个饼图从180°开始。
  3. plt.rcParams['font.sans-serif'] = ['SimHei']这行代码是为了确保中文字符在图形中能够正确显示。这对于某些没有预装中文字体的环境来说是必要的。

9.4饼图某组分爆炸显示 

9.4.1图像呈现

9.4.2绘图代码 

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体,这里指定为'SimHei',这是为了支持中文显示
labels = '类别A', '类别B', '类别C', '类别D'# 定义饼图的标签
sizes = [15, 30, 45, 10]# 定义饼图各部分的大小
explode1 = (0, 0.1, 0, 0)# 定义第一个饼图的突出显示参数,这里将'类别B'部分突出显示
explode2 = (0, 0, 0.1, 0)# 定义第二个饼图的突出显示参数,这里将'类别C'部分突出显示
plt.figure(figsize=(10, 10), dpi=120)# 创建一个新的图形窗口,设置其大小为10x10英寸,DPI为120
plt.subplot(121)# 在图形窗口上创建一个子图,位置为1行2列的第1个位置
# 绘制第一个饼图,使用sizes作为各部分的大小,labels作为标签,autopct显示百分比,startangle设置起始角度为90°
# explode参数用于设置爆炸效果,这里使用了之前定义的explode1
plt.pie(sizes,explode=explode1, labels=labels,autopct='%1.1f%%',startangle=90)#开启爆炸显示
# 在图形窗口上创建另一个子图,位置为1行2列的第2个位置
plt.subplot(122)
# 绘制第二个饼图,与第一个饼图类似,但起始角度为180°并使用explode2作为爆炸效果参数
plt.pie(sizes,explode=explode2,labels=labels,autopct='%1.1f%%',startangle=180) #开启爆炸显示# 显示图形窗口
plt.show()

9.4.3注意

在这段代码中,两个饼图分别展示了相同的数据,但起始角度和突出显示的部分不同。explode参数用于设置突出显示的效果,通过给每个部分分配一个值(通常是0或正数),可以使对应部分稍微偏离饼图的中心。在这个例子中,类别B在第一个饼图中被突出显示,而类别C在第二个饼图中被突出显示。startangle参数用于设置饼图的起始角度,使得饼图从特定的角度开始绘制。

9.5饼图设置文字属性、图例

9.5.1图像呈现

9.5.2绘图代码

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为新创建的字体,这里指定为'SimHei',这是为了支持中文显示
labels = '类别A', '类别B', '类别C', '类别D'# 定义饼图的标签
sizes = [15, 30, 45, 10]# 定义饼图各部分的大小,这些值通常表示各个部分在整体中所占的比例
# 定义饼图的爆炸效果参数,这里将'类别B'部分稍微突出显示
# 爆炸效果意味着该部分会被推开一点,与其他部分之间有一个小的间隔
explode = (0, 0.05, 0, 0)
# 创建一个新的图形窗口,并设置其大小为7x7英寸,DPI(每英寸的点数)为120
plt.figure(figsize=(7, 7), dpi=120)
# 绘制饼图,使用sizes作为各部分的大小,autopct显示百分比,textprops设置文本属性(这里为颜色),
# explode设置爆炸效果,startangle设置起始角度为90°
plt.pie(sizes,autopct='%1.1f%%',textprops={'color': "w"}, explode=explode,startangle=90)
# 添加图例,将labels作为图例的标签,bbox_to_anchor设置图例的位置,title设置图例的标题为"分类"
plt.legend(labels, bbox_to_anchor=(1., .95), title="分类") #添加图例
# 显示图形窗口
plt.show()

9.5.3注意

这段代码创建了一个具有四个部分的饼图,其中'类别B'部分被突出显示。饼图的起始角度设置为90°,意味着饼图从垂直方向开始绘制。此外,图例被添加到图形的右上角,标题为"分类",并且设置了字体以支持中文显示。autopct参数用于在饼图的每个部分旁边显示其所占的百分比,而textprops参数则用于设置这些百分比文本的属性,如颜色。

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

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

相关文章

Window部署Jaeger

参考:windows安装使用jaeger链路追踪_windows安装jaeger-CSDN博客 下载:Releases jaegertracing/jaeger GitHub Jaeger – Download Jaeger 目录 1、安装nssm 2、安装运行 elasticsearch 3、安装运行 3.1部署JaegerAgent 3.2部署JaegerCollec…

【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南

全志D1-H开发板【哪吒】使用Deabian系统入门 特别说明: 因为涉及到操作较多,博文可能会导致格式丢失 其中内容,会根据后续使用做优化调整 目录: 参考资料固件烧录启动调教点灯问题 〇、参考资料 官方资料 开发板-D1开发板【…

C++:函数模板整理

函数模板: 找到函数相同的实现思路&#xff0c;区别于函数的参数类型。 使用函数模板使得函数可容纳不同类型的参数实现函数功能&#xff0c;而不是当类型不同时便编译大量类型不同的函数&#xff0c;产生大量重复代码和内存占用 函数模板格式&#xff1a; template<typ…

[Vulnhub]靶场 Red

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 …

ARM64汇编02 - 寄存器与指令基本格式

最近的文章可能会有较多修改&#xff0c;请关注博客哦 异常级别 ARMv8处理器支持4种异常等级&#xff08;Exception Level&#xff0c;EL&#xff09;。 EL0 为非特权模式&#xff0c;用于运行应用程序&#xff0c;其他资源访问受限&#xff0c;权限不够。 EL1 为特权模式&…

【王道操作系统】ch1计算机系统概述-06虚拟机

文章目录 【王道操作系统】ch1计算机系统概述-06虚拟机01传统计算机02虚拟机的基本概念&#xff08;1&#xff09;第一类虚拟机管理程序&#xff08;2&#xff09; 第二类虚拟机管理程序&#xff08;3&#xff09; 两类虚拟机管理程序的对比 【王道操作系统】ch1计算机系统概述…

效果炸裂、刷爆各大视频网站的EMO到底是怎么做到的?

文章链接&#xff1a;https://arxiv.org/abs/2402.17485 今天分享的工作是刷爆各大视频平台的EMO的背后的工作原理。提出的初衷是着手解决增强发言者的头部特写视频生成中的现实感和表现力的挑战&#xff0c;重点关注音频提示与面部动作之间的动态和微妙关系。传统技术具有局限…

【HarmonyOS】鸿蒙开发之Stage模型-UIAbility的启动模式——第4.4章

UIAbi lity的启动模式简介 一共有四种:singleton,standard,specified,multion。在项目目录的:src/main/module.json5。默认开启模式为singleton(单例模式)。如下图 singleton&#xff08;单实例模式&#xff09;启动模式 每个UIAbility只存在唯一实例。任务列表中只会存在一…

测试管理进阶 | 量力而行:避免成为替罪羊

职场中,我们常常面临是否帮助他人的抉择。尽管善良是美德,但过度的好人卡可能会给自己带来麻烦。本文将探讨如何在职场中量力而行,避免成为替罪羊,以及如何保持高效和合理的职责划分。 我们在工作中常常会遇到一些需要帮助他人的情况,作为团队的一员,我们希望能够积极地协…

六、继承(一)

1 继承的引入 以往我们想分别实现描述学生、老师的类&#xff0c;可能会这样子做&#xff1a; class Student {string _name;string _number;int _tel;int id;string _address;int _age; }; class Teacher {string _name;int _level;int _tel;int id;string _address;int _ag…

【归并排序】 详细解析 动图演示 逐图解析 洛谷P1177【模板】排序 sort【快速排序】

文章目录 归并排序1.归并排序的复杂度分析2.细节解释3.归并排序动图演示3(1) 我们的拆分过程如下↓ 4.code↓ 洛谷P1177【模板】排序数据规模与约定code&#xff08;归并排序&#xff09;↓code&#xff08;sort排序【快速排序】&#xff09; 完结撒花(&#xffe3;▽&#xff…

数据中台:数字中国战略关键技术实施

这里写目录标题 前言为何要建设数据中台数据中台建设痛点数据中台学习资料聚焦前沿&#xff0c;方法论体系更新与时俱进&#xff0c;紧跟时代热点深入6大行业&#xff0c;提炼实践精华大咖推荐&#xff0c;数字化转型必备案头书 前言 在数字中国这一国家战略的牵引下&#xff0…

基于springboot+vue的响应式企业员工绩效考评系统(源码+论文)

文章目录 前言 一、功能设计 1 普通员工功能 2 主管功能 3 系统管理员功能 4 评分标准功能 5 PC端与手机端 6 制图 二、功能实现 普通员工 1普通员工登录 2公告板块 3日志板块 主管 1主管登录 2公告板块 3日志板块 4绩效评分板块 5个人信息板块 系统管理员…

在 Linux 环境下安装 Kibana

目录 一、Kibana 是什么 二、在 Linux 环境下安装 Kibana 1、下载安装包 2、解压 3、修改 Kibana的配置文件 config/kibana.yml 4、启动 5、浏览器登录 Kibana 6、测试查询 一、Kibana 是什么 Kibana 是通向 Elastic 产品集的窗口。 它可以在 Elasticsearch 中对数据进…

品牌推广的两种飞轮:非酋飞轮与欧皇飞轮

在品牌推广的世界里&#xff0c;存在着两种截然不同的飞轮效应&#xff0c;我们称之为“非酋飞轮”与“欧皇飞轮”。这两种飞轮象征着品牌发展的两种不同路径和策略&#xff0c;而迅腾文化则以其独特的“繁”的原则&#xff0c;巧妙地将这两种飞轮结合&#xff0c;助力品牌形成…

Linux安装JumpServer并结合内网穿透实现公网访问本地服务

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Kubernetes 学习总结(46)—— Pod 不停重启问题分析与解决

我们在做性能测试的时候&#xff0c;往往会发现我们的pod服务&#xff0c;频繁重启&#xff0c;通过kubectl get pods 命令&#xff0c;我们来逐步定位问题。 现象:running的pod&#xff0c;短时间内重启次数太多。 定位问题方法:查看pod日志 kubectl get event …

1、EmlogCms代码审计

一、SQL注入 1、后台标签删除处存在1处sql注入 漏洞条件 ● 漏洞url: http://emlog6.0.com/admin/tag.php?actiondell_all_tag ● 漏洞参数&#xff1a;tag[xx] ● 是否存在限制&#xff1a;无 ● 是否还有其他条件&#xff1a;actiondell_all_tag,token复现 POST /admin…

撸chatgpt3.5 api backend-api 对接wxbot

功能是实现 web 转api 对接wxbot用&#xff0c; 直接上代码&#xff0c; 1.获取wss url def get_register_websocket():# 请求头url "https://chat.openai.com/backend-api/register-websocket"payload {}headers {Authorization: Bearer eyJhbGxxxxxxxxxxxxx…

docker的网络配置

文章目录 1、网络模式1.1、bridge模式(默认模式)1.2、host模式 2、bridge模式3、自定义网络 1、网络模式 Docker在创建容器时有四种网络模式&#xff1a;bridge/host/container/none&#xff0c;bridge为默认不需要用–net去指定&#xff0c;其他三种模式需要在创建容器时使用…