以下のような感じでpos
を渡してあげればよいです。
参考:Draw nodes in fixed position with coordinates in Networks python
それとエッジを繋ぐ方法は自分で入力する以外に方法はありますでしょうか。
これはどのようなルールで繋ぎたいかしだいです。以下のように自動的に指定することもできます。
Python
1import matplotlib.pyplot as plt
2import networkx as nx
3from itertools import combinations, product
4import random
5import math
6
7# ノード。碁盤目状に配置
8N, D = 10, 0.95 # 碁盤の大きさ, ノードの密度
9random.seed(110)
10pos = list(product(range(N), repeat=2))
11random.shuffle(pos)
12pos = {f'{p[0]}{p[1]}':p for p in pos[:int(len(pos)*D)]}
13
14# エッジ。ノード間の距離が1以下
15nodes = pos.keys()
16edges = []
17for n1, n2 in combinations(nodes, 2):
18 p1, p2 = pos[n1], pos[n2]
19 if math.sqrt(abs(p1[0]-p2[0]) + abs(p1[1]-p2[1])) <= 1:
20 edges.append((n1, n2))
21
22G = nx.Graph()
23G.add_nodes_from(nodes)
24G.add_edges_from(edges)
25
26nx.draw(G, pos=pos, with_labels=True)
27plt.show()
密度=0.5
密度=0.95
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。