유한 요소법을 사용하여 2D 열 흐름 문제에 대해 생성 한 일련의 표면 플롯에 애니메이션을 적용하려고했습니다. 매 시간 단계마다 더 효율적으로 전체 행렬 대신 음모를 저장했습니다.ArtistAnimation을 사용하여 matplotlib에서 png 애니메이션하기
matplotlib.animation 라이브러리의 FuncAnimation
에 문제가있어서 매번 표면 플롯을 렌더링하고 표면 플롯을 .png 파일로 저장 한 다음 pyplot.imread
을 사용하여 해당 이미지를 읽습니다. 거기에서 각 이미지를 목록에 저장하여 ArtistAnimation (example)을 사용할 수있게하려고합니다. 그러나 애니메이션을 만들지 않고 화면에 imgplot
을 인쇄 할 때 두 개의 빈 공백 플롯과 내 표면 플롯 .png가 생깁니다.
또한, 내가 애니메이션을 저장하려고하면, 나는 다음과 같은 오류 메시지가 :
AttributeError: 'module' object has no attribute 'save'.
목록에서 그들을 저장 현재 디렉토리에서 .pngs 세트에서 독서에 어떤 도움, 및 그런 다음 ArtistAnimation을 사용하여 해당 .png을 "애니메이트"하면 큰 도움이됩니다. 나는 아무것도 좋아할 필요가 없다.
(주 - 나는 코드가 자동화하기 위해, 그래서 불행하게도 나는 iMovie에서 나는 FFmpeg처럼 내 이미지를 애니메이션으로 외부 소스를 사용할 수 없습니다.) 아래
내 코드입니다 :from numpy import *
from pylab import *
import matplotlib.pyplot as plt
import matplotlib.image as mgimg
from matplotlib import animation
## Read in graphs
p = 0
myimages = []
for k in range(1, len(params.t)):
fname = "heatflow%03d.png" %p
# read in pictures
img = mgimg.imread(fname)
imgplot = plt.imshow(img)
myimages.append([imgplot])
p += 1
## Make animation
fig = plt.figure()
animation.ArtistAnimation(fig, myimages, interval=20, blit=True, repeat_delay=1000)
animation.save("animation.mp4", fps = 30)
plt.show()