python科研绘图:带正态分布的直方图

带正态分布的直方图是一种用直方图表示数据分布的图表,其中数据经过了正态分布的拟合。正态分布是一种常见的概率分布,具有平均值和标准差。在带正态分布的直方图中,数据被分成不同的区间,每个区间的频数或频率可以用颜色或标签表示。这种图表通常用于分析一组数据在不同区间内的分布情况,以及数据是否符合正态分布。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码
plt.rcParams['axes.unicode_minus'] = False
​
# 生成一个示例数据集,这里使用随机数据
np.random.seed(0)
data = np.random.normal(loc=50, scale=5, size=40)  # 均值=50,标准差=5
# 计算均值和标准差
mean = np.mean(data)
std_dev = np.std(data, ddof=1)  # 这是 S 图的样本标准差
# 创建概率密度曲线的 x 值范围
x = np.linspace(mean - 3 * std_dev, mean + 3 * std_dev, 100)
# 计算概率密度函数的值
pdf = norm.pdf(x, loc=mean, scale=std_dev)
print("概率密度曲线Y轴最大值:", max(pdf))
plt.figure(figsize=(6, 6))
# 绘制直方图
plt.hist(data, bins=10, density=True, alpha=0.6, color='b', label='Generated Data')
# 绘制概率密度曲线图
plt.plot(x, pdf, color='r', label='概率密度曲线')
plt.xlabel('观测值')
plt.ylabel('概率密度')
plt.title('概率密度曲线图')
plt.legend()
plt.grid(True)
plt.tight_layout()
# 显示图形
plt.show()
​

import numpy as np
import matplotlib.pyplot as plt
​
# 生成随机数据,具有正态分布
mu, sigma = 0, 1  # 均值和标准差
data = np.random.normal(mu, sigma, 1000)
​
# 绘制直方图
plt.hist(data, bins=50, density=True, alpha=0.7, color='blue', edgecolor='black')
​
# 绘制正态分布曲线
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = (1 / (sigma * np.sqrt(2 * np.pi))) * np.exp(-0.5 * ((x - mu) / sigma) ** 2)
plt.plot(x, p, 'k', linewidth=2)
​
# 添加标题和标签
plt.title('Histogram with Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Frequency')
​
# 显示图形
plt.show()
​

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
方法一:直方图 我们可以使用matplotlib库中的hist()函数来绘制数据的直方图,通过观察直方图的形态来初步判断数据是否呈正态分布。 示例代码: ```python import matplotlib.pyplot as plt import numpy as np # 生成一组随机数据 data = np.random.normal(0, 1, 1000) # 绘制直方图 plt.hist(data, bins=30, density=True, alpha=0.5, color='b') # 绘制正态分布曲线 mu, sigma = np.mean(data), np.std(data) x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100) plt.plot(x, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (x - mu)**2 / (2 * sigma**2)), color='r', linewidth=2) plt.show() ``` 运行结果: ![histogram](https://img-blog.csdnimg.cn/20220228162302061.png) 从直方图中可以大致看出数据是否呈现正态分布。如果数据分布在均值两侧对称,呈钟形,那么就可以初步判断为正态分布。 方法二:Q-Q Q-Q是一种用于检验数据是否符合某种分布的形方法,它的基本思想是将待检验数据的分位数与标准正态分布的分位数进行比较,如果两者的分布形态相似,则可以认为待检验数据的分布与标准正态分布相近。 在Python中,我们可以使用statsmodels库中的qqplot()函数来绘制Q-Q。 示例代码: ```python import statsmodels.api as sm import numpy as np # 生成一组随机数据 data = np.random.normal(0, 1, 1000) # 绘制Q-Q sm.qqplot(data, line='s') plt.show() ``` 运行结果: ![qqplot](https://img-blog.csdnimg.cn/20220228162351621.png) 如果数据点分布在对角线附近,则可以认为数据符合正态分布。如果数据点分布偏离对角线,说明数据分布与正态分布不符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值