【问题标题】:Multiple Python Plots Not Showing Plots in Other Subplots多个 Python 绘图未在其他子图中显示绘图
【发布时间】:2020-12-07 07:35:37
【问题描述】:

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

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()

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

【问题讨论】:

  • 首先,插入print("if", cell, subgrd, subgrd2)print("else", cell, subgrd, subgrd2) 以查看脚本没有按照您的想法执行。这就解释了为什么字典不包含您认为它包含的内容。
  • @Mr.T 现在很有意义!谢谢

标签: python matplotlib subplot


【解决方案1】:

您的嵌套 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()

【讨论】:

  • 像魅力一样工作!我想我需要更多的咖啡:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 2017-11-19
  • 2012-11-27
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
相关资源
最近更新 更多