栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用Python的matplotlib绘制残差分析散点误差棒图

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Python的matplotlib绘制残差分析散点误差棒图

文章目录
  • 前言
  • 一、数据读取
  • 二、数据分段
    • 1.数据分段
    • 2.计算均值和标准差
  • 三、画图


前言

残差误差棒图是残差分析中必不可少的图,下面我将介绍一下我画的残差散点图
话不多说先上图:

一、数据读取
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

data = pd.read_excel('残差分析数据.xlsx', engine='openpyxl')
print(data)
A = data['A']
r_inter = data['r_inter']
r_intra = data['r_intra']
二、数据分段

根据横坐标A将残差数据分段,计算不同段的均值和标准差

1.数据分段
r_intra2 = []
r_intra3 = []
r_intra4 = []
r_intra5 = []
r_intra6 = []
r_intra7 = []
r_intra8 = []
for i in range(len(r_intra)):
    if 0<=A[i]<50:
        r_intra1.append(r_intra[i])
    elif 50<=A[i]<100:
        r_intra2.append(r_intra[i])
    elif 100 <= A[i] < 150:
        r_intra3.append(r_intra[i])
    elif 150 <=A[i] < 200:
        r_intra4.append(r_intra[i])
    elif 200 <= A[i] < 250:
        r_intra5.append(r_intra[i])
    elif 250 <= A[i] < 300:
        r_intra6.append(r_intra[i])
    elif 300 <= A[i] < 350:
        r_intra7.append(r_intra[i])
    elif 350 <= A[i] < 400:
        r_intra8.append(r_intra[i])
 
2.计算均值和标准差
def mean_std(residual):
    m = np.mean(residual)
    s = np.std(residual)
    return m, s
m1, s1 = mean_std(r_intra1)
m2, s2 = mean_std(r_intra2)
m3, s3 = mean_std(r_intra3)
m4, s4 = mean_std(r_intra4)
m5, s5 = mean_std(r_intra5)
m6, s6 = mean_std(r_intra6)
m7, s7 = mean_std(r_intra7)
m8, s8 = mean_std(r_intra8)
三、画图
fig = plt.figure(figsize=(5, 4))
plt.rcParams['xtick.direction'] = 'in'  # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'  # 将y轴的刻度方向设置向内
plt.rcParams['font.family'] = ["Times New Roman"] # 字体设置为Times NewRoman
plt.scatter(A, r_intra, c='none', edgecolors='gray', alpha=0.8) 
# 画散点图, c表示填充数据颜色,edgecolors表示散点外圈颜色, alpha表示透明度(0-1)
plt.errorbar([25, 75, 125, 175, 225, 275, 325, 375], [m1, m2, m3, m4, m5, m6, m7, m8],
             yerr=[s1, s2, s3, s4, s5, s6, s7, s8], fmt='s-', ecolor='black', color='red',
             elinewidth=2.5, capsize=5)
# 绘制数据的误差置信区间图,前三个list分别表示:误差棒的位置,均值,方差,其余参数解释见matplotlib官网在这里插入代码片`
plt.xlabel('A (unit)', size=12)
plt.ylabel('Intra-event Residual', fontsize=12)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
# plt.text(250, 3.2, 'SA(T=10s)', fontsize=14)
plt.grid(linewidth=0.5, linestyle='--', which='both', alpha=0.5, zorder=0)
#绘制网格线
plt.ylim(-6, 4)
# plt.tight_layout()
# plt.show()
plt.savefig('Figure_residual.png', dpi=300)

最终生成的结果见上图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997135.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号