networkxでスケールフリーネットワークを扱っています。
そこで次数分布がべき分布になることを確かめたく、それを可視化しました。
以下のコードです
python
1G = nx.read_edgelist('エッジリストのpath.txt', create_using=nx.DiGraph()) 2degree = list(dict(nx.degree(G)).values()) 3 4import collections 5a = dict(collections.Counter(degree)) 6b = [] 7for i in range(max(a.keys())): 8 if i+1 in a.keys(): 9 b.append(a[i+1]) 10 else: 11 b.append(0) 12b = np.array(b) / sum(b)#次数を確率化 13 14 15plt.figure(dpi=50, figsize=(10, 10)) 16plt.plot([i + 1 for i in range(max(a.keys()))], b, marker='o') 17plt.yscale('log') 18plt.xscale('log') 19plt.yticks(fontsize=20) 20plt.xlabel('degree', fontsize=24) 21plt.show()
このように可視化することができました。
しかし、頂点間を結ぶ線を消したく、plt.scatterで可視化することにしました。
plt.plot([i + 1 for i in range(max(a.keys()))], b, marker='o') ↓ plt.scatter([i + 1 for i in range(max(a.keys()))], b, marker='o')
その結果
上の図が出力されてしまいました。
私はplotの図から辺が消えるだけだと思っていましたが、なぜこのような図を出力してしまうのでしょうか。
plt.plot([i + 1 for i in range(max(a.keys()))], b, marker='o') ↓ plt.plot([i + 1 for i in range(max(a.keys()))], b, marker='o', lw=0)
あなたの回答
tips
プレビュー