![](/img/trans.png)
[英]Load nodes with attributes and edges from DataFrame to NetworkX
[英]Select nodes and edges form networkx graph with attributes
我剛開始在networkx中做圖表,我想及時跟蹤圖形的演變:它是如何變化的,圖形中指定時間t的節點/邊緣是什么。
這是我的代碼:
import networkx as nx
import matplotlib.pyplot as plt
G=nx.Graph()
G.add_node(1,id=1000,since='December 2008')
G.add_node(2,id=2000,since='December 2008')
G.add_node(3,id=3000,since='January 2010')
G.add_node(4,id=2000,since='December 2016')
G.add_edge(1,2,since='December 2008')
G.add_edge(1,3,since='February 2010')
G.add_edge(2,3,since='March 2014')
G.add_edge(2,4,since='April 2017')
nx.draw_spectral(G,with_labels=True,node_size=3000)
plt.show()
這顯示了包含所有節點和邊的圖。
所以,我的問題是:
如何設計一個基於時間的過濾器,它將在時間t僅提取我的圖G圖上的相關節點/邊,例如'2014年7月'。 完成后,如何使用matplotlib更新圖形?
預先感謝您的幫助
您可以通過使用G.nodes()
方法的列表理解條件選擇節點:
selected_nodes = [n for n,v in G.nodes(data=True) if v['since'] == 'December 2008']
print (selected_nodes)
出: [1, 2]
要選擇邊緣,請使用G.edges_iter
或G.edges
方法:
selected_edges = [(u,v) for u,v,e in G.edges(data=True) if e['since'] == 'December 2008']
print (selected_edges)
出: [(1, 2)]
要繪制所選節點,請調用G.subgraph()
H = G.subgraph(selected_nodes)
nx.draw(H,with_labels=True,node_size=3000)
要使用屬性繪制選定邊,您可以構造新圖:
H = nx.Graph(((u, v, e) for u,v,e in G.edges_iter(data=True) if e['since'] == 'December 2008'))
nx.draw(H,with_labels=True,node_size=3000)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.