这是我的第308篇原创文章。
一、引言
在日常工作或者科研任务时,经常会通过绘制折线图研究数据的变化趋势,有时候需要在折线图的基础上绘制误差线(标准差范围),本文通过一个具体的案例教你如何实现绘制带误差线的折线图。
二、实现过程
2.1 读取数据
代码:
data = pd.DataFrame({"冬季": [12.17243477, 11.36021739, 18.35030291, 17.15931569, 18.94613472, 16.43750166, 15.37389999, 10.84856549],
"春季": [16.36929306,22.83614637,20.4675646,28.12451086,28.131717,26.51940728,19.91029632,17.48587054],
"夏季": [20.0074298,16.45617457,19.00976795,30.69691155,29.66009154,26.608055,34.3336493,31.93616728],
"秋季": [13.52213184,17.17267811,19.28456754,25.89692456,23.364554,19.29411813,18.39706469,20.87623326]})
结果:
2.2 计算均值和标准差
代码:
std_table = data.std() # 计算标准差
figdata = data.mean() # 计算均值
均值和标准差结果:
2.3 绘图
代码:
sns.set(font_scale=1.2)
plt.rc('font',family=['Times New Roman', 'SimSun'], size=12)
plt.errorbar(list(data.columns), figdata, yerr=std_table, fmt='k-o', lw=2, ecolor='k',elinewidth=1, ms=7, capsize=3, label='Chl-a季节平均浓度')
for a, b, c in zip(list(data.columns), figdata, std_table):
plt.text(a, b+0.5, f'{round(b, 2)}±{round(c, 2)}', ha='center', va='bottom')
plt.xlabel('季节')
plt.ylabel('Chl-a浓度(ug/L)')
plt.legend()
plt.tight_layout()
plt.savefig('Chl-a.jpg', bbox_inches='tight', dpi=600)
plt.show()
结果:
作者简介:
读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。