无法在动画中绘制线条

时间:2017-11-15 09:58:00

标签: python python-2.7 matplotlib

我在Matplotlib中创建了一个动画线,使用下面的脚本从曲线的左侧移动到右侧:

from __future__ import division
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import animation

X =  #Time scale in milliseconds, converted to seconds       

# Data to plot the curves
Y1 = data_orig[410:524,4]
Y2 = data_orig[410:524,3]
Y3 = data_orig[410:524,2]

plt.plot(X, Y1, 'r--', X, Y2, 'b--', X, Y3, 'g--')
plt.grid(True)

plt.xlabel('Time [s]')
plt.ylabel('Force [N]')

X_MIN = 0.0  //0
X_MAX = 0.6  //600
Y_MIN = -300
Y_MAX = 1500
X_VALS = np.arange(X_MIN, X_MAX+1);


def update_line(num, line):
    i = X_VALS[num]
    line.set_data( [i, i], [Y_MIN, Y_MAX])
    return line,

#l , v = plt.plot(0, -200, 600, 1500, linewidth=2, color= 'gold')
l , v = plt.plot(0.0, -200, 0.6, 1500, linewidth=2, color= 'gold')

anim = animation.FuncAnimation(fig, update_line, len(X_VALS), fargs=(l, ), interval=15, blit=False, repeat=False)

plt.show()

问题:如果X_MIN和X_MAX中的值分别设置为0和600,则该行有效。但当我将其除以1000(转换为秒数时,线条消失。没有错误也会弹出。

之前(0和600)

enter image description here

之后(有0.0和0.6)

enter image description here

我做错了什么?我该怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

可能的问题在于以下几行:

X_VALS = np.arange(X_MIN, X_MAX+1);

您没有指定一些步长,因此当X_MIN和X_MAX为0和0.6时,X_VALS只是一个包含两个条目的数组,[0,1]

所以,一个可能的最小版本效果很好:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation


def update_line(num, line):
    i = X_VALS[num]
    line.set_data([i, i], [Y_MIN, Y_MAX])
    return line,


X_MIN = 0.0
X_MAX = 0.6
Y_MIN = -300
Y_MAX = 1500
step_size = 0.01

fig = plt.figure()
plt.plot([X_MIN, X_MAX], [Y_MIN, Y_MAX], 'r--',)
plt.grid(True)

plt.xlabel('Time [s]')
plt.ylabel('Force [N]')

X_VALS = np.arange(X_MIN, X_MAX + step_size, step_size)

l, v = plt.plot(0.0, -200, 0.6, 1500, linewidth=2, color= 'gold')

anim = animation.FuncAnimation(fig, update_line, len(X_VALS), fargs=(l, ), interval=15, blit=False, repeat=False)

plt.show()