一组并排的直方图

0 投票
1 回答
1992 浏览
提问于 2025-04-18 16:16

这张图中,第一幅图把整个图分成了几个“窗口”,每个窗口又被分成了几个小窗口(假设每个小窗口有5个数据)。然后,计算每个小窗口的斜率并保存下来。

接下来,我把极坐标平面分成16个象限,并计算每个斜率对应哪个象限。这样,我就得到了如下的数据:

1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,4
4,1,-1,-2,...

在上面的数据集中,每个数字代表一个象限,表示一个小窗口的斜率,每一行代表一个窗口(这些直方图是用这个数据集计算出来的)。

我想要的是,第二幅图能在每个窗口下方显示对应的直方图。到目前为止,我只能从matplotlib页面找到这个例子,但这些例子都不符合我的需求,因为我需要的直方图是并排显示的,不能互相遮挡。有时候,根据使用的参数,可能会在同一个图中显示超过800个直方图。

1 个回答

0

下面是一个例子,教你如何用 Gridspec 来把多个图表并排显示在一个更大的图表下面:

import numpy as np
import matplotlib.pyplot as plt

# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)

# plot it
fig = plt.figure(figsize=(8, 6))
ax0 = plt.subplot2grid((2, 4), (0, 0), colspan=4)
ax0.plot(x, y)
ax1 = plt.subplot2grid((2, 4), (1, 0))
ax1.hist(y)
ax2 = plt.subplot2grid((2, 4), (1, 1))
ax2.hist(y)
ax2.set_yticklabels([])
ax2.set_yticks([])
ax3 = plt.subplot2grid((2, 4), (1, 2))
ax3.hist(y)
ax3.set_yticklabels([])
ax3.set_yticks([])
ax4 = plt.subplot2grid((2, 4), (1, 3))
ax4.hist(y)
ax4.set_yticklabels([])
ax4.set_yticks([])

plt.subplots_adjust(wspace=0) # no space left between hists in 2nd row

结果如下所示:

enter image description here

撰写回答