我是Python新手并尝试使用networkx
可视化中型网络(nodes = 2252 | edges = 36075)。目前,尽管经过了几个小时的研究,我还是有两个我无法解决的简单问题:
导入并重新排列数据后(可以在此Feed的底部看到它的代码),我使用以下代码绘制图表:
G=nx.DiGraph()
G.add_nodes_from(newnds)
G.add_weighted_edges_from(newedgs)
nx.draw(G,node_size=10)
这里出现的问题是我定义的标签被视为附加节点,覆盖了实际节点。所以问题是:我在规范或代码中犯了错误吗?
如果我试图通过nx
动态绘制节点来解决这个问题
G=nx.DiGraph()
G.add_weighted_edges_from(newedgs)
nx.draw(G,node_size=10)
网络是可视化的,但给人的印象是所有节点都以某种方式相互连接,而事实并非如此,因为它是有向图。结果:
因此networkx
中有一个选项可以像Gephi中的布局函数Force Atlas 2
一样传播网络吗?
导入和重新输入数据的代码如下:
import networkx as nx
import pandas as pd
nodesdata = 'XXX/Documents/nodes.csv'
nodes = pd.read_csv(nodesdata)
nodes.head()
import pandas as pd
edgesdata = 'XXX/Documents/edges.csv'
edges = pd.read_csv(edgesdata)
edges.head()
nds=nodes[['Id','Label']]
edgs=edges[['Source','Target','Weight']]
df_edges_t1=edges["Source"].tolist()
df_edges_t2=edges["Target"].tolist()
df_edges_t3=edges["Weight"].tolist()
newedgs=list(zip(df_edges_t1,df_edges_t2,df_edges_t3))
print(newedgs)
df_nodes_t1=nodes["Id"].tolist()
df_nodes_t2=nodes["Label"].tolist()
newnds=list(zip(df_nodes_t1,df_nodes_t2))
print(newnds)