从文件夹读取数据 ,绘制高斯分布图并取1置信区间

绘制高斯分布图并取1\sigma置信区间


# 读取Excel文件
# 获取某一列数据
import time 
start=time.time()
import seaborn as sns 
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib.backends.backend_pdf import PdfPages

# 生成两组正态分布的随机数据
data1 = pd.read_excel('E:\\program\\数据汇总.xlsx', sheet_name='LBLs')
data1 = data1['LBLs']
data2 = pd.read_excel('E:\\program\\数据汇总.xlsx', sheet_name='FSRQs')
data2 = data2['FSRQs']

plt.figure(figsize=(8, 6))

# 绘制第一组数据的直方图
sns.distplot(data1, bins=30, kde=True, color='skyblue', label='LBLs')  #kde=True参数来绘制直方图的密度曲线

# 计算第一组数据的高斯分布曲线
mu1, sigma1 = np.mean(data1), np.std(data1)
x1 = np.linspace(mu1 - 3*sigma1, mu1 + 3*sigma1, 1000)
gaussian1 = 1/(sigma1 * np.sqrt(2 * np.pi)) * np.exp(-(x1 - mu1)**2 / (2 * sigma1**2))
plt.plot(x1, gaussian1, color='red', linestyle='--')

# 绘制第一组数据的1σ置信区间竖线
confidence_int1 = 1
plt.axvline(x=mu1-confidence_int1*sigma1, color='green', linestyle='-.', label='1σ LBLs')
plt.text(mu1-confidence_int1*sigma1, 0.8, f'{mu1-confidence_int1*sigma1:.2f}', color='green', ha='center')
plt.axvline(x=mu1+confidence_int1*sigma1, color='green', linestyle='-.')

# 绘制第二组数据的直方图
sns.distplot(data2, bins=30, kde=True, color='orange', label='FSRQs')

# 计算第二组数据的高斯分布曲线
mu2, sigma2 = np.mean(data2), np.std(data2)
x2 = np.linspace(mu2 - 3*sigma2, mu2 + 3*sigma2, 1000)
gaussian2 = 1/(sigma2 * np.sqrt(2 * np.pi)) * np.exp(-(x2 - mu2)**2 / (2 * sigma2**2))
plt.plot(x2, gaussian2, color='purple', linestyle='--')

# 绘制第二组数据的1σ置信区间竖线
confidence_int2 = 1
plt.axvline(x=mu2-confidence_int2*sigma2, color='blue', linestyle='-.', label='1σ FSRQs')
plt.text(mu2-confidence_int2*sigma2, 0.8, f'{mu2-confidence_int2*sigma2:.2f}', color='blue', ha='center')
plt.axvline(x=mu2+confidence_int2*sigma2, color='blue', linestyle='-.')

# 设置x,y轴的刻度范围
plt.xlim(-4, 3)  # 设置X轴范围
# plt.ylim(0, 100)  # 设置Y轴范围

# 添加图例
plt.legend()

plt.xlabel('logCD')
plt.ylabel('Frequency')
plt.title('Histogram with Gaussian Distribution and 1σ Confidence Interval for LBLs and FSRQs')
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值