饼状图是统计数学中常用的图表,可以直观的看出各个子项的占比情况,在Matplotlib库中可以使用pie函数实现。

比如,想统计某个公司各个编程语言的统计分布,共有四个语言,C/C++、Python、java、php,想看他们的占比情况,很明显他们各自的占比加起来一定是100%,可以写如下代码:

import matplotlib.pyplot as plt

#定义数据

labels=['Python','C/C++','php','Java']
size=[20,30,40,10]

#创建饼状图
plt.pie(size,labels=labels,autopct='%1.1f%%')

#显示柱状图
plt.show()

大家基础好的可以直接阅代码理解,同样第一步引入pylot库,然后定义两个数组分别存项目名和各个对应的比例。注意要加起来100%。如果不是100% 运行不会报错,而是直接影响其他项数据,这点要注意。

值得解释的是,pie函数中的第三个参数

autopct='%1.1f%%'

表示在数据饼状图中以百分比显示,1.1f 意味着保留一位小数,%% 是百分比符号。这里是让每一部分的百分比在饼图上显示为 1 位小数的格式。


运行后效果如下:

用pie函数绘制饼状图


怎么样,简单吧!

下面再教大家一个样式技巧,即如何突出某一块?做一个类似"切出一块蛋糕"的效果呢?答案也是可以的!

还是上面的代码,我们只需要加一个参数,即可

import matplotlib.pyplot as plt

#定义数据

labels=['Python','C/C++','php','Java']
size=[20,30,40,10]

# 突出显示第二个扇形
explode = (0, 0.1, 0, 0)

#创建饼状图
plt.pie(size,explode=explode,labels=labels,autopct='%1.1f%%')

#显示柱状图
plt.show()

大家仔细观察,可以看到我们使用了expode函数,如果想突出第二块,则其余全部为0,第2块填0.1,然后将explode这个参数传入pie函数,即可看到 那种分出来的感觉,如下图:

pie绘制饼图突出某块

大家可以修改其中的参数,调整突出块的间隔。

熟悉了pie绘制饼图的方法之后,这下为大家总结pie函数更完整的原型,即每个参数的作用,大家可以根据需要自行加入,完整函数原型如下:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]

我们以上两个例子仅使用了其中几个参数,更多参数的作用为大家列出来:

x浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
explode数组,表示各个扇形之间的间隔,默认值为0。
labels列表,各个扇形的标签,默认值为 None。
colors数组,表示各个扇形的颜色,默认值为 None。
autopct设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
labeldistance标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
pctdistance类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
shadow布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
radius设置饼图的半径,默认为 1。
startangle用于指定饼图的起始角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
counterclock布尔值,用于指定是否逆时针绘制扇形,默认为 True,即逆时针绘制,False 为顺时针。
wedgeprops 字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。
textprops 字典类型,用于指定文本标签的属性,比如字体大小、字体颜色等,默认值为 None。
center 浮点类型的列表,用于指定饼图的中心位置,默认值:(0,0)。
frame 布尔类型,用于指定是否绘制饼图的边框,默认值:False。如果是 True,绘制带有表的轴框架。
rotatelabels 布尔类型,用于指定是否旋转文本标签,默认为 False。如果为 True,旋转每个 label 到指定的角度。
data用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。

pie函数的返回三个参数:

wedges一个包含扇形对象的列表。
texts一个包含文本标签对象的列表。
autotexts一个包含自动生成的文本标签对象的列表。


实际数据统计与分析中,饼状图的应用非常广泛!请大家自行上机试验!

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)