使用matplotlib绘制饼图,matplotlib堆叠柱状图

  使用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 plt

  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]

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: