使用Numpy和Matplotlib绘制正态分布图

  • Post category:Python

下面是使用Numpy和Matplotlib绘制正态分布图的完整攻略。

1. 准备工作

首先需要导入所需的库,包括numpy和matplotlib,可以使用以下指令进行导入:

import numpy as np
import matplotlib.pyplot as plt

2. 生成正态分布数据

使用Numpy的random模块中的normal函数可以方便地生成正态分布的数据。normal函数的参数包含位置参数(均值)和尺度参数(标准差),可以指定生成数据的数量,例如:

mu, sigma = 0, 0.1 # 均值和标准差
data = np.random.normal(mu, sigma, 1000) # 生成1000个数据

3. 绘制正态分布图

绘制正态分布图需要使用Matplotlib中的plt模块。可以使用hist函数绘制直方图,使用plot函数绘制折线图或者使用plot函数绘制密度曲线。

下面给出两个示例:

3.1 绘制直方图

可以使用hist函数绘制直方图。hist函数的参数包含需要绘制的数据、划分区间的数量等等。可以使用normed参数进行标准化,使得纵坐标表示概率密度。

plt.hist(data, bins=50, normed=True, alpha=0.6, color='b')
plt.xlabel('Data')
plt.ylabel('Probability')
plt.title('Normal Distribution')

3.2 绘制密度曲线

也可以使用plot函数绘制密度曲线,使用Numpy的linspace函数生成横坐标数据,使用scipy.stats中的norm类计算概率密度。

x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, norm.pdf(x, mu, sigma))
plt.xlabel('Data')
plt.ylabel('Probability Density')
plt.title('Normal Distribution')

4. 完整代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

mu, sigma = 0, 0.1 # 均值和标准差
data = np.random.normal(mu, sigma, 1000) # 生成1000个数据

# 绘制直方图
plt.hist(data, bins=50, normed=True, alpha=0.6, color='b')
plt.xlabel('Data')
plt.ylabel('Probability')
plt.title('Normal Distribution')

# 绘制密度曲线
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, norm.pdf(x, mu, sigma))
plt.xlabel('Data')
plt.ylabel('Probability Density')
plt.title('Normal Distribution')

plt.show()

可以使用plt.show()函数显示图像。