g=nx.Graph()
plt.figure(figsize=(15,15))#←グラフサイズ
nodesa=df5d['xname'].unique().tolist()
nodesa.append(df5d['yname'].unique()[-1])
nodes=[i[5:] for i in nodesa]
edges=[(i[1][5:],i[2][5:],i[7]) for i in df5d.itertuples()]
g.add_nodes_from(nodes)
g.add_weighted_edges_from(edges)
for (u,v) in g.edges:
if g[u][v]['weight']>=0.0025:#←閾値設定
g.remove_edge(u,v)
と入力すると
RuntimeError Traceback (most recent call last)
<ipython-input-72-1f0ef117a3f1> in <module>
10 g.add_nodes_from(nodes)
11 g.add_weighted_edges_from(edges)
---> 12 for (u,v) in g.edges:
13 if g[u][v]['weight']>=0.0025:#←閾値設定
14 g.remove_edge(u,v)
~\Anaconda3\lib\site-packages\networkx\classes\reportviews.py in iter(self)
1026 seen = {}
1027 for n, nbrs in self._nodes_nbrs():
-> 1028 for nbr in nbrs:
1029 if nbr not in seen:
1030 yield (n, nbr)
RuntimeError: dictionary changed size during iteration
というエラーが出力されます。
edges=[(i[1][5:],i[2][5:],i[7]) for i in df5d.itertuples()]
edges
と入力すると
[('1', '2', 0.001058574453069866),
('1', '3', 0.00156128024980484),
('1', '4', 0.00194647201946472),
('1', '5', 0.002949852507374631),
('1', '6', 0.004207573632538569),
('1', '7', 0.006855718292302898),
('1', '8', 0.008526903851808291),
('1', '9', 0.003766478342749529),
('1', '10', 0.00510204081632653),]
こんな感じに出力されます。
やりたいことは2点間をすべてつないで、そこから距離が指定した数値以上の線を消すということです。
for以下に問題があると思いますが分かりません。
ご回答のほどよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/28 06:20