Python 如何在matplotlib中交互绘制垂直线?
我有一个时间序列图,我需要画一条移动的垂直线来显示兴趣点 我使用下面的玩具示例来实现同样的功能。但是,它同时打印所有线条,而我想一次显示一条垂直线条Python 如何在matplotlib中交互绘制垂直线?,python,plot,Python,Plot,我有一个时间序列图,我需要画一条移动的垂直线来显示兴趣点 我使用下面的玩具示例来实现同样的功能。但是,它同时打印所有线条,而我想一次显示一条垂直线条 import time ion() # turn interactive mode on # initial data x = arange(-8, 8, 0.1); y1 = sin(x) y2 = cos(x) line1, = plt.plot(x, y1, 'r') xvals = range(-6, 6, 2); for i in xv
import time
ion() # turn interactive mode on
# initial data
x = arange(-8, 8, 0.1);
y1 = sin(x)
y2 = cos(x)
line1, = plt.plot(x, y1, 'r')
xvals = range(-6, 6, 2);
for i in xvals:
time.sleep(1)
# update data
plt.vlines(i, -1, 1, linestyles = 'solid', color= 'red')
plt.draw()
你能试着在电话线后打电话吗?plt.draw用于在图形修改后以交互方式重新绘制图形。如果我理解得很好,您希望使用matplotlib的工具。一个例子(改编自: 生成的gif如下所示:
plt.draw
没有帮助谢谢您的详细回复。我在写入文件时出错<代码>运行时错误:写入文件时出错。此错误出现在最后的第_anim.save()行函数中。您的计算机上可能没有安装imagemagick
?奇怪。。。那么你能显示完整的错误信息吗?另外,您正在使用哪些操作系统?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
X_MIN = -6
X_MAX = 6
Y_MIN = -1
Y_MAX = 1
X_VALS = range(X_MIN, X_MAX+1) # possible x values for the line
def update_line(num, line):
i = X_VALS[num]
line.set_data( [i, i], [Y_MIN, Y_MAX])
return line,
fig = plt.figure()
x = np.arange(X_MIN, X_MAX, 0.1);
y = np.sin(x)
plt.scatter(x, y)
l , v = plt.plot(-6, -1, 6, 1, linewidth=2, color= 'red')
plt.xlim(X_MIN, X_MAX)
plt.ylim(Y_MIN, Y_MAX)
plt.xlabel('x')
plt.ylabel('y = sin(x)')
plt.title('Line animation')
line_anim = animation.FuncAnimation(fig, update_line, len(X_VALS), fargs=(l, ))
#line_anim.save('line_animation.gif', writer='imagemagick', fps=4);
plt.show()