(代码详解)饼图绘制+参数讲解+饼图内外标签字体大小设置+添加图例,并调整图例大小与位置+调整标题与图之间的距离

      大家好,本篇的目的是使用python画出如下的饼图,并且介绍其中参数的作用

目录

完整代码 

一、导入所需的库

二、中文显示

三、调整图例的大小(长、宽)

 四、导入数据

五、绘制饼图+参数介绍 (重点)

六、调整饼图外标签和内标签的字体大小

a的结果如下:

对a的结果进行介绍:

b的结果如下:

对b的结果进行介绍:

c的结果:

 对c的结果进行介绍:

(敲黑板啦!) 调整外标签字体大小:

七、添加图例+调整图例字体大小与位置

八、调整标题与图之间的距离

完整代码 

import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif']='SimHei'#设置中文显示
#设置图例大小,宽,高
plt.figure(figsize=(6,9))
# 数据
data = {'column1': ['A', 'B', 'C', 'D'],'column2': [100, 250, 156, 90]}
df = pd.DataFrame(data)# 绘制饼图
a,b,c=plt.pie(df["column2"], labels=df["column1"], autopct='%1.1f%%', colors=["red","lightskyblue","blue","yellowgreen"],pctdistance=0.6,shadow=True,labeldistance=1.1,frame=False,explode = (0.2, 0.1, 0.1, 0.2),textprops={'fontsize': 15},startangle=40)# sizes = [100, 250, 156, 90]#内标签
# labels = ['A', 'B', 'C', 'D']#外标签
# a,b,c=plt.pie(sizes, labels=labels, autopct='%1.1f%%', colors=["red","lightskyblue","blue","yellowgreen"],pctdistance=0.6,shadow=True,labeldistance=1.1,
#        frame=False,explode = (0.2, 0.1, 0.1, 0.2),textprops={'fontsize': 15},startangle=40)for i in b:i.set_size(30)
for i in c:i.set_size(20)# 添加图例并设置字体大小
plt.legend(df["column1"], fontsize=14,loc='upper right',bbox_to_anchor=(1.5, 1))plt.title('饼图',fontsize=25,pad=35)#绘制标题
# # 设置字体大小
# plt.rcParams['font.size'] = 20# plt.axis('equal')这个自己体会一下,影响不大plt.show()

下边将完整代码拆解开来,分别介绍

一、导入所需的库

import pandas as pd
import matplotlib.pyplot as plt

采用matplotlib绘制饼图

使用pandas处理数据

二、中文显示

plt.rcParams['font.sans-serif']='SimHei'#设置中文显示

避免画图时标题等字体不显示,此行代码可以让中文显示出来

作用是设置Python绘图库Matplotlib中的字体为SimHei。这使得绘图中的文本显示为简体中文。

这里的`plt.rcParams`用于配置Matplotlib的参数,`font.sans-serif`表示字体系列,'SimHei'表示具体的字体名称。

三、调整图例的大小(长、宽)

plt.figure(figsize=(6,9))

 四、导入数据

# 数据
data = {'column1': ['A', 'B', 'C', 'D'],'column2': [100, 250, 156, 90]}
df = pd.DataFrame(data)

结果如下:

五、绘制饼图+参数介绍 (重点)

a,b,c=plt.pie(df["column2"], labels=df["column1"], autopct='%1.1f%%', colors=["red","lightskyblue","blue","yellowgreen"],pctdistance=0.6,shadow=True,labeldistance=1.1,frame=False,explode = (0.2, 0.1, 0.1, 0.2),textprops={'fontsize': 15},startangle=40)plt.title('饼图',fontsize=20)#绘制标题plt.show()

①data["column2"]:以data的第二列作为绘制饼图的数据,展示数据框(df)中"column2"列的占比情况

②labels=df["column1"]:在绘制饼图时,使用 `df["column1"]` 中的值作为标签。这些标签会显示在饼图的每个部分旁边,帮助用户识别各个部分所代表的数据。

labels是plt.pie()中的一个参数,参数值为df["column1"]

③`autopct`参数用于设置百分比标签的格式,这里设置为`'%1.1f%%'`,表示保留一位小数的百分比。如果你不需要这个功能,可以将其设置为`None`,或者不设置此参数。

④`colors=["red","lightskyblue","blue","yellowgreen"]`:设置饼图的颜色,分别为红色、浅天空蓝、蓝色和黄色绿色。

⑤pctdistance:饼块内标签与圆心的距离。

⑥shadow:饼图下是否有阴影。布尔值。默认值为False。

⑦labeldistance:饼块外标签与圆心的距离。如果设置为None,标签不会显示,但是如果图中有设置图例,图例可以使用标签。(图例怎么设置,下边会进行介绍)

⑧frame:是否绘制子图边框,布尔值。默认为False

⑨explode:控制饼块分离,设置爆炸效果,也就是使饼图的每部分扇形分开,不在圆心聚合。

                 此例中使每个部分的比例为0.2、0.1、0.1和0.2。

⑩textprops控制外标签字体大小,此例中也就是ABCD的字体大小,

startangle:饼块起始角度。默认值为0,即从x轴开始,逆时针旋转为第一块。

上面代码中a、b、c的具体含义,留到第六节进行介绍,请看下边

六、调整饼图外标签和内标签的字体大小

上面我们介绍了通过参数textprops控制外标签字体大小,下面我们介绍另一种方法分别调整外标签和内标签的字体大小。

首先我们先来介绍一下a、b、c分别是什么,分别打印输出a、b、c,查看结果

a的结果如下:

对a的结果进行介绍:

这个结果包含了四个matplotlib.patches.Wedge对象,每个对象的内存地址不同。这些对象是在绘制图形时创建的扇形图。

第一行"at 0x22d9ee6b400"表示这个对象(在这个例子中是matplotlib.patches.Wedge对象)的内存地址。这个地址是一个十六进制数,用于唯一标识这个对象在内存中的位置。

因为我们刚才设置了饼块的起始角度“startangle=40”,比方改一下这个参数,结果就会变,也就是地址就会变。
#

这些对象存储在内存中的地址不同,分别为:

 1.0x22d9ee6b4002.0x22d9ee959703.0x22d9ff4d8e04.0x22d9ff4d4c0
b的结果如下:

对b的结果进行介绍:

这是一个表示四个文本框的位置坐标的信息。可以从这些坐标中解析出以下信息:

1. 文本框A的位置:x坐标为0.440330613235106,y坐标为1.2231553258061691。
2. 文本框B的位置:x坐标为-1.196937984635972,y坐标为0.08567065387621148。
3. 文本框C的位置:x坐标为0.5730229693109448,y坐标为-1.0543456153662651。
4. 文本框D的位置:x坐标为1.2675995774046722,y坐标为0.28842904043021794。

稍后用b来调整外标签ABCD的字体大小!

c的结果:

 对c的结果进行介绍:

这是一段描述四个文本框位置的文本,文本框中包含四种文字,是饼图的文本标签,分别是:[16.8%、41.9%、26.2%、15.1%]

可以从这些坐标中解析出以下信息

1. 第一个文本标签表示第一个部分占整个饼图的16.8%

    坐标为 (-0.17996082887875442, 0.7794960551980181) 的点;

2.第二个文本标签表示第二个部分占整个饼图的41.9%

    坐标为 (-0.6820590482982658, -0.1574657252689104) 的点;

3.第三个文本标签表示第三个部分占整个饼图的26.2%。

    坐标为 (0.048829557772520085, -0.6982948333531762) 的点;

4.第四个文本标签表示第四个部分占整个饼图的15.1%。

    坐标为 (0.7980512355054844, 0.055805246242355014) 的点。

在这里,[16.8%、41.9%、26.2%、15.1%]表示饼图的各个部分所占的比例。

稍后用c来调整内标签(比例)字体大小!

(敲黑板啦!) 调整外标签字体大小:
for i in b:i.set_size(30)

 将外标签字体大小设置为30

(敲黑板啦!) 调整内标签字体大小:

 将内标签字体大小设置为20

for i in c:i.set_size(20)

七、添加图例+调整图例字体大小与位置

plt.legend(df["column1"], fontsize=14,loc='upper right',bbox_to_anchor=(1.5, 1))

①要设置图例的位置,可以使用plt.legend()函数的loc参数。loc参数接受一个字符串,表示图例的位置
loc参数可选如下:

'upper right':右上

'upper left' :左上

'lower left':左下

'lower right':右下

②除此之外,还可以通过bbox_to_anchor参数调整图例的位置:
bbox_to_anchor参数设置为(1.05, 1),表示图例的位于图形的右上角的某个位置。小伙伴可以根据需要调整这个值。

③fontsize控制图例的大小

④df["column1"]:将数据df中的column1列数据作为标签

八、调整标题与图之间的距离

plt.title('饼图',fontsize=25,pad=35)#绘制标题

可以通过pad参数来调整标题与图之间的距离。

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

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

相关文章

SpringBoot3-集成mybatis

1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

Java EE 多线程之多线程案例

文章目录 1. 多线程案例1.1 单例模式1.1.1 饿汉模式1.1.2 懒汉模式1.1.3 多线程下的单例模式 1.2 阻塞队列1.2.1 阻塞队列定义1.2.2 生产者消费者模型的意义1.2.4 标准库中的阻塞队列1.2.5 实现阻塞队列1.2.6 用阻塞队列实现生产者消费者模型 1.3 实现定时器1.3.1 标准库中的定…

酷开科技多维度赋能营销,实力斩获三项大奖

在数智化新阶段、广告新生态、传播新业态的背景下&#xff0c;“第30届中国国际广告节广告主盛典暨网易传媒态度营销峰会”于11月18日在厦门国际会展中心盛大举行。来自全国的品牌方、战略决策者、媒体平台和品牌服务机构等汇聚一堂。在50000&#xff0b;现场观众和数千万线上观…

Altman作了多少恶?排挤首席科学家出GPT5开发、离间董事会、PUA员工

在山姆奥特曼&#xff08;Sam Altman&#xff09;被OpenAI董事会突然解职后的几天里&#xff0c;这个消息在科技圈引发轰动&#xff0c;该公司内部员工和许多科技界人士甚至将此举比作一场政变。 奥特曼被解雇后立即传出的说法是&#xff0c;OpenAI的广大员工都很喜欢他&#x…

打包CSS

接上一个打包HTML继续进行CSS的打包 1.在之前的文件夹里的src文件夹创建一个css文件 2.在浏览器打开webpack——>中文文档——>指南——>管理资源——>加载CSS 3.复制第一句代码到终端 4.复制下图代码到webpack.config.js脚本的plugins&#xff1a;[.....]内容下…

android项目实战之编辑器集成

引言 项目需要用到编辑器&#xff0c;采用RichEditor&#xff0c;如下效果 实现 1. 引入库2 implementation jp.wasabeef:richeditor-android:2.0.0 2. XML <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&q…

持续集成和持续交付

引言 CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一种面向开发和运维团队的解决方案&#xff0c;CI/CD 主要针对在集成新代码时所引发的问题&#xff08;亦称&#xff1a;“集成地狱”&#…

ubuntu install sqlmap

refer: https://github.com/sqlmapproject/sqlmap 安装sqlmap&#xff0c;可以直接使用git 克隆整个sqlmap项目&#xff1a; git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev 2.然后进入sqlmap-dev&#xff0c;使用命令&#xff1a; python s…

ARP协议:地址解析协议

目录 引言 什么是ARP协议&#xff1f; ARP协议的工作原理 1. ARP请求 2. ARP应答 3. ARP缓存 ARP协议的应用 结语 其他链接 引言 在计算机网络中&#xff0c;地址解析协议&#xff08;ARP&#xff0c;Address Resolution Protocol&#xff09;扮演着重要的角色。ARP协议…

功率放大器有哪些功能和作用

功率放大器是一种电子设备&#xff0c;主要用于将输入的低功率信号放大为更大的功率信号。功率放大器的主要功能和作用包括&#xff1a; 信号放大&#xff1a;功率放大器可以将输入的低功率信号放大为更大的功率信号。这对于一些需要输出更大功率的应用来说非常重要&#xff0c…

企业电子招投标采购系统源码之鸿鹄电子招投标系统+电子招投标的组成

鸿鹄招投标系统的功能描述 1、门户管理&#xff1a;用户可通过门户页面查看所有公告信息及相关通知信息&#xff0c;包括招标公告、非招标公告、系统通知和政策法规等板块。 2、立项管理&#xff1a;企业用户可以对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0…

TypeScript 常用高级类型

目录 前言&#xff1a; TypeScript 常用高级类型 基本概念 高级类型 1. 交叉类型&#xff08;Intersection Types&#xff09; 2. 联合类型&#xff08;Union Types&#xff09; 3. 映射类型&#xff08;Mapped Types&#xff09; 4. 条件类型&#xff08;Conditional…

共筑首都绿色美好出行!苏州金龙再向北京交付33辆纯电动旅游大巴

应时而动&#xff0c;创新求变&#xff0c;方能始终屹立于市场。2023年&#xff0c;随着旅游市场的复苏&#xff0c;北京市旅游消费潜力进一步释放&#xff0c;客运需求量快速增长&#xff0c;与此同时绿色、高端、个性化旅游客车也成为市场趋势。 11月底&#xff0c;33辆苏州…

C++STL的list(超详解)

文章目录 前言构造函数capacitylist的访问insertswapsort 前言 看一下list, 在任意位置可以进行O(1)插入删除的操作。 它怎么实现这个东西&#xff1f;它其实就是一个带头双向循环链表。 #成员函数 构造函数 这里面的构造函数学完string和vector之后已经相当熟悉了。 capaci…

万户协同办公平台ezoffice wpsservlet接口任意文件上传漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、漏洞描述 万户ezOFFICE协同管理平台是一个综合信息基础应用平台&am…

51单片机定时器/计数器

51单片机的定时器/计数器 本文主要涉及51单片机的定时器/计数器的相关内容&#xff0c;主要包括定时器相关寄存器的相关配置以及定时器的配置代码参考。 文章目录 51单片机的定时器/计数器一、 CPU 时序知识二、 51 单片机定时器原理三、 51 单片机定时/计数器结构 51单片机的定…

一图看懂!生成式AI 算法现状

截至2023年8月&#xff0c;在算法备案系统登记的相关算法已经有151个&#xff0c;我们可以观察到All in AI的中国公司布局生成式AI算法的现状。在这151个算法中&#xff0c;33.8%的生成合成式算法都集中在文本生成领域&#xff0c;而图像、多媒体和音频方向也是各家的主攻方向之…

window系统,如何多开微信

window系统多开微信的方法其实有很多种&#xff0c;今天我们介绍一种超实用简单的方法多开微信。 方法: 用命令符打开多个微信的方法介绍 用命令符打开多个微信之前&#xff0c;需要先获取当前微信的安装目录地址。 右键微信图标&#xff0c;单击“属性”。 在目标文本框下可…

PDF控件Spire.PDF for .NET【转换】演示:将PDF彩色图像转换为灰度(黑白)

将包含彩色图像的 PDF 转换为灰度图像可以帮助您减小文件大小&#xff0c;并以更实惠的模式打印 PDF&#xff0c;而无需消耗彩色墨水。在本文中&#xff0c;您将了解如何使用Spire.PDF for .NET在 C# 和 VB.NET 中以编程方式实现转换。 Spire.Doc 是一款专门对 Word 文档进行操…

【数值计算方法(黄明游)】解线性代数方程组的迭代法(一):向量、矩阵范数与谱半径【理论到程序】

文章目录 一、向量、矩阵范数与谱半径1、向量范数a. 定义及性质补充解释范数差 b. 常见的向量范数 l 1 l_1 l1​、 l 2 l_2 l2​、 l ∞ l_\infty l∞​ 范数性质关系 2、矩阵范数a. 矩阵的范数b. 常见的矩阵范数相容范数算子范数 3、谱半径4、知识点总结1. 向量范数2. 矩阵范数…