下面我将为您讲解利用Python绘制正态分布曲线的完整攻略。
1.准备工作
在进行绘制正态分布曲线前,我们需要先安装一下Python中用于科学计算的常用库NumPy和matplotlib。
!pip install numpy
!pip install matplotlib
2.确定正态分布曲线的参数
正态分布曲线拥有两个参数:均值μ和标准差σ。在确定我们需要绘制的正态分布曲线前,我们需要先明确均值和标准差。
假设我们需要绘制均值为5,标准差为1.5的正态分布曲线,则我们可以使用以下代码:
import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 5, 1.5 # 均值和标准差
3.计算正态分布曲线上的点
接下来,我们需要计算正态分布曲线上的点,通常可以使用NumPy中的np.exp()和np.power()函数来计算正态分布函数上的值。这里我们使用以下代码来计算正态分布概率密度函数(Probability Density Function,PDF):
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
y = (1/(sigma * np.sqrt(2 * np.pi))) * np.exp(-(x - mu)**2 / (2 * sigma**2))
其中,np.linspace()函数用于创建一个从(μ-3σ)到(μ+3σ)之间的等间隔数据,x表示横坐标;
y的计算逻辑是正态分布函数的标准公式,$(1/(σ\sqrt{2π}))exp^{\frac{-(x-μ)^2}{2σ^2}}$,y表示横坐标对应的纵坐标。
4.绘制正态分布曲线
绘制正态分布曲线可以使用matplotlib库中的plt.plot()函数,具体代码如下:
plt.plot(x, y, color='blue')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Normal Distribution')
plt.show()
其中,plt.plot()函数用于绘制正态分布曲线;
plt.xlabel和plt.ylabel函数用于设置x轴和y轴的标签;
plt.title()函数用于设置图形的标题;
plt.show()函数用于显示图形。
示例说明
示例1:绘制标准正态分布曲线
若我们需要绘制标准正态分布曲线,则均值为0,标准差为1,代码如下:
import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 0, 1 # 均值和标准差
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
y = (1/(sigma * np.sqrt(2 * np.pi))) * np.exp(-(x - mu)**2 / (2 * sigma**2))
plt.plot(x, y, color='blue')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Standard Normal Distribution')
plt.show()
示例2:绘制多个不同标准差的正态分布曲线
若我们需要同时绘制均值为0,标准差为1、2、3的正态分布曲线,则代码如下:
import numpy as np
import matplotlib.pyplot as plt
mu = 0 # 均值
x = np.linspace(mu - 3*1, mu + 3*1, 100) # 标准差为1的正态分布曲线
y1 = (1/(1 * np.sqrt(2 * np.pi))) * np.exp(-(x - mu)**2 / (2 * 1**2))
x = np.linspace(mu - 3*2, mu + 3*2, 100) # 标准差为2的正态分布曲线
y2 = (1/(2 * np.sqrt(2 * np.pi))) * np.exp(-(x - mu)**2 / (2 * 2**2))
x = np.linspace(mu - 3*3, mu + 3*3, 100) # 标准差为3的正态分布曲线
y3 = (1/(3 * np.sqrt(2 * np.pi))) * np.exp(-(x - mu)**2 / (2 * 3**2))
plt.plot(x, y1, color='blue', label='sigma=1')
plt.plot(x, y2, color='red', label='sigma=2')
plt.plot(x, y3, color='green', label='sigma=3')
plt.legend()
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Normal Distribution with Different Standard Deviation')
plt.show()
这里我们直接在xticks中设定坐标轴范围,以区分出不同的正态分布曲线,并使用plt.legend()函数添加图例,区分出不同标准差的曲线。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用python绘制正态分布曲线 - Python技术站