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

您所在的位置:网站首页 二维正态分布图像怎么画 使用Numpy和Matplotlib绘制正态分布图

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

2024-07-16 17:03| 来源: 网络整理| 查看: 265

好的。首先,我们需要简单介绍一下Numpy和Matplotlib这两个库。

Numpy

NumPy(Numerical Python)是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,同时也针对数组运算提供大量的数学函数库。这是 Python 语言的开源软件之一,也是数据分析、数据处理和科学计算等领域最常用的库之一。

Matplotlib

Matplotlib 是 Python 编程语言及其数值数学扩展库 NumPy 的可视化操作界面,它为利用 Python 的强大编程语言和丰富的科学计算库,可生成各种硬拷贝格式和交互式环境可视化,2D 图表的软件包。

接下来我们来介绍如何使用 Numpy 和 Matplotlib 绘制正态分布图:

1. 导入库

首先,我们需要导入相关的库,即 Numpy 和 Matplotlib。

import numpy as np import matplotlib.pyplot as plt 2. 生成正态分布的数据

接下来,我们需要生成正态分布的数据。这里我们使用 Numpy 库中的 random 模块,调用 randn() 方法生成一定数量的随机数。这些随机数将服从标准正态分布,即均值为0,标准差为1。

data = np.random.randn(1000) 3. 绘制直方图

接下来,我们利用 Matplotlib 库来将数据绘制成直方图。Matplotlib 库中的 hist() 方法,可以用于绘制直方图。下面的代码将绘制出 30 个区间的直方图,并将数据标准化。

plt.hist(data, bins=30, density=True, alpha=0.5, color='red') plt.show()

其中,bins 参数指定直方图的区间数量,density 参数指定是否标准化数据,alpha 参数指定透明度,color 参数指定颜色。

4. 绘制密度曲线

接下来,我们将绘制正态分布的密度曲线。我们可以使用 Scipy 库中的 stats 模块中的 norm() 方法来计算正态分布的密度分布。下面的代码将绘制正态分布的密度分布,并与直方图叠加在一起。

from scipy.stats import norm x = np.linspace(-4, 4, 100) plt.plot(x, norm.pdf(x), 'b-', lw=2, alpha=0.5) plt.hist(data, bins=30, density=True, alpha=0.5, color='red') plt.show()

其中,norm() 方法中的参数分别代表分布的均值和标准差(默认为0和1)。x = np.linspace(-4, 4, 100) 创建了一系列 x 值,覆盖了从 -4 到 4 的范围,包含 100 个值。plt.plot(x, norm.pdf(x), 'b-', lw=2, alpha=0.5) 绘制了密度函数的图像,其中 'b-' 表示使用蓝色实线,lw=2 表示使用宽度为 2 的线条,alpha=0.5 表示线条的透明度为 0.5。

最后的效果如下所示:

正态分布图 示例1

接下来,我们将介绍如何根据一组数据的均值和方差绘制正态分布图。

import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm mean = 10 std = 3 data = np.random.normal(mean, std, size=1000) x = np.linspace(mean - 3*std, mean + 3*std, 100) plt.plot(x, norm.pdf(x, mean, std), 'r-', lw=2, alpha=0.6) plt.hist(data, bins=30, density=True, alpha=0.5, color='blue') plt.show()

首先,我们定义一个均值和方差分别为 10 和 3 的正态分布,使用 Numpy 库中的 random.normal() 方法来生成一组有 1000 个数据的样本数据。接下来,我们使用 scipy.stats.norm.pdf() 方法来计算均值为 10,标准差为 3 的正态分布密度分布,并将其与样本数据一起绘制。最后的效果如下所示:

示例1 示例2

接下来,我们将展示如何在一个图中绘制多组正态分布图。

import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm data1 = np.random.normal(5, 1.5, size=1000) data2 = np.random.normal(10, 2, size=1000) data3 = np.random.normal(15, 2.5, size=1000) x = np.linspace(0, 25, 100) plt.plot(x, norm.pdf(x, 5, 1.5), 'b-', lw=2, label='mean=5, std=1.5') plt.plot(x, norm.pdf(x, 10, 2), 'r-', lw=2, label='mean=10, std=2') plt.plot(x, norm.pdf(x, 15, 2.5), 'g-', lw=2, label='mean=15, std=2.5') plt.hist(data1, bins=30, density=True, alpha=0.3, color='blue') plt.hist(data2, bins=30, density=True, alpha=0.3, color='red') plt.hist(data3, bins=30, density=True, alpha=0.3, color='green') plt.legend(loc='best') plt.show()

首先,我们生成了三组均值和方差不同的正态分布数据,分别为均值为 5,标准差为 1.5;均值为 10,标准差为 2;均值为 15,标准差为 2.5。接下来,我们使用 scipy.stats.norm.pdf() 方法来计算这三个正态分布的密度分布,并将其绘制在同一张图中。同时,我们使用 hist() 方法,将这三组数据绘制成直方图,最后的效果如下所示:

示例2

以上是使用 Numpy 和 Matplotlib 绘制正态分布图的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Numpy和Matplotlib绘制正态分布图 - Python技术站



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3