前提・実現したいこと
pythonでベクトルのアニメーションを作りたい.
dataファイルはt:時間,n:x座標,m:y座標,u:x方向の速度,v:y方向の速度
t n m u v
[[ 1 1 -1 5 0]
[ 1 1 -2 0 0]
[ 1 1 -3 0 0]
[ 1 1 -4 0 0]
[ 1 1 -5 0 0]
[ 1 1 -6 0 0]
[ 1 1 -7 0 0]
[ 1 1 -8 0 0]
[ 1 1 -9 0 0]
[ 1 1 -10 -5 0]
[ 1 2 -1 5 0]
[ 1 2 -2 0 2]
[ 1 2 -3 0 0]
[ 1 2 -4 0 0]
[ 1 2 -5 0 0]
[ 1 2 -6 0 0]
[ 1 2 -7 0 0]
[ 1 2 -8 0 0]
[ 1 2 -9 0 1]
[ 1 2 -10 -5 0]
[ 1 3 -1 5 0]
[ 1 3 -2 0 0]
[ 1 3 -3 0 0]
[ 1 3 -4 0 0]
[ 1 3 -5 0 0]
[ 1 3 -6 0 0]
[ 1 3 -7 0 0]
[ 1 3 -8 0 0]
[ 1 3 -9 0 0]
[ 1 3 -10 -5 0]
[ 1 4 -1 5 0]
[ 1 4 -2 0 0]
[ 1 4 -3 0 1]
[ 1 4 -4 0 0]
[ 1 4 -5 0 0]
[ 1 4 -6 0 0]
[ 1 4 -7 0 0]
[ 1 4 -8 0 0]
[ 1 4 -9 0 0]
[ 1 4 -10 -5 0]
[ 1 5 -1 5 0]
[ 1 5 -2 0 0]
[ 1 5 -3 0 0]
[ 1 5 -4 0 0]
[ 1 5 -5 0 2]
[ 1 5 -6 0 0]
[ 1 5 -7 0 0]
[ 1 5 -8 0 0]
[ 1 5 -9 0 0]
[ 1 5 -10 -5 0]
[ 1 6 -1 5 0]
[ 1 6 -2 0 0]
[ 1 6 -3 0 0]
[ 1 6 -4 0 0]
[ 1 6 -5 0 0]
[ 1 6 -6 0 0]
[ 1 6 -7 0 0]
[ 1 6 -8 0 0]
[ 1 6 -9 0 0]
[ 1 6 -10 -5 0]
[ 1 7 -1 5 0]
[ 1 7 -2 0 0]
[ 1 7 -3 0 0]
[ 1 7 -4 0 0]
[ 1 7 -5 0 0]
[ 1 7 -6 0 0]
[ 1 7 -7 0 2]
[ 1 7 -8 0 0]
[ 1 7 -9 0 0]
[ 1 7 -10 -5 0]
[ 1 8 -1 5 0]
[ 1 8 -2 0 0]
[ 1 8 -3 0 0]
[ 1 8 -4 0 0]
[ 1 8 -5 0 0]
[ 1 8 -6 0 0]
[ 1 8 -7 0 0]
[ 1 8 -8 0 0]
[ 1 8 -9 0 0]
[ 1 8 -10 -5 0]
[ 1 9 -1 5 0]
[ 1 9 -2 0 0]
[ 1 9 -3 0 0]
[ 1 9 -4 0 0]
[ 1 9 -5 0 0]
[ 1 9 -6 0 1]
[ 1 9 -7 0 0]
[ 1 9 -8 0 0]
[ 1 9 -9 0 0]
[ 1 9 -10 -5 0]
[ 1 10 -1 5 0]
[ 1 10 -2 0 0]
[ 1 10 -3 0 0]
[ 1 10 -4 0 0]
[ 1 10 -5 0 0]
[ 1 10 -6 0 0]
[ 1 10 -7 0 0]
[ 1 10 -8 0 0]
[ 1 10 -9 0 0]
[ 1 10 -10 -5 0]
[ 2 1 -1 5 0]
[ 2 1 -2 0 0]
[ 2 1 -3 0 0]
[ 2 1 -4 0 0]
[ 2 1 -5 0 0]
[ 2 1 -6 0 0]
[ 2 1 -7 0 0]
[ 2 1 -8 0 0]
[ 2 1 -9 0 0]
[ 2 1 -10 -5 0]
[ 2 2 -1 5 0]
・・・
[100 9 -9 -2 0]
[100 9 -10 -5 0]
[100 10 -1 5 0]
[100 10 -2 3 0]
[100 10 -3 2 0]
[100 10 -4 1 0]
[100 10 -5 0 0]
[100 10 -6 0 0]
[100 10 -7 -1 0]
[100 10 -8 -2 0]
[100 10 -9 -4 0]
[100 10 -10 -5 0]]
となっています.
該当のソースコード
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
data=np.genfromtxt('data.csv',delimiter=',',dtype=int)
data_trans=np.transpose(data)
t=np.array(data_trans[0])
n=np.array(data_trans[1])
m=np.array(data_trans[2])
u=np.array(data_trans[3])
v=np.array(data_trans[4])
np.set_printoptions(threshold=np.inf)
fig=plt.figure()
ims=[]
for i in range(100):
a=100i
b=100(i+1)
im=plt.quiver(n[a:b],m[a:b],u[a:b],v[a:b])
ims.append(im)
ani=animation.ArtistAnimation(fig,ims)
plt.show()
問題
imsのリストに画像が入っていくのですが,前の時間の画像の上に書かれてしまい,最終的には,このようになってしまいます.どうすればベクトルの時間変化がgifのようなアニメーションとして出力されるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/18 08:10