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