📜  在Python中使用 Matplotlib 重叠直方图(1)

📅  最后修改于: 2023-12-03 15:07:55.054000             🧑  作者: Mango

在Python中使用 Matplotlib 重叠直方图

简介

Matplotlib 是 Python 中一种出色的绘图库,适用于 2D 图形。其优点在于简单易学、操作灵活,支持多种图形绘制,包括折线图、散点图、热力图、3D 图等。本文将介绍如何使用 Matplotlib 绘制直方图,及如何重叠两个直方图。

准备工作

在开始绘制直方图前,我们需要先安装 Matplotlib 库。您可以在终端中输入以下命令:

pip install matplotlib

安装成功后,我们就可以开始编写代码了。

编写代码
单个直方图

首先,我们来看如何绘制单个直方图:

import matplotlib.pyplot as plt
import numpy as np

# 构造数据
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

# 生成直方图
n, bins, patches = plt.hist(x, bins=50, density=1, alpha=0.7)

# 设置标题和标签
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 添加文字说明
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()

运行代码后,我们就可以看到如下图所示的直方图:

单个直方图

重叠直方图

重叠直方图与单个直方图的绘制方式类似,只是需要绘制两个直方图,然后将它们重叠在一起。以下是一个示例代码:

# 构造数据
mu1, sigma1 = 100, 15
x1 = mu1 + sigma1 * np.random.randn(10000)

mu2, sigma2 = 130, 20
x2 = mu2 + sigma2 * np.random.randn(10000)

# 生成直方图
n1, bins1, patches1 = plt.hist(x1, bins=50, density=1, alpha=0.7)
n2, bins2, patches2 = plt.hist(x2, bins=50, density=1, alpha=0.7)

# 设置标题和标签
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 添加文字说明
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.text(150, .025, r'$\mu=130,\ \sigma=20$')

# 将两个直方图重叠在一起
plt.clf()
plt.hist(x1, bins=50, density=1, alpha=0.7)
plt.hist(x2, bins=50, density=1, alpha=0.7)

plt.show()

运行代码后,我们就可以看到如下图所示的重叠直方图:

重叠直方图

总结

本文介绍了如何在 Python 中使用 Matplotlib 绘制直方图,并示范了如何重叠两个相似的直方图。希望读者通过本文的学习,能够甚至更熟练地使用 Matplotlib 库。