💬 LANGUAGES/Python

[오류 해결] TypeError: '_AxesStack' object is not callable

삶감 2023. 3. 31. 14:10

[참고링크]
https://stackoverflow.com/questions/74189581/axesstack-object-is-not-callable-while-using-networkx-to-plot

 

'_AxesStack' object is not callable while using networkx to plot

Following one of online tutorials I found it difficult to run even a small piece of paragraph. Here is what I want to write into the graph: a Directed acyclic unweighted matrix into the graph, howe...

stackoverflow.com

 

 

 

문제 상황

  1. nx.draw() 안됨 (TypeError: '_AxesStack' object is not callable)
  2. edge가 node랑 따로 그려짐

 

 

my version of lib

  • networkx = 2.4
  • matplotlib = 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)로 고쳤더니 오류메세지는 안뜨지만

 

 

edges not drawn appropriatly

 

 

 

이따위로 나온다 ^-ㅠ

뭔가 삘이 라이브러리 간 버전 호환인것 같아서 해결하기 위해 `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