Matplotlib 三维直方图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何使用 Python Matplotlib 创建二维数据的三维直方图。直方图是一种数据的图形表示,它将一系列值分组到各个区间中,而三维直方图通过在可视化中添加第三个维度扩展了这一概念。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入库

在创建三维直方图之前,我们需要导入必要的库。在这种情况下,我们将使用 NumPy 和 Matplotlib。

import matplotlib.pyplot as plt
import numpy as np

生成数据

接下来,我们将生成一些随机的二维数据用于直方图。我们将使用 NumPy 的 random.rand() 函数为 x 和 y 变量各生成 100 个随机值。

## Fixing random state for reproducibility
np.random.seed(19680801)

x, y = np.random.rand(2, 100) * 4

创建直方图

现在我们已经有了数据,就可以创建三维直方图了。我们将使用 NumPy 的 histogram2d() 函数来创建数据的二维直方图,然后使用 Matplotlib 的 bar3d() 函数来创建直方图的三维柱状图。

hist, xedges, yedges = np.histogram2d(x, y, bins=4, range=[[0, 4], [0, 4]])

## Construct arrays for the anchor positions of the 16 bars.
xpos, ypos = np.meshgrid(xedges[:-1] + 0.25, yedges[:-1] + 0.25, indexing="ij")
xpos = xpos.ravel()
ypos = ypos.ravel()
zpos = 0

## Construct arrays with the dimensions for the 16 bars.
dx = dy = 0.5 * np.ones_like(zpos)
dz = hist.ravel()

ax.bar3d(xpos, ypos, zpos, dx, dy, dz, zsort='average')

显示直方图

最后,我们可以使用 Matplotlib 的 show() 函数来显示直方图。

plt.show()

总结

在这个实验中,你学习了如何使用 Python 的 Matplotlib 创建二维数据的三维直方图。你还学习了如何生成随机数据、创建二维直方图以及创建该直方图的三维柱状图。通过遵循这些步骤,你可以创建自己的三维直方图来可视化你自己的数据。