Python网络 - 节点标记/图形可视化

时间:2018-04-11 07:40:52

标签: python pandas network-programming visualization graph-visualization

我是Python新手并尝试使用networkx可视化中型网络(nodes = 2252 | edges = 36075)。目前,尽管经过了几个小时的研究,我还是有两个我无法解决的简单问题:

  1. 导入并重新排列数据后(可以在此Feed的底部看到它的代码),我使用以下代码绘制图表:

    G=nx.DiGraph()
    G.add_nodes_from(newnds)
    G.add_weighted_edges_from(newedgs)
    nx.draw(G,node_size=10)
    

    这里出现的问题是我定义的标签被视为附加节点,覆盖了实际节点。所以问题是:我在规范或代码中犯了错误吗?

  2. 如果我试图通过nx动态绘制节点来解决这个问题

    G=nx.DiGraph()
    G.add_weighted_edges_from(newedgs)
    nx.draw(G,node_size=10)
    

    网络是可视化的,但给人的印象是所有节点都以某种方式相互连接,而事实并非如此,因为它是有向图。结果:enter image description here 因此networkx中有一个选项可以像Gephi中的布局函数Force Atlas 2一样传播网络吗?

  3. 导入和重新输入数据的代码如下:

    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)
    

0 个答案:

没有答案