下面是使用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()函数显示图像。