在 matplotlib 中迭代添加总数未知的子图



我有一组嵌套字典,我正在为其生成子图。我需要按字典中的终端答案进行读取和过滤,然后根据字典树上的变量绘制结果。在某些情况下,树上的变量是用于切片其他数据集的索引:

for field in data.keys():
if field.startswith('Header'):
for subheading in data.get(field):
for index, answer in data.get(field).get(subheading).get('Directory').items():
if answer=='yes':
axes.plot(index, seconddataset[subheading]...

我想为完整循环的每次迭代生成一个单独的子图,最好排列在单个列中(我对其他列有其他用途(。如果我知道我将从循环中获得的实例总数,那么我就可以使用plt.subplots(rows, columns)并使用axes[row,column].plot(...)索引每个实例。当我尝试fig.add_subplot方法时,我不断得到以嵌套方式相互重叠的子图 - 子图不会更新其位置以反映随着每次循环迭代而增长的数字。

也许这是糟糕的代码实践,所以我还有一个版本,我通过在迭代字典时计算'yes'答案的数量来获取条目总数,然后将该数字与上面的plt.subplots(rows,columns)策略一起使用。为此,我必须编写该条件嵌套循环并再次迭代它(一次以获得总数,然后再次绘制子图(,但这似乎也效率低下。

有时写出你的问题会给你一个答案。我会在这里写我的,以防有人有评论或有类似的问题。在遍历嵌套字典时,除了计数/收集终端answers外,我还收集了稍后绘制图形所需的变量,将它们附加到列表中。

for field in data.keys():
if field.startswith('Header'):
for subheading in data.get(field):
for index, answer in data.get(field).get(subheading).get('Directory').items():
if answer=='yes':
subheading_list.append(subheading)
index_list.append(index)
fig,axes = plt.subplots(len(index_list),3)
for i in range (0,len(index_list)):
axes[i,0].plot(index_list[i], seconddataset[subheading_list[i]]...

最新更新