使用matplotlib绘制饼图,matplotlib堆叠柱状图
Matplotlib是Python的绘图库,它允许用户轻松地绘制数据,并提供各种输出格式。本文将向大家介绍如何用matplotlib绘制饼状图和堆栈图,有兴趣的朋友可以学习一下。
00-1010 I. pie()函数用于绘制饼状图II。一个简单的例子。堆积饼图常用于统计模块。绘制饼图的方法是饼图()
目录
饼图(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)
Pie()函数有许多参数,需要调整的常见参数如下
X:序列或数组中每个扇区的比例
Explode:如果不是None,就是len(x) length的数组,指定每个块的突出程度;高亮显示,设置每个线段的间隙大小。
标签:为每个扇区提供标签的字符串序列。
Colors:为每个扇区提供颜色的字符串序列。
自动:如果是格式字符串,标签将是fmt% pct。如果是函数,就会被调用。
影子:影子
Startangle:从X轴逆时针旋转。关于蛋糕旋转角度参数的用法,可以去官网查询,自己多试试。
一、pie()函数用来绘制饼图
统计每天休息、工作、娱乐等的百分比。
将matplotlib.pyplot作为plt导入
切片=[7,2,9,3,3]
活动=[睡觉,吃饭,工作,学习,玩耍]
cols=[r , m , y , c , b]
馅饼(切片,
标签=活动,
Colors=cols,#自定义色序,与切片相比,可多可少,少了会自动补充。如果它不可用,默认情况下它将是不同的颜色。
起始角度=90度,
影子=真,
Explode=(0,0.1,0,0,0.2),#表示突出程度,
Pct=% 1.1f%% #百分比显示格式
)
plt.title(“时间统计”)
plt.show()
实际运行结果:
注意:startangle=90时的起始位置。整个饼图从0度开始逆时针分布(圆心向右)。
然后继续使用上一篇文章中创建的两个骰子实现一个饼状图。
思考:上面饼状图代码中最能决定饼状图形状的参数是slices=[7,2,9,3,3]。不考虑每一个比例的名与美,先确定如何切片实现每一个价值。
例如,当投掷两个骰子(一个有8个面,一个有6个面)1,000,000次时,计算1、2、3、4、5点出现的总次数.14,切片保存。在序列中使用统计方法list.count()即可。
主要是添加两行代码:
New_slices=[] #创建新系列
while side=max_result:
边=1
New_bins.append(side) #这是你做直方图之前需要做的。
new _ slices . append(results . count(int(side))#会保存两个骰子之和的序列,直接统计。Results.count (int (side))计算该边在结果序列中出现的次数。
结果,它还显示点7、8和9的总和出现得最频繁,然后逐渐减少:
总之,饼状图是把一个圆按照分类百分比分成若干块,整个饼状图代表总的数据。
量,每个区块表示该分类占总体的比例大小,所有区块的加和等于100%。
三、 堆叠图
使用matplotlib中的stackplot()函数可以快速绘制堆积图,stackplot()函数的语法格式如下所示
stackplot(x, y, labels=(), baseling='zero', data=None, *args, **kwargs)
该函数常用参数的含义如下
x:表示x轴的数据,可以是一维数组。
y:表示y轴的数据,可以是二维数组或一维数组序列。
labels:表示每组折线及填充区域的标签。
baseline:表示计算基线的方法,包括'zero'、'sym'、'wiggle'和'weighted_wiggle'。
其中:
'zero'表示恒定零基线,即简单的堆积图;
'sym'表示对称于零基线;
'wiggle'表示最小化平方斜率的总和;
'weighted_wiggle'表示执行相同的操作,但权重用于说明每层的大小。
用同一个例子来看一下堆叠图的效果,代码如下:
import matplotlib.pyplot as pltdays = [1,2,3,4,5,6,7]
sleeping =[7,8,6,8,7,8,6]
eating = [2,3,3,3,2,2,2]
working = [7,7,7,8,10,3,4]
studing = [6,4,4,4,3,8,11]
playing = [2,2,4,1,2,3,1]
labellist = [sleeping,eating,working,studing,playing]
colorlist = [c,y,b,r,g]
plt.stackplot(days, sleeping,eating,working,studing,playing,labels=labellist,colors=colorlist)
plt.xlabel(x)
plt.ylabel(y)
plt.legend(loc=(0.07, 0.05))
plt.title(Stack Plots)
plt.show()
运行结果如下:
plt.legend()是显示左下角的标签。而语句plt.stackplot()函数中的sleeping,eating,working,studing,playing是一维数组序列,即stackplot(x,y……)中的y值,是一系列一维数据。
很明显,通过上述饼图与堆叠图的对比,它们的区别:饼图只能展示一段时间里,某个项目所花时间占总时间的比,而堆叠图可以展示这一段时间里,每天各项所花费时间。
既然sleeping,eating,working,studing,playing形成的一维数组,感觉参数比较多,那直接形成一个二维数组如何?做如下修改:
days = [1,2,3,4,5,6,7]"""
sleeping =[7,8,6,8,7,8,6]
eating = [2,3,3,3,2,2,2]
working = [7,7,7,8,10,3,4]
studing = [6,4,4,4,3,8,11]
playing = [2,2,4,1,2,3,1]
"""
times =[ # 二维数组,以数列作为元素的数列。
[7,8,6,8,7,8,6], #上述sleeping数列
[2,3,3,3,2,2,2],
[7,7,7,8,10,3,4],
[6,4,4,4,3,8,11],
[2,2,4,1,2,3,1]
]
plt.stackplot(days, times,labels=labellist,colors=colorlist)
运行结果如图:
效果与原来的一维数组一样。
但手工这样编程的时候录入数据太过麻烦,下篇介绍直接读取文件数据并进行处理。
以上就是Python+matplotlib绘制饼图和堆叠图的详细内容,更多关于Python matplotlib饼图 堆叠图的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。