首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有一个动力系统相空间的数据集存储在一个文件中,并想要它的2-D动画在python中

我有一个动力系统相空间的数据集存储在一个文件中,并想要它的2-D动画在python中
EN

Stack Overflow用户
提问于 2019-05-17 20:45:20
回答 1查看 85关注 0票数 1

我有一个包含动力系统的x和y坐标的数据文件。我想用python创建它的动画。

我尝试过将matplotlib.animation作为动画。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()
ax = plt.axes(xlim=(0, 1), ylim=(-.1, .1))

filename = '{}{}'.format("file_1234",".txt")
data1=np.loadtxt(filename)
s1=data1[:,0]
t1=data1[:,1]
line, = ax.plot(s1, t1)
def init():  # only required for blitting to give a clean slate.
    line.set_ydata([np.nan] * len(s1))
    return line,


def animate(i):
    line.set_data(s1[i],t1[i])
    #~ line.set_ydata(t1[i])
    #~ line.set_ydata(t1)
    return line,


ani = animation.FuncAnimation(
    fig, animate, init_func=init, interval=2, blit=True, save_count=50)

plt.show()

我已经尝试过这个代码,但无法获得确切的相空间。请帮我找出错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-18 19:10:01

代码语言:javascript
复制
enter code here
import numpy as np   

import matplotlib.pyplot as plt     

import matplotlib.animation as animation                         

fig = plt.figure()                      

ax = plt.axes(xlim=(0, 1), ylim=(-.25, .2))                         

filename = '{}{}'.format("file_1",".txt")

data1=np.loadtxt(filename)


filename = '{}{}'.format("file_2",".txt")      

data2=np.loadtxt(filename)

colors1 = ['b', 'b', ]

colors = ['r', 'r']

lines = sum([ax.plot([], [], [], '-', c=c)
         for c in colors], [])

pts = sum([ax.plot([], [], [], 'o', c=c)
       for c in colors], [])

lines1 = sum([ax.plot([], [], [], '-', c=c)
         for c in colors1], [])

pts1 = sum([ax.plot([], [], [], 'o', c=c)
       for c in colors1], [])

def init():

    for line, pt, line1, pt1 in zip(lines, pts, lines1, pts1):

        line.set_data([], [])

        pt.set_data([], [])

        line1.set_data([], [])

        pt1.set_data([], [])     

    return lines + pts + lines1 + pts1


def animate(i):

    for line, pt, line1, pt1, xi, yi in zip(lines, pts, lines1, pts1, data1, data2):

        x, y = data1[:i].T

        p, q = data2[:i].T

        line.set_data(x, y)
        pt.set_data(x[-1:], y[-1:])
        line1.set_data(p, q)
        pt1.set_data(p[-1:], q[-1:])

    return lines + pts + lines1 + pts1

anim = animation.FuncAnimation(fig, animate, init_func=init,
                           frames=7000, interval=10, blit=True)

Writer = animation.writers['ffmpeg']
writer = Writer(fps=500, metadata=dict(artist='Me'), bitrate=100)
anim.save('video.mp4', writer=writer)
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56186700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档