You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gridspec嵌套子图中配置不同数据集?

嵌套子图加载不同数据集的解决方案

你当前代码的核心问题是所有子图都调用ax.plot(df),导致显示同一组数据。要给每个子图分配不同数据集,只需先准备对应数量的数据集,再通过循环索引匹配到每个子图即可。

修正后的完整代码

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np

# 准备16组模拟数据集(对应2×2外层子图,每个外层含4个内层子图)
# 替换成你自己的真实数据集即可
datasets = []
for _ in range(16):
    x = np.linspace(0, 10, 100)
    y = np.random.randn(100).cumsum()
    datasets.append((x, y))

fig = plt.figure(figsize=(10, 8))
outer = gridspec.GridSpec(2, 2, wspace=0.1, hspace=0.1)

for i in range(4):
    inner = gridspec.GridSpecFromSubplotSpec(4, 1,
                    subplot_spec=outer[i], wspace=0.1, hspace=0.1)

    for j in range(4):
        # 计算当前子图对应的数据集索引
        data_idx = i * 4 + j
        x_data, y_data = datasets[data_idx]
        
        ax = plt.Subplot(fig, inner[j])
        ax.plot(x_data, y_data)  # 加载对应数据集
        # 修正原代码中未定义的`t.set_ha`,这里示例设置子图标题
        ax.set_title(f"Subplot {i+1}-{j+1}", ha='center')
        ax.set_xticks([])
        ax.set_yticks([])
        fig.add_subplot(ax)

plt.show()

关键细节说明

  • 数据集匹配:通过i*4 + j计算每个子图的唯一索引,确保每个子图对应一组独立数据。如果你的数据集是按外层子图分组的,可以用二维列表存储,直接通过datasets[i][j]获取数据。
  • 修正原代码错误:原代码中t.set_ha('center')里的t未定义,这里替换为设置子图标题并居中,你可以根据需求调整为其他文本元素。
  • 数据集替换:把模拟的datasets换成你自己的数据集集合即可,比如存储不同的DataFrame列、单独的DataFrame对象,或者numpy数组。

内容的提问来源于stack exchange,提问作者user20050294

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:45:21