문제 상황
nx.draw()
안됨 (TypeError: '_AxesStack' object is not callable)- edge가 node랑 따로 그려짐
my version of lib
networkx
= 2.4matplotlib
= 3.7.1
Python 3.9 사용
my code
this is code from Networks doc.
import matplotlib.pyplot as plt
import networkx as nx
G = nx.grid_2d_graph(5, 5) # 5x5 grid
# print the adjacency list
for line in nx.generate_adjlist(G):
print(line)
# write edgelist to grid.edgelist
nx.write_edgelist(G, path="grid.edgelist", delimiter=":")
# read edgelist from grid.edgelist
H = nx.read_edgelist(path="grid.edgelist", delimiter=":")
pos = nx.spring_layout(H, seed=200)
nx.draw(H, pos)
plt.show()
발생한 오류
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[37], line 15
12 H = nx.read_edgelist(path="grid.edgelist", delimiter=":")
14 pos = nx.spring_layout(H, seed=200)
---> 15 nx.draw(H, pos)
16 plt.show()
File ~\Anaconda3\envs\py39\lib\site-packages\networkx\drawing\nx_pylab.py:117, in draw(G, pos, ax, **kwds)
115 cf.set_facecolor('w')
116 if ax is None:
--> 117 if cf._axstack() is None:
118 ax = cf.add_axes((0, 0, 1, 1))
119 else:
TypeError: '_AxesStack' object is not callable
<Figure size 640x480 with 0 Axes>
위의 stackoverflow를 보니 아무래도 라이브러리 간 버전 호환이 잘 안된 것 같았음
라이브러리 설치 시에 conda-forge를 사용해서 깔아서 그런가....
아무튼 문제를 해결하기 위해nx.draw(H, pos)
를 nx.draw_networkx(H, pos)
로 고쳤더니 오류메세지는 안뜨지만
이따위로 나온다 ^-ㅠ
뭔가 삘이 라이브러리 간 버전 호환인것 같아서 해결하기 위해 `networkx` 라이브러리를 업데이트 했다.
업데이트 하는 코드 (anaconda prompt 사용)conda install --update-deps networkx
다시 문제 코드를 돌려보니 pillow
에서 _image 를 못 불러오길래 pillow
도 업데이트 해줌
업데이트 하는 코드 (anaconda prompt 사용)conda install --update-deps pillow
다시 문제 코드 돌려서 원하는 그래프 출력 끝~!
하지만 아직 nx.draw()가 안되는 문제 (TypeError: '_AxesStack' object is not callable) 는 해결하지 못했다.
혹시 해결 방법을 아시는 분이 있다면 알려주시길....ㅠㅜ
728x90
728x90