Python 在同一文件中制作图片和绘图的GIF/动画

Python 在同一文件中制作图片和绘图的GIF/动画,python,animation,matplotlib,gif,Python,Animation,Matplotlib,Gif,我在这里寻求一些建议。我有一个数据文件,基本上包含了我从机械实验中记录的时间、位移和力项。在实验过程中,我每2秒钟记录一张照片 我想制作的是力与位移图演变的动画(*.avi,*.gif,…),以及图上方(或下方)的相应图片 为了做到这一点,我首先制作了一个脚本,这个脚本的灵感来源于论坛上的另一篇帖子,它只生成一个情节动画。然后另一个打开上面的绘图和下面的图片。然而,我没有设法混合这两种代码 下面是两个脚本,如果需要更多了解 脚本1:生成动画情节 import matplotlib.pyplot

我在这里寻求一些建议。我有一个数据文件,基本上包含了我从机械实验中记录的时间、位移和力项。在实验过程中,我每2秒钟记录一张照片

我想制作的是力与位移图演变的动画(*.avi,*.gif,…),以及图上方(或下方)的相应图片

为了做到这一点,我首先制作了一个脚本,这个脚本的灵感来源于论坛上的另一篇帖子,它只生成一个情节动画。然后另一个打开上面的绘图和下面的图片。然而,我没有设法混合这两种代码

下面是两个脚本,如果需要更多了解

脚本1:生成动画情节

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import pytex as p 
import os

#1- Data reading
for filename in os.listdir("."):
    if (filename[0]=="#"):
        f = open(filename,"r+",encoding="utf8")
        d = f.readlines()
        f.seek(0)
        for i in range(len(d)):
            if i == 21:
                f.write(d[i])
            if i > 23:
                f.write(d[i])
        f.truncate()
        f.close()
        os.rename(filename,filename[1:])

#2- Data for plot
def simData():
    for filename in os.listdir("."):
        data = p.loadDataMatrix(filename)
        tt = data["Time (sec)"]
        x_raw = data["Position (microns)"]
        y_raw = data["Load (N)"]
        x = []
        y = []
        t = 0.
        for i in range(0,len(x_raw),3):
            x = x + [x_raw[i] - x_raw[0]]
            y = y + [y_raw[i]]
            t = tt[i]                
            yield x, y, t

def simPoints(simData):
    xx, yy, t = simData[0], simData[1], simData[2]
    time_text.set_text(time_template%(t))
    line.set_data(xx, yy)
    return line, time_text    

#3- Plotting the figure
fig = plt.figure()
ax = fig.add_subplot(111)

ax.set_xlim(0, 450)
ax.set_ylim(0, 65)

delay = 1
line, = ax.plot([], [], 'b-', linewidth = 0.6)

time_template = 'Time = %.01f s'
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)
ani = animation.FuncAnimation(fig, simPoints, simData, interval=delay, repeat=False, save_count = 50000)

ani.save('animation.mp4', fps=100, dpi=100)
脚本2:合并绘图和图像

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as im

fig, (chart, picture) = plt.subplots(nrows=2, figsize=(10,8))

# First, the chart
chart.plot(np.random.random(100))

# Second, an image
image=im.imread("../test_no_8/IMG_004850.tiff")
picture.imshow(image, aspect='auto')
picture.axis('off')


plt.show()
fig.savefig('temp.tiff', dpi=100)

非常感谢您的帮助,如果不清楚,请原谅我的英语。

您还需要生成图像,然后使用图像数据更新imshow绘图
yield x,y,t,img
imshow=picture.imshow(image,aspect='auto')',
imshow.set_data(img)`。非常感谢您的回答,它解决了我的问题。