多个 Python 地块未显示其他子地块中的地块

Multiple Python Plots Not Showing Plots in Other Subplots

我写了一个代码来根据可用单元格的数量自动绘制多个网格子图,我做了以下事情:

cell=10
ax = {}
from matplotlib import pyplot as plt

fig = plt.figure(figsize=(10, 4))


for subgrd in range(cell):

    if subgrd < cell / 2:
        for subgrd2 in range(int(cell / 2)):
            key = 'ax' + str(subgrd)
            value = plt.subplot2grid((2, int(cell / 2)), (0, subgrd2))
            ax[key] = value

    else:
        for subgrd2 in range(int(cell / 2)):
            key = 'ax' + str(subgrd)
            value = plt.subplot2grid((2, int(cell / 2)), (1, subgrd2))
            ax[key] = value
print("count ax",len(ax))
for axval in range(len(ax)):
    print(str(axval))
    ax['ax'+str(axval)].plot([[1,2],[4,3]])
    ax['ax'+str(axval)].axes.xaxis.set_visible(False)
    ax['ax'+str(axval)].axes.yaxis.set_visible(False)

plt.show()

不知何故上面的代码只显示了两个图上的数据,不知道为什么?

您的嵌套 for 循环正在替换之前专栏中 ax 字典的内容。去掉嵌套循环,根据subgrd计算行列。这样,您只需为每个键分配一次。

cell=10
ax = {}
from matplotlib import pyplot as plt

fig = plt.figure(figsize=(10, 4))

row_count = 2
column_count = (cell+row_count-1) // row_count
for subgrd in range(cell):
    row = subgrd // column_count
    column = subgrd % column_count
    key = 'ax' + str(subgrd)
    value = plt.subplot2grid((row_count, column_count), (row, column))
    ax[key] = value

print("count ax",len(ax))
for axval in range(len(ax)):
    print(str(axval))
    ax['ax'+str(axval)].plot([[1,2],[4,3]])
    ax['ax'+str(axval)].axes.xaxis.set_visible(False)
    ax['ax'+str(axval)].axes.yaxis.set_visible(False)

plt.show()