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

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]]...

关于python - 在matplotlib中迭代添加子图,总数未知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52708886/

10-15 12:04