如何在Python中通过直方图绘制正态分布

yizhihongxing

绘制正态分布的直方图需要使用Python中的matplotlib库。下面是整个过程的详细步骤:

导入相关库

首先,我们需要导入matplotlib库,以及numpy库(生成随机数据):

import matplotlib.pyplot as plt
import numpy as np

生成随机数据

接下来,我们需要生成一个正态分布的随机数据集。可以使用numpy中的random模块来生成:

mu, sigma = 0, 0.1  # 正态分布的均值和标准差
data = np.random.normal(mu, sigma, 10000)  # 生成10000个数据点

上面的代码中,normal函数用于生成正态分布,其中musigma分别是分布的均值和标准差,10000是数据点个数。

绘制直方图

有了数据之后,我们就可以绘制直方图了。在matplotlib中,可以使用hist函数来绘制直方图。需要注意的是,由于直方图表示的是分布,因此应该将数据分成一定数量的“bin”,将数据点放到不同的“bin”中。

n, bins, patches = plt.hist(data, density=True, bins=50, alpha=0.5)
plt.show()

上面的代码中,hist函数的参数包括:

  • data:需要绘制直方图的数据
  • density:是否对数值进行归一化处理
  • bins:数据点分成的“bin”的数量
  • alpha:直方图的透明度,取值范围为0到1

绘制出来的直方图如下图所示:

正态分布直方图

配置直方图

可以通过set_titleset_xlabelset_ylabel函数来设置标题和坐标轴标签,从而使图表更加清晰易懂:

plt.hist(data, density=True, bins=50, alpha=0.5)
plt.title('Normal Distribution Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()

绘制多个直方图

可以使用subplots函数来在同一图表中绘制多个直方图:

fig, axs = plt.subplots(1, 3, figsize=(12, 4), sharey=True, tight_layout=True)

# 绘制均值为0的正态分布
mu_0, sigma_0 = 0, 0.1
data_0 = np.random.normal(mu_0, sigma_0, 10000)
axs[0].hist(data_0, density=True, bins=50, alpha=0.5)
axs[0].set_title('Mean=0')

# 绘制均值为1的正态分布
mu_1, sigma_1 = 1, 0.5
data_1 = np.random.normal(mu_1, sigma_1, 10000)
axs[1].hist(data_1, density=True, bins=50, alpha=0.5)
axs[1].set_title('Mean=1')

# 绘制均值为2的正态分布
mu_2, sigma_2 = 2, 1
data_2 = np.random.normal(mu_2, sigma_2, 10000)
axs[2].hist(data_2, density=True, bins=50, alpha=0.5)
axs[2].set_title('Mean=2')

plt.show()

上面的代码中,subplots函数的参数包括:

  • 1:绘制1行
  • 3:绘制3列
  • figsize:图表的大小
  • sharey:共享y轴标度
  • tight_layout:调整子图之间的布局

效果如下图所示:

多个正态分布直方图

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python中通过直方图绘制正态分布 - Python技术站

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

相关文章

  • 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
  • python学习必备知识汇总

    Python是一门十分强大的编程语言,它具有易学易用、高效、开发效率高等特点。要想学好Python,需要掌握一些基本的编程概念和语法知识,以及Python生态中的相关库和工具。以下是Python学习必备知识的详细攻略: 1. Python基础语法 在学习Python之前,先要掌握基础的编程思想和语法规则,比如变量、数据类型、运算符、流程控制、函数、模块等。可…

    python 2023年5月13日
    00
  • python re模块常见用法例举

    下面是详细的攻略: Python中re模块常见用法例举 在Python中,re模块是用于正则表达式操作的模块。它提供了一系列函数,用进行字符串的匹配、替换、分割等操作。本文将介绍Python中re模块的常见用法,并提供两个示例说明。 re模块常见函数 在Python中,re模块提供了一系列函数,用于进行正则表达式操作。下面是re模块常见函数的介绍: re.m…

    python 2023年5月14日
    00
  • Python元组拆包和具名元组解析实例详解

    Python 元组拆包和具名元组解析实例详解 本文主要介绍 Python 中元组拆包和具名元组的使用方法和实例。通过这篇文章,你可以了解到: Python 元组拆包如何使用以及它的具体应用场景 Python 具名元组的概念和使用方法 Python 元组拆包和具名元组的区别,以及实际应用 Python 元组拆包 Python 元组拆包是指将一个序列(比如列表、…

    python 2023年5月14日
    00
  • Python实战之实现简单的名片管理系统

    Python实战之实现简单的名片管理系统 实现思路 本名片管理系统基于Python语言实现,使用字典来存储每个名片的信息。系统运行时,首先展示主菜单,用户可以选择添加名片、显示全部名片、查询名片或退出系统。根据用户选择,进行相应的功能操作,将信息保存到字典或者从字典中查询信息。实现整个过程需要使用函数、循环、条件语句等基本编程元素。 代码实现 1. 主程序代…

    python 2023年5月30日
    00
  • python utc datetime转换为时间戳的方法

    下面是详细讲解 “Python UTC datetime转换为时间戳的方法” 的完整攻略: 什么是时间戳 时间戳是指某个时间点与某个固定的日期时间点(称为“基准时间”)之间的间隔,一般是指从 1970 年 1 月 1 日 0 时 0 分 0 秒(UTC 时间,称为“基准时间”)起至现在的总秒数。 Python 中的时间戳 在 Python 中,可以使用 ti…

    python 2023年6月2日
    00
  • python 使用递归回溯完美解决八皇后的问题

    Python使用递归回溯完美解决八皇后问题 八皇后问题是一个经典的问题,它的目标是在一个8×8的棋盘上放置8个皇后,使得每个皇后都不会互相攻击。在本文中,我们将介绍如何使用Python和递归回溯算法来解决八皇后问题。 问题分析 在八皇后问题中,我们需要在一个8×8的棋盘上放置8个皇后,使得每个皇后都不会互相攻击。具体来说,每个皇后不能在同一行、同一列或同一对…

    python 2023年5月14日
    00
  • Python数组条件过滤filter函数使用示例

    Python数组条件过滤filter函数使用示例 简介 Python中的filter()函数是一种内置函数,它可以快速地按照指定条件过滤出数组中符合要求的元素。该函数返回一个迭代器对象,通过迭代器可以快速访问过滤后的元素。 函数原型 filter(function, iterable) 其中,function是一个布尔类型的函数,用于过滤iterable(可…

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