双直方图#

如何使用 Matplotlib 绘制双直方图。

import matplotlib.pyplot as plt
import numpy as np

# Create a random number generator with a fixed seed for reproducibility
rng = np.random.default_rng(19680801)

生成数据并绘制双直方图#

要生成双直方图,我们需要两个数据集(每个数据集都是一组数字)。我们将使用 plt.hist() 绘制这两个直方图,并将第二个直方图的权重设置为负数。我们将在下面生成数据并绘制双直方图。

N_points = 10_000

# Generate two normal distributions
dataset1 = np.random.normal(0, 1, size=N_points)
dataset2 = np.random.normal(1, 2, size=N_points)

# Use a constant bin width to make the two histograms easier to compare visually
bin_width = 0.25
bins = np.arange(np.min([dataset1, dataset2]),
                    np.max([dataset1, dataset2]) + bin_width, bin_width)

fig, ax = plt.subplots()

# Plot the first histogram
ax.hist(dataset1, bins=bins, label="Dataset 1")

# Plot the second histogram
# (notice the negative weights, which flip the histogram upside down)
ax.hist(dataset2, weights=-np.ones_like(dataset2), bins=bins, label="Dataset 2")
ax.axhline(0, color="k")
ax.legend()

plt.show()
histogram bihistogram

由 Sphinx-Gallery 生成的画廊