배열이 필요한 matplotlib.animation에서 사용할 컬렉션 (LineCollection) 인 networkx.draw 함수의 출력을 사용하려고합니다. PNG로 내 모습을 저장하고 싶지 않습니다. 왜냐하면 많은 것들이 있기 때문입니다. 나는 또한 그것을 표시하고 싶지 않지만 결정적인 것은 아니다.LineCollection을 Array로 변환하거나 Networkx 그래프 애니메이트
간단한 코드가 될 수
import networkx as nx
graph= nx.complete_graph(5) #a simple graph with five nodes
Drawing=nx.draw(graph)
이 파이썬 컬렉션 출력 :
<matplotlib.collections.LineCollection at 0xd47d9d0>
를 I 도면 그런 종류의 목록을 생성 할 :
artists=[]
artists.append(Drawing)
및 애니메이션에서 그 도면을 더 사용하십시오 :
나는 아래와 같은 형식 오류 얻을 그러나import matplotlib
fig= plt.figure() #initial figure, which can be empty
anim=matplotlib.animation.ArtistAnimation(fig, artists,interval=50, repeat_delaty=1000)
: 그래서
TypeError: 'LineCollection' object is not iterable
, 내가 "아티스트"목록이 NumPy와 배열이나 PIL라는 PNG 이미지 또는 뭔가해야하거나 이미지의 목록이어야합니다 생각 (나는 익숙하지 않다.), 그리고 이미지를 png 또는 다른 형식으로 저장하지 않고 컬렉션을 변환하는 방법을 모른다.
이 사실이 내가하고 싶은 것입니다 : a dynamic animation를, 내가 가지고있는 도면 중 하나 im = plt.imshow(f(x, y))
를 사용하려고하면, 그것은이 오류가 있습니다 : 나는 충분히 명확했다 희망
TypeError: Image data can not convert to float
을,이다 처음으로 애니메이션 및 음모 도구를 사용했습니다. 누구든지 해결책이 있습니까?
Ipython을 사용하여 코드를 시도했지만 표시하지 않고 ''과 같은 출력을 제공합니다. 귀하의 코드는 디스플레이를 지우지 않고 축을 지우는 것만으로도 매번 축을 다시 작성해야하는 이유를 이해할 수 없습니다. 그리고 내가하고 싶은 것은 이미지를 지우고 그것을 다시 플로팅하는 것입니다. 나는 'plt.ion()'과 'plt.show()'를 'clf()'와 함께 사용하여 직접 시도했지만, 어떤 이유로 든 파이썬 디스플레이가 충돌하고 애니메이션 저장에 도움이되지 않습니다. 이유는 무엇입니까? 그리고 나는 또한 'nx.draw_network (graph, pos)'와 같은 위치를 사용하고 있었지만, 그것과 다른 점이 있습니까? –
potato
방금 [이 답변] (http://stackoverflow.com/a/13571425/3482094)에서 아이디어를 사용하고 타이머 대신'pause()'를 사용했고'plt 대신'pylab.draw()를 사용했습니다. 쇼', 나는 왜 모른다. 그러나 그것은 일했다! 따라서 이전 질문을 무시할 수 있습니다. 그러나 여전히 비디오 문제를 해결할 수 없었다. – potato
죄송합니다. 동영상의 문제점이 무엇을 의미하는지 모르시겠습니까? [여기] (http://matplotlib.org/examples/animation/dynamic_image2.html)의 두 번째 마지막 줄의 주석 처리를 제거하면 동영상을 가져와야합니다. – ChrisE