如何使用 Matplotlib 绘制正态分布曲线

如何使用 Matplotlib 绘制正态分布曲线

引言

Matplotlib 是 Python 中最流行的数据可视化库之一,它提供了丰富的绘图功能和多种绘图风格。Matplotlib 的设计初衷是为了生成各种静态、交互式的数据可视化图形,并通过其 API 满足初学者和专业使用者的需求。本文将介绍如何使用 Matplotlib 绘制正态分布曲线。

阅读更多:Matplotlib 教程

背景

在统计学、概率论、自然科学、社会科学和医学等众多领域,正态分布是一种最为常见、也最为重要的概率分布之一。正态分布可以用来描述许多自然现象和实验结果,比如测量值误差、人口和体重等等。
正态分布的概率密度函数形如下式:
f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}
其中,\mu 是均值,\sigma 是标准偏差。正态分布的均值和标准偏差决定了正态曲线的位置、形状和分布范围。为了更好地理解正态分布,我们将通过 Matplotlib 绘制正态分布曲线。

正文

绘制正态分布曲线,需要使用 Numpy 中的 random 实现生成随机数并计算概率密度函数,以及 Matplotlib 的 plot 函数绘制曲线。我们将从以下三个步骤开始讲起。

步骤一:生成随机数

使用 Numpy 中的 random.randn 函数可以产生远离均值 \mu0 标准差 \sigma1 的正态分布随机数,默认情况下生成随机数的范围是 [0, 1],我们可以通过操作使其符合正态分布。

import numpy as np

mu, sigma = 0, 0.1  # 均值和标准差
s = np.random.normal(mu, sigma, 1000)  # 生成 1000 个符合正态分布的随机数

步骤二:计算概率密度函数

使用 Matplotlib 中的 hist 函数可以绘制直方图并计算概率密度函数。Matplotlib 中的 hist 函数会将随机数分组为多个区间,然后统计每个区间内的随机数数量。这就是直方图的基本原理。

import matplotlib.pyplot as plt

count, bins, ignored = plt.hist(s, 30, density=True)

参数 density=True 表示计算概率密度函数值,参数 bins=30 表示将随机数分为 30 个区间。

步骤三:绘制正态分布曲线

为了绘制正态分布曲线,我们需要将步骤二计算的概率密度函数映射到 x 轴上的数值,并使用 Matplotlib 的 plot 函数绘制曲线。添加一些基本的标题和标签以提高可读性。

import math

x = np.linspace(-4, 4, 1000)  # 生成 x 轴坐标
plt.plot(x, 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-(x - mu) ** 2 / (2 * sigma ** 2)), linewidth=2, color='r')
plt.xlabel('x')
plt.ylabel('Probability density')
plt.title('Normal distribution curve')
plt.show()

生成 x 轴坐标的意义很简单,即指定绘制正态分布曲线的 x 轴范围,这里指定的是 -44,共生成了 1000 个坐标点。在绘制曲线时,我们使用正态分布概率密度函数进行计算,并为图形添加了线宽和红色颜色。最后,我们使用 xlabelylabel 函数为图形添加横纵轴标签,使用 title 函数添加标题。最后,我们使用 show 函数显示绘图结果。

这里是完整的代码,大家可以在自己的 Jupyter Notebook 上跑一下看看效果:

import numpy as np
import matplotlib.pyplot as plt
import math

# 生成符合正态分布的 1000 个随机数
mu, sigma = 0, 0.1
s = np.random.normal(mu, sigma, 1000)

# 绘制直方图并计算概率密度函数
count, bins, ignored = plt.hist(s, 30, density=True)

# 计算概率密度函数值并绘制曲线
x = np.linspace(-4, 4, 1000)
plt.plot(x, 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-(x - mu) ** 2 / (2 * sigma ** 2)), linewidth=2, color='r')

# 添加标题和标签
plt.xlabel('x')
plt.ylabel('Probability density')
plt.title('Normal distribution curve')

# 显示绘图结果
plt.show()

总结

本文介绍了如何使用 Matplotlib 绘制正态分布曲线,包括如何生成随机数、如何计算概率密度函数以及如何绘制曲线。通过本文的介绍,相信大家已经掌握了使用 Matplotlib 绘制正态分布曲线的基本方法,希望本文能够帮助大家更好地理解正态分布的概念和应用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程