目录
前言
饼状图顾名思义就是形如圆饼状的图形,它是一种常用的图表类型,通常用于展示数据的占比关系。饼状图通过将一个圆形区域划分为多个子区域,反应出不同子类数据之间的的对比关系以及子类数据在大类中的百分比。饼状图将一个数据集按照每个数据项所占比例的大小,将整个数据集表示为一个圆形,再将圆形分割成不同大小的扇形区域,每个扇形区域的大小表示该数据项所占的比例大小。
饼状图适用于以下场景:
①显示各部分在整体中的占比情况,可以帮助人们直观地比较不同部分之间的大小关系。
②展示分类数据的相对比例,特别是在不同部分之间存在明显的大小差异时,更能凸显数据的特点。
③适用于展示少量数据,饼状图的数据量不宜过多,否则将会使饼状图过于复杂,难以清晰表达数据。
④饼状图适用于视觉化数据,能够让非专业人士轻松理解数据,是一种常用的数据可视化方式。
一、绘制简单饼形图
Matplotlib绘制饼形图主要使用pie()函数
绘制简单饼形图代码如下:
import matplotlib.pyplot as plt
x = [2, 5, 12, 70, 2, 9]
plt.pie(x, autopct='%1.1f%%')
plt.show()
autopct='%1.1f%%'
的含义是设置扇形内显示的百分比格式为保留一位小数的百分数形式。
运行结果如下:
二、基础饼形图
工作学习中常常需要分析数据,就需要我们导入外部数据分析绘图。
例:导入外部数据data2.xls ,通过饼形图分析各地区销量占比情况。
代码如下:
import pandas as pd
from matplotlib import pyplot as plt
df1 = pd.read_excel('data2.xls')
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.figure(figsize=(10,7)) #设置画布大小
labels = df1['地区']
sizes = df1['销量']
plt.pie(sizes, #绘图数据
labels=labels, #添加区域水平标签
autopct='%.1f%%',) # 设置百分比的格式,这里保留一位小数
plt.axis('equal') #将 x 轴和 y 轴的刻度间距设置为相等的值,确保呈现出正圆形状
plt.title('2020年1月各地区销量占比情况分析') #设置了图形的标题
plt.show()
解释代码:
import pandas as pd
:导入 Pandas 库,用于数据处理。from matplotlib import pyplot as plt
:导入 Matplotlib 库中的 pyplot 模块,用于绘图。df1 = pd.read_excel('data2.xls')
:使用 Pandas 的read_excel
函数从 Excel 文件中读取数据,并将数据存储在 DataFramedf1
中。plt.rcParams['font.sans-serif']=['SimHei']
:设置绘图时使用的字体为中文宋体(SimHei),以解决中文乱码问题。plt.figure(figsize=(10,7))
:创建一个新的画布,设置画布的大小为宽度10英寸,高度7英寸。labels = df1['地区']
:从 DataFramedf1
中获取名为"地区"的列,将其作为饼图中每个扇形的标签。sizes = df1['销量']
:从 DataFramedf1
中获取名为"销量"的列,将其作为饼图中每个扇形的大小。plt.pie(sizes, labels=labels, autopct='%.1f%%')
:使用pie
函数绘制饼图,传入扇形的大小(sizes
)、标签(labels
)和百分比显示格式(autopct='%.1f%%'
)。plt.axis('equal')
:将 x 轴和 y 轴的刻度间距设置为相等的值,确保呈现出正圆形状的饼图。plt.title('2020年1月各地区销量占比情况分析')
:设置图形的标题为"2020年1月各地区销量占比情况分析"。plt.show()
:显示绘制的饼图。
运行结果如下:
三、分裂饼形图
分裂饼图可以将您认为主要的饼图部分分裂出来,以达到突出显示的目的。
例:假如我们要突出一个占比最高的省份广东省,代码如下:
explode = (0.1,0,0,0,0,0,0,0,0,0))
解释代码:
这行代码创建了一个元组 explode
,其中包含了每个扇形的偏移量。每个元素对应一个扇形,值为0表示该扇形不偏移,非零值表示该扇形的偏移量。
添加在下图的位置:
运行结果如下:
此时“广东省”就从饼图中分裂出来了。
四、立体感带阴影的饼形图
立体感带阴影的饼形图看起来更加美观,主要通过shadow参数实现。
代码如下:
shadow=True
添加在下图的位置:
运行结果如下:
五、设置饼形图每块的颜色
想要突出的数据可以用鲜艳的颜色来突出,让该部分的内容脱颖而出。
代码如下:
colors = ['red', 'yellow', 'yellow', 'yellow','yellow','yellow','yellow','yellow','yellow','yellow']
colors=colors # 设置饼图的自定义填充色
添加在下图的位置:
运行结果如下:
六、 环形图
环形图是由两个及两个以上大小不一的饼图叠在一起,挖去中间的部分所构成的图形。
代码如下:
wedgeprops = {'width': 0.4, 'edgecolor': 'k'}
代码解释:
wedgeprops
是一个字典,用于设置饼图中扇形的属性。width
的值为0.4,表示扇形的宽度为整个饼图半径的40%。edgecolor
的值为'k',表示扇形的边缘颜色为黑色。
还可以通过以下代码调整百分比标签与圆心的距离:
pctdistance=0.7
添加在下图的位置:
运行结果如下:
七、内嵌环形图
内嵌环形图实际是双环形图
绘制内嵌环形图需要注意以下三点:
1.连续使用两次pie()函数。
2.通过wedgeprops参数设置环形边界。
3.通过radius参数设置不同半径。
代码如下:
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
df1 = pd.read_excel('data2.xls')
df2=pd.read_excel('data2.xls',sheet_name='2月')
#数据集,x1,x2分别对应外环、内环百分比例
x1=df1['销量']
x2=df2['销量']
#设置饼状图各个区块的颜色
colors = ['red', 'yellow', 'slateblue', 'green','magenta','cyan','darkorange','lawngreen','pink','gold']
#外环
plt.pie(x1,autopct='%.1f%%',radius=1,pctdistance=0.85,colors=colors,wedgeprops=dict(linewidth=2,width=0.3,edgecolor='w'))
#内环
plt.pie(x2,autopct='%.1f%%',radius=0.7,pctdistance=0.7,colors=colors,wedgeprops=dict(linewidth=2,width=0.4,edgecolor='w'))
#图例
legend_text=df1['地区']
plt.legend(legend_text,title='地区',frameon=False,bbox_to_anchor=(0.2,0.5))#设置图例标题、位置、去掉图例边框
plt.axis('equal')#设置坐标轴比例以显示为圆形
plt.title('2020年1月和2月各地区销量占比情况分析')
拿“外环”来举例,解释代码:
x1
是饼图的数据,它是一个包含各个扇形大小的列表或数组。autopct='%.1f%%'
设置了在饼图中显示每个扇形的百分比值,保留一位小数。radius=1
设置了饼图的半径为1,默认情况下饼图的半径为1。pctdistance=0.85
设置了百分比标签与圆心的距离,0.85 表示距离半径的85%处。colors=colors
设置了饼图中每个扇形的颜色,colors
是一个包含颜色值的列表或数组。wedgeprops=dict(linewidth=2, width=0.3, edgecolor='w')
设置了扇形的属性,包括边框宽度、宽度和边框颜色。linewidth=2
设置边框的宽度为2,width=0.3
设置扇形的宽度为整个饼图半径的30%,edgecolor='w'
设置边框的颜色为白色。
运行结果:
总结
饼状图是一种常见的统计图表,以圆形的方式展示数据的相对大小和占比关系,最后给大家总结一下饼形图的优缺点。
(1)它的主要优点包括:
①易于理解:饼状图通常可以直观地展示数据占比,使观众很容易理解数据之间的比例关系。
②易于制作:相对于其他复杂的图表类型,饼状图很容易制作和编辑,适用于初学者和快速制作。
③可视化效果好:饼状图通常有一种饼的形状,这种形状可以更加清晰地表达数据的占比关系。
(2)饼状图的缺点是:
①不适合展示大量数据:当饼状图中有太多的数据时,图表的可读性会受到影响。这时,为了使数据清晰可读,需要将图表细分成更多的饼状图或选择其他类型的图表。
②容易产生误解:由于饼状图只能展示单一维度的数据,因此在比较不同数据集时,观众可能会产生误解,特别是当数据之间的差异很小时。
③不适用于复杂的数据:如果数据之间的关系很复杂,使用饼状图可能不够直观,因为它只能展示单一维度的数据。
写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/134840464?spm=1001.2014.3001.4503