如何减少边缘的尺寸/大小?

时间:2021-01-28 11:00:20

标签: python pandas networkx

我有以下数据集:

    Person1            Age       Person2         Wedding
0   Adam John          3        Yao Ming         Green
1   Mary Abbey         5       Adam Lebron       Green
2   Samuel Bradley     24      Mary Lane         Orange
3   Lucas Barney       12      Julie Lime        Yellow
4   Christopher Rice   0.9     Matt Red          Green

我想减少尺寸的重量(例如除以 100 原始值)。 我目前正在按如下方式在网络中添加边:

G = nx.from_pandas_edgelist(df_test, source='Person1', target='Person2', edge_attr='Age')

pos=nx.spring_layout(G, k=0.30, iterations=20)
nx.draw_networkx_nodes(G, pos, node_size=900, nodelist=collist['value'], node_color=collist['Wedding'])
nx.draw_networkx_edges(G, pos, width = [i['Age'] for i in dict(G.edges).values()])

我试图通过取年龄列并除以 100 来创建一个新列作为 Age_n,但实际上它不起作用(因为边缘不会改变它们的大小/重量),当我替换 {{ 1}} 在代码中。

1 个答案:

答案 0 :(得分:1)

您可以在创建 Age 列表的同时将 width 除以某个因子,如下所示:

G = nx.from_pandas_edgelist(df, source='Person1', target='Person2', edge_attr='Age')

plt.figure(figsize=(12,8))
pos=nx.spring_layout(G, k=0.30, iterations=20)
nx.draw_networkx_nodes(G, pos, node_size=500)
nx.draw_networkx_labels(G, pos)
nx.draw_networkx_edges(G, pos, width = [i['Age']/2 for i in dict(G.edges).values()])
plt.box(False)
plt.show()

enter image description here

虽然在您指定时分配一个新的 Age确实 也可以,因为它的作用与上述相同:

G = nx.from_pandas_edgelist(df.assign(Age=df.Age/2), source='Person1', 
                            target='Person2', edge_attr='Age')