将无向NetworkX图转化为有向NetworkX图形



下面的代码有问题。边连接着节点。但是,有没有可能有一个定向的网络,这样,如果一个"人"跟着一个"男人",但只有一种方式,在边缘有箭头或方向。

plt.figure(figsize=(12, 12))
#Create the graph
g = nx.from_pandas_dataframe(peoples_only, source='people_id', target='mans_id') 
layout = nx.spring_layout(g,k=0.05, iterations=1)
people_size = [g.degree(people) * 30 for people in peoples]
nx.draw_networkx_nodes(g, 
layout, 
nodelist=peoples, 
node_size=people_size, # a LIST of sizes, based on g.degree
node_color='lightblue')
#draw all
nx.draw_networkx_nodes(g, layout, nodelist=mans, node_color='#cccccc', node_size=100)
#draw popular peoples
popular_mans = [man for man in mans if g.degree(man) > 1]
nx.draw_networkx_nodes(g, layout, nodelist=popular_mans, node_color='orange', node_size=100)
nx.draw_networkx_edges(g, layout, width=1, edge_color="#cccccc")
node_labels = dict(zip(peoples, peoples))
nx.draw_networkx_labels(g, layout, labels=None)
nx.write_gexf(g, "test.gexf")
plt.axis('off')
plt.title("People mans network")
plt.show()

创建图形时指定create_using=nx.DiGraph()

g = nx.from_pandas_edgelist(peoples_only, source='people_id', target='mans_id', create_using=nx.DiGraph()) 

这将为您提供一个从people_id到mans_id的有向图。

最新更新