Gridsp内的Gridspec

2024-05-19 08:59:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Gridpec中创建一个GridSpec。 我已经可以在这里创建一些类似我代码的网格规格:

import matplotlib.pyplot as plt

for i in range(40):
    i = i + 1
    ax1 = plt.subplot(10, 4, i)
    plt.axis('on')
    ax1.set_xticklabels([])
    ax1.set_yticklabels([])
    ax1.set_aspect('equal')
    plt.subplots_adjust(wspace=None, hspace=None)
plt.show()

但我要40个网格规格。 在每个Gridspec中应该有另外21个网格(内部网格) 在每个内部网格中,顶部应为一个网格,其余网格应为一行中的6个网格。 就像这个链接末尾的图片: https://matplotlib.org/tutorials/intermediate/gridspec.html 但我不太明白。在

我试过了:

^{pr2}$

Tags: 代码inimportnone网格formatplotlibas
1条回答
网友
1楼 · 发布于 2024-05-19 08:59:14

你确定你想这么做吗?在一个图形中是40*21*6=5040个轴。。。 此外,您的描述(网格中有40个单元格,每个单元格中有21个内部单元格)与提供的代码不匹配,其中您有48个单元格,每个单元格中有25个单元格。。。在

在任何情况下,这就是我要如何生成你所描述的。请注意,您不必生成中间Axes对象。只在你要绘制的地方生成轴。在

最后,取决于你实际想要达到的目标,我很确定肯定有一个比创建数千个轴更好的方法。在

import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(40,100))


outer_grid = gridspec.GridSpec(10,4, wspace=0, hspace=0)

for outer in outer_grid:
    # ax = fig.add_subplot(outer)
    # ax.set_xticklabels([])
    # ax.set_yticklabels([])
    # ax.set_aspect('equal')

    inner_grid_1 = gridspec.GridSpecFromSubplotSpec(5,5, subplot_spec=outer)
    for inner in inner_grid_1:
        # ax1 = fig.add_subplot(inner)
        # ax1.set_xticklabels([])
        # ax1.set_yticklabels([])
        # ax1.set_aspect('equal')

        inner_grid_2 = gridspec.GridSpecFromSubplotSpec(2,6, subplot_spec=inner)
        ax_top = fig.add_subplot(inner_grid_2[0,:]) # top row
        for i in range(6):
            ax2 = fig.add_subplot(inner_grid_2[1,i]) # bottom row
            ax2.set_xticklabels([])
            ax2.set_yticklabels([])

plt.show()

相关问题 更多 >

    热门问题