I am Charmie

メモとログ

networkx

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()