饼图(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注意
explode
参数用于突出显示饼图的某个部分。例如,explode1
中的(0, 0.1, 0, 0)
意味着'类别B'部分将被突出显示,与其他部分之间有一个0.1单位的间隔。startangle
参数用于设置饼图的起始角度。在这里,第一个饼图从90°开始,第二个饼图从180°开始。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
参数则用于设置这些百分比文本的属性,如颜色。