Python matplotlib不';在x轴上不显示实时
我通过Paramiko从远程设备收集的数据提供以下动画。 如果我理解动画间隔的概念,值为1000秒,动画应该每1000毫秒更新一次绘图,x轴应该以秒为单位显示实时单位 在测量动画功能和内部的不同部分后,动画功能的执行时间似乎超过1秒,而从远程设备提取inf.的动画部分占用了大部分时间 拉动功能是否需要超过1秒并不重要,最重要的是绘制的信息对应于x轴上的第二个单位 如何确保绘图在X轴上显示实时单位(在我的情况下是秒),在y轴上显示相应的y值,即使读取过程所用的时间超过了时间单位Python matplotlib不';在x轴上不显示实时,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,我通过Paramiko从远程设备收集的数据提供以下动画。 如果我理解动画间隔的概念,值为1000秒,动画应该每1000毫秒更新一次绘图,x轴应该以秒为单位显示实时单位 在测量动画功能和内部的不同部分后,动画功能的执行时间似乎超过1秒,而从远程设备提取inf.的动画部分占用了大部分时间 拉动功能是否需要超过1秒并不重要,最重要的是绘制的信息对应于x轴上的第二个单位 如何确保绘图在X轴上显示实时单位(在我的情况下是秒),在y轴上显示相应的y值,即使读取过程所用的时间超过了时间单位 def GetIn
def GetInfo(stdout):
...
def init():
line.set_data(\[\], \[\])
return line,
def animate(i):
### I
tRefAnim = time.time()
global penQ
global halfTimer
global tRef
### II
tRefSess = time.time()
Session = CParam(IP,login , hostname, sshpass)
Session.SendCmd(command)
DAMINFO = GetInfo(Session.stdout)
print "Device Session time = " + "{0:.3f}".format(time.time()-tRefSess)
### III
tRefAnn = time.time()
...
print "Conditional annotations = " + "{0:.3f}".format(time.time()-tRefAnn)
### IV
tRefDraw = time.time()
# Collect data into x and y lists
xdata.append(i)
ydata.append(y)
xmin, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()
###changing the xmax dynamically
if i >= xmax:
ax.set_xlim(xmin, xmax+(xmax/2))
ax.figure.canvas.draw()
###changing the ymax dynamically
if y >= ymax:
ax.set_ylim(ymin, y+(y/10))
ax.figure.canvas.draw()
#line.set_data(x, y)
line.set_data(xdata, ydata)
print "Drawing time = " + "{0:.3f}".format(time.time()-tRefDraw)
print "animate time = " + "{0:.3f}".format(time.time()-tRefAnim)
return line,
# initializing parameters
...
#initial max x axis
init_xlim = 5
init_ylim = 3500
# First set up the figure, the axis, and the plot element we want to animate
fig = plt.figure()
ax = plt.axes(xlim=(0, init_xlim), ylim=(0, init_ylim))
ax.grid()
line, = ax.plot(\[\], \[\], lw=2)
#x = np.linspace(4, 5, 1000)
xdata, ydata = \[\], \[\]
anim = animation.FuncAnimation(fig, animate, init_func=init,frames=2000, interval=1000, blit=False)
plt.show()][1]
测时结果
Drawing time = 0.000
animate time = 1.149
Device Session time = 1.167
Conditional annotations = 0.000
Drawing time = 0.000
animate time = 1.168
Device Session time = 1.059
Conditional annotations = 0.000
Drawing time = 0.000
animate time = 1.060
Device Session time = 1.072
Conditional annotations = 0.000
Drawing time = 0.000
animate time = 1.073
Device Session time = 1.049
Conditional annotations = 0.000
Drawing time = 0.069
animate time = 1.119
Device Session time = 1.155
Conditional annotations = 0.000
Drawing time = 0.000
animate time = 1.156
我设法以+/-300毫秒的精度得到了显示时间的曲线图
- 我将animation.FuncAnimationinterval参数设置为1500毫秒 略大于动画功能所需的时间(约1200毫秒)
- 我使用全局变量作为时间参考