六边形分箱图

Beginner

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

简介

本教程将指导你使用 Python 中的 Matplotlib 创建六边形分箱图。六边形分箱图是一种二维直方图,其中的箱是六边形,颜色表示每个箱内的数据点数量。它们对于可视化大型数据集的分布很有用。

虚拟机使用提示

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

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

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

导入库

要创建六边形分箱图,我们需要导入以下库:

  • matplotlib.pyplot 用于创建图表
  • numpy 用于生成随机数据
import matplotlib.pyplot as plt
import numpy as np

生成数据

我们将使用 numpy.random.standard_normal() 生成 100,000 个数据点。standard_normal() 从均值为 0、标准差为 1 的标准正态分布中生成随机数。

np.random.seed(19680801)

n = 100_000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
xlim = x.min(), x.max()
ylim = y.min(), y.max()

创建六边形分箱图

我们将使用 matplotlib.pyplot.hexbin() 创建六边形分箱图。

fig, ax = plt.subplots(figsize=(9, 4))

hb = ax.hexbin(x, y, gridsize=50, cmap='inferno')
ax.set(xlim=xlim, ylim=ylim)
ax.set_title("Hexagon binning")

cb = fig.colorbar(hb, ax=ax, label='counts')

在这里,我们将网格大小设置为 50,并将颜色映射设置为 'inferno'。我们还添加了一个颜色条来显示每个六边形内的数据点数量。

添加对数颜色刻度

我们可以通过在 hexbin() 中设置 bins='log' 为六边形分箱图添加对数颜色刻度。

fig, ax = plt.subplots(figsize=(9, 4))

hb = ax.hexbin(x, y, gridsize=50, bins='log', cmap='inferno')
ax.set(xlim=xlim, ylim=ylim)
ax.set_title("With a log color scale")

cb = fig.colorbar(hb, ax=ax, label='log10(N)')

显示图表

最后,我们使用 plt.show() 显示图表。

plt.show()

总结

在本教程中,我们学习了如何使用 Python 中的 matplotlib.pyplot.hexbin() 创建六边形分箱图。我们使用 numpy.random.standard_normal()numpy.random.standard_normal() 生成随机数据,创建六边形分箱图,添加对数颜色刻度,并使用 plt.show() 显示该图。