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

好的。首先,我们需要简单介绍一下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技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法

    PySide2出现“ImportError:DLLloadfailed:找不到指定的模块”的问题及解决方法 问题描述 当你安装好PySide2后,在导入PySide2包时可能会遇到如下错误提示: ImportError: DLL load failed: 找不到指定的模块 问题原因 这种错误通常发生在Windows操作系统上,是因为Qt库的某个依赖项(例如O…

    python 2023年5月13日
    00
  • python如何通过跳板机连接MySQL

    首先需要进行以下准备工作: 需要有一台安装了 Python 环境的机器,并安装 MySQL 的 Python 库; 需要有一个跳板机和一个 MySQL 数据库服务器,可以通过 SSH 连接上跳板机。 下面是 Python 通过跳板机连接 MySQL 数据库的步骤: 导入必要的库 import pymysql import paramiko 配置跳板机和目标服…

    python 2023年5月23日
    00
  • 简单探讨一下python线程锁

    简单探讨一下Python线程锁 在Python中,线程锁是一种用于控制多个线程访问共享资源的机制。线程锁可以确保在任何时候只有一个线程可以访问共享资源,而避免了多个线程同时访问共享资源导致的数据竞争和不一致问题。本文将详细介绍Python线程的使用方法和示例。 Python线程锁的基本用法 Python线锁的基本用法非常简。我们只需要使用threading模…

    python 2023年5月14日
    00
  • 利用Python发送 10 万个 http 请求

    以下是关于利用Python发送10万个HTTP请求的攻略: 利用Python发送10万个HTTP请求 在Python中,我们可以使用requests库来发送HTTP请求。以下是利用Python发送10万个HTTP请求的攻略: 发送GET请求 以下是使用requests发送GET请求的示例: import requests import time start_…

    python 2023年5月14日
    00
  • 使用Python批量修改文件名的代码实例

    下面是使用Python批量修改文件名的完整攻略及示例。 一、背景 在实际工作中,我们经常需要对大量的文件进行重命名。手动一个一个修改显然是非常费时费力的,因此可以使用Python编写批量修改文件名的程序来提高工作效率。 二、修改文件名的原理 Python中可以使用os模块中的rename函数来修改文件名。该函数的语法如下: os.rename(旧文件名, 新…

    python 2023年6月5日
    00
  • python实现微信小程序自动回复

    下面我将为大家详细讲解如何使用Python实现微信小程序自动回复控制。本攻略将从以下几个方面介绍: 准备工作 获取微信登录二维码 登录微信 获取微信好友列表 监听微信消息 回复微信消息 1. 准备工作 在开始使用Python实现微信小程序自动回复之前,需要进行以下几步准备工作: 安装Python 3.x 安装itchat库 通过pip命令安装itchat库:…

    python 2023年5月23日
    00
  • 详解Python 函数式编程设计模式

    Python函数式编程设计模式是指使用函数式编程思想和技术实现的一种设计模式。函数式编程设计模式以函数为核心,通过使用高级函数、lambda表达式和闭包等技术实现代码的抽象、复用和组合。以下是Python函数式编程设计模式的完整攻略。 1. 高阶函数 在函数式编程设计模式中,函数是一等公民,即函数可以作为参数传递给另一个函数,也可以作为返回值返回给调用者。这…

    python-answer 2023年3月25日
    00
  • python实现线性回归的示例代码

    当我们需要对某个数据集进行分类或者回归时,线性回归是一个常用的机器学习方法。在Python中,我们可以使用scikit-learn库实现线性回归。接下来,将从以下几方面介绍Python实现线性回归的攻略: 数据准备 将数据拆分为训练集和测试集 使用线性回归模型拟合数据 使用测试集评估模型表现 示例代码 1. 数据准备 在使用线性回归进行机器学习之前,我们首先…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部