python叠加条形图的绘制

有时候需要绘制条形图进行一些数据大小等的对比,绘制并列条形图比较简单,但是若是要绘制叠在一起的条形图,该怎么办呢?

先来看一下效果图:
叠加条形图
话不多说,开始整!
首先准备好数据,下面的是横坐标

BD3list = ['C19', 'C20', 'C21', 'C22', 'C23', 'C24', 'C25', 'C26', 'C27', 'C28', 'C29', 'C30', 'C32', 'C33', 'C34',
                  'C35', 'C36', 'C37', 'C38', 'C39', 'C40', 'C41', 'C42', 'C43', 'C44', 'C45', 'C46']

下面是数据

SC = np.array([0.28143729869879963, 0.1536219748991405, 0.10819366694558143, 0.14169138433276246, 0.1611493324092084, 0.13445888044094706, 0.11965873760339168, 0.16389161964466165, 0.10259225553399048, 0.12295780018092552, 0.11708262840771938, 0.09436294915553137, 0.10120857536480425, 0.12171004095864237, 0.15471766284552993, 0.10397014030694512, 0.1512030698537346, 0.12650958754605576, 0.12127939297578247, 0.1395577780727013, 0.1229339008243589, 0.0958076342938055, 0.10136364076890723, 0.1413113706982444, 0.12491140269069867, 0.5253488442403781, 0.22168824470838697])
SC1 = np.array([0.6350810761600663, 0.6232906111775364, 0.684624476190173, 0.6189292005760189, 0.6496876310047892, 0.6845806749958895, 0.6566852215640956, 0.7003816034556506, 0.6309014177894385, 0.6113556305726572, 0.6118882535978405, 0.6772049631828317, 0.6217912654732306, 0,0.6964146100459708, 0.6238703639353168, 0.7182165899472622, 0.6710521811917342, 0.6325160328010011, 0.6219051688255164, 0.6602896164488664, 0.6790877111014725, 0.6363228924111705, 0.691490180773299, 0.6400318712843416, 0.715937138020826, 0.6316812542439657])
SC2 = np.array([0.7228417728732073, 0.6713495576730549, 0.6998920551592455, 0.6256257143512524, 0.6474804030965134, 0.6776805903346916, 0.6218251082261463, 0.6420619392591886, 0.5981447030887893, 0.5643667211472729, 0.614276983835257, 0.6514328931429159, 0.5966564176505406,0, 0.6659862291803025, 0.6370637817098774, 0.7120020125549552, 0.6591474960631784, 0.5953337231707001, 0.6473414603237566, 0.6458136751827387, 0.6682794810425751, 0.6309805883027949, 0.6522442524299352, 0.6812196110202081, 0.7880402607204642, 0.5807119473340352])

定义好条形图的宽度,以及横坐标

bar_width = 0.6
index1 = np.arange(len(BD3list)) 

接下来的代码就可以完成了


plt.bar(index1, height=SC,width=bar_width, color='gold', label='DLR-CAS')
plt.bar(index1, height=SC1, bottom=SC,width=bar_width, color='tomato', label='CAS-WHU')
plt.bar(index1, height=SC2, bottom=(SC+SC1),width=bar_width, color='c', label='DLR-WHU')

plt.legend(loc=1,borderpad=0.1,bbox_to_anchor=(1.01,1))  # 显示图例
plt.xticks(index1 + bar_width/3, BD3list,rotation=90)
# plt.ylim(0,0.6)
plt.ylabel('BDS3 STD/ns')  # 纵坐标轴标题
plt.xlabel('PRN')
plt.text(0.8,1.6,'DLR-CAS-mean:'+'0.15'+'\n'
             'CAS-WHU-mean:'+'0.655'+'\n'
             'DLR-WHU-mean:'+'0.65')
plt.show()

仔细看,在普通的绘制条形图的参数里,多了一个参数bottom=,这个参数的作用是,将此次绘制的条形图,绘制到上一个绘制好的条形图之上!

好啦,这就是我对这个问题的浅显理解啦,小伙伴们可以把自己的数据弄成我这个样子,然后试一试是不是可以成功啦!

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八与她

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值