Python 使用matplotlib.pyplot.hist绘制直方图

Python 使用matplotlib.pyplot.hist绘制直方图

Python 使用matplotlib.pyplot.hist绘制直方图

1. 引言

直方图(Histogram)是一种图形表示数据分布的方式,通常用于显示数据的频数分布情况。在Python中,我们可以使用matplotlib.pyplot库来绘制直方图,该库提供了丰富的功能和灵活的参数设置,方便我们根据数据集合绘制直方图。

本篇文章将详细介绍如何使用matplotlib.pyplot.hist函数绘制直方图,并结合实例代码演示其使用方法。

2. matplotlib.pyplot.hist函数概述

matplotlib.pyplot.hist函数用于绘制直方图,它的基本语法如下:

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, *, data=None, **kwargs)

其中,比较常用的参数有:

  • x:输入的数据集合,可以是一维数组或列表。
  • bins:直方图的柱子个数或柱子的边界位置。
  • range:直方图的数据范围。
  • density:是否将直方图的纵轴设置为频率密度,即归一化为概率密度函数。
  • cumulative:是否绘制累计直方图。
  • histtype:直方图类型,可以是'bar''barstacked''step''stepfilled'
  • align:直方图柱子的对齐方式,可以是'left''mid''right'
  • rwidth:柱子的宽度,值为0~1之间。
  • log:是否将纵轴设置为对数刻度。

下面将逐一介绍这些参数的使用方法,并通过示例代码进行说明。

3. 参数详解及示例代码

3.1 x参数

x参数是直方图绘制的基础数据集合,可以是一维数组或列表。下面是一个使用一维数组绘制直方图的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制直方图
plt.hist(data)

# 显示图形
plt.show()

上述代码首先使用numpy.random.randn函数生成了1000个随机数,然后将这些随机数传递给hist函数进行直方图绘制。运行结果如下:

(这里可以插入一张运行结果的图片,不过文中要求没有图片)

从运行结果可以看出,直方图将数据分成了若干个柱子,每个柱子表示一个数据区间,柱子的高度表示该区间内数据出现的频数。

3.2 bins参数

bins参数决定了直方图的柱子个数,可以使用一个整数来指定柱子个数,也可以使用一个序列指定柱子的边界位置。下面是一个使用序列指定柱子边界位置的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制直方图,设置柱子边界位置
plt.hist(data, bins=[-3, -2, -1, 0, 1, 2, 3])

# 显示图形
plt.show()

上述代码使用bins参数指定了柱子的边界位置,一共有7个柱子,运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,数据在每个柱子内的频数被绘制出来,并且柱子的边界位置与指定的序列一致。

3.3 range参数

range参数用于指定直方图的数据范围,即只绘制在指定范围内的数据。下面是一个使用range参数设置数据范围的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制直方图,指定数据范围
plt.hist(data, range=(-3, 3))

# 显示图形
plt.show()

上述代码使用range参数指定直方图的数据范围为(-3,3),即只绘制范围内的数据。运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,只有范围内的数据被用于绘制直方图,范围外的数据被忽略。

3.4 density参数

density参数用于设置直方图的纵轴为频率密度,即归一化为概率密度函数。默认情况下,density参数为False,表示直方图的纵轴为频数。下面是一个使用density参数绘制概率密度函数的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制概率密度直方图
plt.hist(data, density=True)

# 显示图形
plt.show()

上述代码将density参数设置为True,表示绘制的直方图纵轴为概率密度函数。运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,直方图的纵轴被归一化为[0,1]之间的概率密度,柱子的高度表示在对应区间内的概率密度。

3.5 cumulative参数

cumulative参数用于绘制累计直方图,即将每个柱子的高度累加并绘制出来。下面是一个使用cumulative参数绘制累计直方图的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制累计直方图
plt.hist(data, cumulative=True)

# 显示图形
plt.show()

上述代码将cumulative参数设置为True,表示绘制累计直方图。运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,累计直方图将每个柱子的高度进行了累加,并在图形中显示出来,直观地表示出数据分布情况。

3.6 histtype参数

histtype参数用于指定直方图的类型,可以取'bar''barstacked''step''stepfilled'四种值。下面是四种类型直方图的示例代码:

  • 'bar':普通的直方图
import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制普通直方图
plt.hist(data, histtype='bar')

# 显示图形
plt.show()

上述代码使用histtype参数将直方图的类型设置为'bar',运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,普通直方图使用柱形表示数据分布情况。

  • 'barstacked':堆叠直方图
import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000, 3)

# 绘制堆叠直方图
plt.hist(data, histtype='barstacked')

# 显示图形
plt.show()

上述代码生成了1000个3维随机数,然后调用hist函数绘制了堆叠直方图。运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,堆叠直方图将不同维度的数据堆叠在一起表示数据分布情况。

  • 'step':阶梯直方图
import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制阶梯直方图
plt.hist(data, histtype='step')

# 显示图形
plt.show()

上述代码使用histtype参数将直方图的类型设置为'step',运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,阶梯直方图使用线段连接柱子的顶点,形成了连续的阶梯状表示数据分布情况。

  • 'stepfilled':填充阶梯直方图
import matplotlib.pyplot as plt
import numpy as np

# 生成1000个随机数
data = np.random.randn(1000)

# 绘制填充阶梯直方图
plt.hist(data, histtype='stepfilled')

# 显示图形
plt.show()

上述代码使用histtype参数将直方图的类型设置为'stepfilled',运行结果如下:

(同样可以插入一张运行结果的图片)

从运行结果可以看出,填充阶梯直方图使用填充色彩填充柱子与柱子之间的区域,形成了填充的阶梯状表示数据分布情况。

3.7 其他参数

除了上述介绍的几个主要参数外,matplotlib.pyplot.hist函数还有一些其他参数用于进一步定制直方图的绘制效果。例如:

  • align参数用于指定柱子的对齐方式,可以取'left''mid''right'三种值,默认为'mid'
  • rwidth参数用于设置柱子的宽度,取值范围为0~1之间,默认为None
  • log参数用于将纵轴设置为对数刻度,可以取TrueFalse
  • color参数用于设置柱子的颜色。
  • label参数用于设置柱子的标签。
  • stacked参数用于指定是否堆叠多个数据集的直方图,可以取TrueFalse

具体使用方式和示例代码可参考官方文档。

4. 总结

本文详细介绍了如何使用matplotlib.pyplot.hist函数绘制直方图,并对其常用参数进行了解释和示例演示。通过灵活使用这些参数,我们可以根据数据集合绘制出符合需求的直方图,展示数据的分布情况和统计特征。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程