複雑ネットワークを使ったシミュレーションをやりたいとき、まずは(周期境界条件のある)格子のネットワーク上でシミュレーションをやってみて、普通の行列を使ったシミュレーションと結果を比べてみたいということはよくあると思います。
そんなときに使えるコードをメモしておきます。
import networkx as nx
import pylab as pl
L = 4
N = L**2
G = nx.Graph()
for x in range(L):
for y in range(L):
G.add_edge(x+(y*L),(x+1)%L+(y*L))
G.add_edge(x+(y*L),(x+(y*L)+L)%N)
nx.draw(G)
pl.show()
結果:
もっとわかりやすい形でプロットすれば良かったですね(でも面倒なのでやりません)。
networkxでも grid_2d_graph() という関数が用意されているのですが、周期境界条件が無い&ノードが1,2,3…という番号でなく、 (0,0), (0,1),… みたいな形でタグ付けされるため見送り。
python - Drawing lattices and graphs with Networkx - Stack Overflow