使用‘for’循环创建多个图形

hgb9j2n6  于 2022-09-21  发布在  其他
关注(0)|答案(2)|浏览(153)

我有一个数据集,看起来像

Node  Target Group
A       B      1
A       C      1
B       D      2
F       E      3
F       A      3
G       M      3

我想为组中的每个不同的值创建一个图表。共5组。

file_num = 1
for item <=5: # this is wrong
    item.plot(title='Iteration n.'+item)
    plt.savefig(f'{file}_{file_num}.png')
    file_num += 1

    G = nx.from_pandas_edgelist(df, source='Node', target='Target')

    cytoscapeobj = ipycytoscape.CytoscapeWidget()
    cytoscapeobj.graph.add_graph_from_networkx(G)
    cytoscapeobj

然而,这段代码不会生成单独的图(G和来自Cytoscape的对象),这意味着(至少)循环中的某些东西不起作用。任何帮助都是非常有用的。

fnatzsnv

fnatzsnv1#

让我们将DataFrame命名为df。然后迭代Group列中的唯一值,用这个Group值子集df,并在循环的每次迭代中保存一个新的数字。

file_num = 1
for group_val in df.Group.unique():
    df_group = item[item['group'] == group_val]
    df_group.plot(title='Iteration n.'+item)
    plt.savefig(f'{file}_{file_num}.png')
    file_num += 1

    G = nx.from_pandas_edgelist(df_group, source='Node', target='Target')

    cytoscapeobj = ipycytoscape.CytoscapeWidget()
    cytoscapeobj.graph.add_graph_from_networkx(G)
    cytoscapeobj
h43kikqp

h43kikqp2#

您应该在cytoscapeobj上使用Display()函数:

for group_val in df.Group.unique():
<...>
    display(cytoscapeobj)

相关问题