我在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)
之后(有0.0和0.6)
我做错了什么?我该怎么解决这个问题?
答案 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()