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

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

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

2024-02-06 16:08| 来源: 网络整理| 查看: 265

      大家好,本篇的目的是使用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.0x22d9ee6b400 2.0x22d9ee95970 3.0x22d9ff4d8e0 4.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参数来调整标题与图之间的距离。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3