如何减少 dimension/size 个边?
How to reduce dimension/size of edges?
我有以下数据集:
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()])
我试图通过将 Age 列除以 100 来创建一个新列 Age_n
,但实际上它不起作用(因为边不会改变它们的 size/weight),当我在代码中替换了Age_n
。
您可以在创建 width
列表的同时将 Age
除以某个因子,如下所示:
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()
虽然按照您指定的方式分配一个新的 Age
列 也确实 有效,因为它的作用与上述相同:
G = nx.from_pandas_edgelist(df.assign(Age=df.Age/2), source='Person1',
target='Person2', edge_attr='Age')
我有以下数据集:
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()])
我试图通过将 Age 列除以 100 来创建一个新列 Age_n
,但实际上它不起作用(因为边不会改变它们的 size/weight),当我在代码中替换了Age_n
。
您可以在创建 width
列表的同时将 Age
除以某个因子,如下所示:
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()
虽然按照您指定的方式分配一个新的 Age
列 也确实 有效,因为它的作用与上述相同:
G = nx.from_pandas_edgelist(df.assign(Age=df.Age/2), source='Person1',
target='Person2', edge_attr='Age')