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参数则用于设置这些百分比文本的属性,如颜色。

  • 33
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Py小趴

整理不易,感谢金主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值