使用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日

相关文章

  • 利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)

    针对利用Python3筛选Excel中特定的行,可以分为以下步骤: 1.导入所需要的库 我们需要使用Python的pandas库来实现,所以需要首先导入它: import pandas as pd 2.读取Excel文件 可以使用pd.read_excel()函数来读取Excel中的数据,其中需要指定要读取的Excel文件的路径和文件名: df = pd.r…

    python 2023年5月14日
    00
  • pip报错“OSError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/filesystem.py’”怎么处理?

    原因 “OSError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/filesystem.py'” 错误通常是以下原因引起的: 权限不足:如果您没有足够的权限来访问 pip 相关文件,则可能会出现此错误。 文件损坏:如果 …

    python 2023年5月4日
    00
  • PyQt5使用QTimer实现电子时钟

    下面我将详细介绍“PyQt5使用QTimer实现电子时钟”的攻略。 步骤 首先,我们需要导入PyQt5中的QTimer模块,以便使用其中的计时器函数。 from PyQt5.QtCore import QTimer 然后,我们需要在界面中添加一个label组件,以便用来显示电子时钟的时间。这里设置label的文本居中对齐,并设置字体大小和颜色。 self.l…

    python 2023年6月3日
    00
  • Python正则表达式和元字符详解

    Python正则表达式和元字符详解 正则表达式是一种强大的文本处理工具,可以用于各种文本处理,如数据清洗、文本析、信息提取等。在Python中,我们使用re模块提供的函数来操作正则表达式。本攻略将详细讲解Python正则表达式和元字符的用法,包括正则表达式的语法、元字符的含义和示例说明。 正则表达式的语法 正则表达式是一种用于匹配字符串的模式,由普通字符和特…

    python 2023年5月14日
    00
  • python uuid生成唯一id或str的最简单案例

    生成唯一标识符(UUID)是在计算机领域中常见的问题,python中内置有uuid模块,用于生成RFC 4122标准的唯一标识符(UUID)。下面介绍如何使用Python中uuid模块生成唯一标识符。 1. 安装UUID模块 Python中内置了uuid模块,无需安装任何库。 2. 使用Python内置的uuid.uuid1()方法生成UUID 使用uuid…

    python 2023年6月3日
    00
  • Python递归遍历列表及输出的实现方法

    Python递归遍历列表是常见的操作之一,递归是一种解决问题的方法,其中一个函数通过不断调用自身的方式来解决问题。下面是Python递归遍历列表及输出的实现方法的完整攻略。 1. 递归遍历列表的实现方法 要实现Python递归遍历列表并输出其中的元素,可以按照以下步骤进行: 定义一个递归函数,接受一个列表作为参数 判断列表是否为空,如果为空,则直接返回 如果…

    python 2023年6月5日
    00
  • python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程

    Python爬虫一键爬取淘宝天猫宝贝页面主图颜色图和详情图的教程 本文将详细讲解如何使用Python爬虫一键爬取淘宝天猫宝贝页面的主图颜色图和详情图。我们将使用Python中的requests、BeautifulSoup和urllib库来实现这个功能。 1. 获取宝贝页面的HTML源代码 首先,我们需要获取宝贝页面的HTML源代码。可以使用requests库…

    python 2023年5月15日
    00
  • python实现将range()函数生成的数字存储在一个列表中

    Python实现将range()函数生成的数字存储在一个列表中 在Python中,我们可以使用range()函数生成一系列数字,然后将这些数字存储在一个列表中。本攻略将详细介绍如何实现这一过程。 使用list()函数将range()函数生成的数字存储在一个列表中 以下是一个示例代码,演示如何使用list()函数将range函数生成的数字存储在一个列表中: #…

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