networkxの使い方のメモ networkxのTutorialに書いてある.
Graphの生成
import networkx as nx G = nx.Graph()
グラフGにノードを追加
add_nodeでノードを1つ追加,add_nodes_fromで複数のノードをまとめて追加できる
G.add_node(1) G.add_nodes_from([2, 3, 4]) print("#nodes:", G.number_of_nodes()) G.add_node(1, time='5pm') G.add_nodes_from([3], time='2pm') G.nodes[1]['room'] = 714 for v in G.nodes: print(v)
グラフGにエッジを追加
- add_edgeでエッジを1つ追加,add_edges_fromで複数のエッジをまとめて追加できる
- (2, 3, {'weight': 3.1415})のようにエッジの重みを定義することもできる
- 'weight'は特別な属性で,数値を割り当てる必要がある
G.add_edge(1, 2) e = (2, 3) G.add_node(*e) G.add_edges_from([(1, 3), (2, 4)]) print("#edges:", G.number_of_edges()) G.add_edge(1, 2, weight=4.7) G.add_edge(2, 3, color='red') for e in G.edges: print(e) # e is 2-tuple or 3-tuple
ノードの属性に2次元位置を指定してグラフを作成
StackOverflowに書いてあった.
import matplotlib.pyplot as plt import networkx as nx G = nx.Graph() G.add_node(1, pos=(1, 1)) G.add_node(2, pos=(2, 2)) G.add_edge(1, 2) pos = nx.get_node_attributes(G, 'pos') nx.draw(G, pos) plt.show()