【问题标题】:Drawing Networkx subgraph with Graphviz使用 Graphviz 绘制 Networkx 子图
【发布时间】:2019-10-27 08:14:44
【问题描述】:

给定一个像下面这样的网络:

import pandas as pd
import networkx as nx
import graphviz

df = pd.DataFrame({'id_emp' : [13524791000109, 12053850000137, 4707821000113, 4707821000114, 1],
       'name_emp': ['Cristiano', 'Gaúcho', 'Fenômeno','Angelin', 'Souza'],
       'name_dep': ['Ronaldo','Ronaldo', 'Ronaldo', 'Ronaldo', 'Bruno'],
       'weight_1': [8,9,10,11,12],
       'weight_2':[5,6,7,8,9] })

G = nx.MultiDiGraph()

G.add_nodes_from(df['id_emp'], bipartite = 0)
emp = [v for v in G.nodes if G.nodes[v]['bipartite'] == 0]

G.add_nodes_from(df['name_dep'], bipartite = 1)
dep = [v for v in G.nodes if G.nodes[v]['bipartite'] == 1]

G.add_weighted_edges_from(df[['name_dep', 'id_emp', 'weight_1']].values)
G.add_weighted_edges_from(df[['id_emp', 'name_dep', 'weight_2']].values)
edge_width = [a[2]['weight']//2 for a in G.edges(data=True)]

 d = graphviz.Digraph()

 for n in dep:
     d.node(str(n), color="#bfbf7f")

for n in emp:
    d.node(str(n), color="red")

for e in G.edges:
    d.edge(str(e[0]), str(e[1]))

d.attr(size='8')

# To display the graph on Jupyter
d

使用networkx我只能用Ronaldo节点的连接绘制一个子图,代码如下:

dep = "Ronaldo"
lista_subset_graph = list(df[df["name_dep"] == dep]["id_emp"]) + [dep]
H = G.subgraph(lista_subset_graph)

nx.draw(H, style = "solid", with_labels = True)
plt.figure(figsize=(10,10))
plt.show()  # display

如何使用 Graphviz 仅使用 Ronaldo 的连接绘制相同的子图?

【问题讨论】:

    标签: python networkx graphviz


    【解决方案1】:

    要使用graphviz绘图,只需用networkx指向子程序的节点和边

    dep = "Ronaldo"
    lista_subset_graph = list(df[df["name_dep"] == dep]["id_emp"]) + [dep]
    H = G.subgraph(lista_subset_graph)
    
    dr = graphviz.Digraph(format='png')
    for n in H.nodes():
        dr.node(str(n))
    
    for n in H.edges():
        dr.edge(str(n[0]), str(n[1]))
    
    dr
    

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多