使用Python 绘制双Y轴和误差棒柱状图

问题描述

近期在写毕业论文,有一篇参考论文里的图感觉很合适,但是当自己想依样画葫芦的时候发现问题还没那么简单。

目标图

首先是带误差棒的柱状图。一开始我还不完全清楚这种头上顶个条的柱状图学名叫什么。只是大概知道这是一组数组形成的,应该和箱型图类似,表示误差或者说方差,柱状图是均值。于是就好办了,搜了一会儿知道了,这种图的名称叫带有误差棒的柱状图,其实也算比较常见,在Python里有多种实现方法。

其次是双Y轴的问题。同时具备以上两个条件的帖子就很难搜出来了,不知道学名或者标准称呼怎么讲,所以无从查起。没办法,只能自己尝试把它做出来,以下是代码:

代码部分

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Microsoft YaHei']

x = ['11', '22', '33', '44','55']   #任意字符
y = [16.30, 12.94, 13.20, 13.58, 18.31]
error = [1.58, 0.78, 0.95, 2.24, 1.57] #误差或方差
z = [235.61,328.84,570.62,684.45,834.69] #第二个y轴的维度,此处为运行的时间

fig = plt.figure(figsize=(14,8),dpi=80)
ax1 = fig.add_subplot(111)
bar_width = 0.3 #柱状图宽度
ax1.bar(x, y, bar_width) #生成柱状图
ax1.errorbar(x, y, yerr=error, capsize=3, elinewidth=2, fmt=' k,')  #添加误差棒

plt.ylim(0, 35) #限定左侧Y轴显示尺度范围
plt.xlabel('The Number of XXX',size=20)
plt.ylabel('任意目标单位',size=20)
plt.xticks(size=15)
plt.yticks(size=15)
plt.grid(linestyle="--", alpha=1,which='both')  #添加网格线

ax2 = ax1.twinx()   #关键步骤,开始设置第二个Y轴的内容
ax2.plot(x,z,label='y2',marker='o',color='red')
plt.yticks(size=15)
plt.ylim(0, 1000)
plt.ylabel('Average Training Time(s)',size=20)
plt.show()

生成结果

​其实在python里,生成误差棒很多模块都有比较简单的方法,但是在混用的时候容易出现问题。比如说我个人基础知识差一些,一开始有一些莫名其妙的问题。还好matplotlib本身就有误差棒函数,这样写下来就比较顺了。

结语

在这里啰嗦半天,说了很多非专业名称,还是希望像我一样刚入门的人,能够按自己的理解,通过不太规范的关键词检索到自己想要的内容。比如说柱状图加条或者加线,共享Y轴等等。如果真的能帮到各位,我不胜荣幸,也希望大家一键三连~

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,柱状图误差是指带有误差线的柱状图。这种图形可以用来展示数据的平均值以及其误差范围。通常情况下,误差线可以表示标准差、标准误差或置信区间。 Python中有多种方法可以绘制误差柱状图。其中一种常见的方法是使用Matplotlib库的errorbar函数。该函数可以接受x轴和y轴的数据,以及误差范围的值,然后绘制出带有误差柱状图。 另外一种方法是使用Seaborn库的barplot函数。通过设置参数,可以将误差范围的值传递给函数,从而绘制带有误差柱状图。 综上所述,Python中可以使用Matplotlib和Seaborn库来绘制误差柱状图。具体使用哪种方法取决于个人的偏好和需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用Python 绘制Y轴误差柱状图](https://blog.csdn.net/weixin_50642818/article/details/126739275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python干货:教你Python如何一文带你学会去用Python生成带误差的并列和堆积柱状图?!](https://blog.csdn.net/Python_xiaobang/article/details/112240021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北漂炼丹青年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值