正态分布图是展示连续随机变量分布情况的一种图形化工具,通过以正态分布曲线为中心,展示数据在不同区间的分布情况,帮助我们了解数据的集中程度和离散程度。Python中可以使用matplotlib库来实现正态分布图。
一、导入必要的库
import numpy as np import matplotlib.pyplot as plt
首先,我们需要导入numpy库和matplotlib.pyplot库。numpy库是Python中用于科学计算的一个核心库,提供了多维数组对象和一些数学函数,用于生成正态分布的数据;matplotlib.pyplot库则提供了绘制图形的功能。
二、生成正态分布的数据
# 设置随机种子,保证每次运行程序生成的随机数是固定的 np.random.seed(0) # 生成正态分布的随机数 mean = 0 std_dev = 1 data = np.random.normal(mean, std_dev, 10000)
在生成正态分布的数据之前,我们可以通过设置随机种子来固定生成的随机数,这样可以保证每次运行程序都生成相同的随机数。然后,使用numpy.random.normal函数来生成10000个均值为0,标准差为1的正态分布随机数。
三、绘制正态分布图
# 设置绘图参数 bins = 100 # 绘制正态分布图 plt.hist(data, bins=bins, density=True, alpha=0.6, color='blue') # 绘制正态分布的曲线 x = np.linspace(mean - 4 * std_dev, mean + 4 * std_dev, 100) y = 1 / (std_dev * np.sqrt(2 * np.pi)) * np.exp(-(x - mean) ** 2 / (2 * std_dev ** 2)) plt.plot(x, y, color='red') # 设置图形标题和轴标签 plt.title('正态分布图') plt.xlabel('数据值') plt.ylabel('概率密度') # 显示图形 plt.show()
首先,我们设置绘图参数bins为100,表示将数据划分成100个区间。然后,使用matplotlib.pyplot的hist函数来绘制正态分布的直方图,其中density参数设置为True表示绘制的是概率密度分布,alpha参数设置为0.6表示图形的透明度,color参数设置为蓝色。接着,使用numpy.linspace函数生成x轴的数据,由均值减去4倍标准差到均值加上4倍标准差,以保证曲线能覆盖整个直方图的范围。然后,使用正态分布的概率密度函数计算对应的y轴的值。最后,使用matplotlib.pyplot的plot函数绘制正态分布的曲线,color参数设置为红色。设置图形的标题和轴标签,并使用matplotlib.pyplot的show函数显示图形。
四、完整代码示例
import numpy as np import matplotlib.pyplot as plt np.random.seed(0) mean = 0 std_dev = 1 data = np.random.normal(mean, std_dev, 10000) bins = 100 plt.hist(data, bins=bins, density=True, alpha=0.6, color='blue') x = np.linspace(mean - 4 * std_dev, mean + 4 * std_dev, 100) y = 1 / (std_dev * np.sqrt(2 * np.pi)) * np.exp(-(x - mean) ** 2 / (2 * std_dev ** 2)) plt.plot(x, y, color='red') plt.title('正态分布图') plt.xlabel('数据值') plt.ylabel('概率密度') plt.show()
以上是实现正态分布图的完整代码示例。