Я могу получить свой сюжет, чтобы анимировать правильно и отображать то, что мне нужно. Однако, когда я запускаю свою программу, я получаю серию ошибок, которые не влияют на программу, с которой я бы хотел справиться.MatPlotLib RTE xdata и ydata должны быть одинаковой длины
Ошибка возвращается к manager.canvas.draw, где MatPlotLib извергает несколько сотен строк ошибок, а затем останавливается, а затем все работает нормально.
\ Matplotlib \ lines.py», строка 595, в рейза кэширования RuntimeError ('XData и ydata должны быть одинаковой длины')
является последним в каждом вызове
Здесь осуществляется фрагмент кода (вся программа не включена):.
xachse=pylab.arange(0,100,1)
yachse=pylab.array([0]*100)
xachse2=pylab.arange(0,100,1)
yachse2=pylab.array([0]*100)
xachse3=pylab.arange(0,100,1)
yachse3=pylab.array([0]*100)
fig = pylab.figure(1)
ax = fig.add_subplot(111)
ax.grid(True)
ax.set_title("Realtime Pulse Plot")
ax.set_xlabel('time')
ax.set_ylabel('Voltage')
ax.axis([0,100,-10,10])
line1= ax.plot(xachse,yachse,'-', label="AIO6")
line2= ax.plot(xachse2,yachse2,'-', label="DAC0")
line3= ax.plot(xachse3,yachse3,'-', label="DAC1")
ax.legend()
manager = pylab.get_current_fig_manager()
def Voltage(arg):
global values1,values2,values3, ain6, d, DAC0, DAC1
ain6 = d.getAIN(6)
DAC0 = d.readRegister(5000)
DAC1 = d.readRegister(5002)
values3.append(DAC1)
values1.append(ain6)
values2.append(DAC0)
def RealtimePloter(arg):
global values1, values2, values3, manager, line1, line2,line3
CurrentXAxis=pylab.arange(len(values1)-100, len(values1),1)
line1[0].set_data(CurrentXAxis,pylab.array(values1[-100:]))
line2[0].set_data(CurrentXAxis,pylab.array(values2[-100:]))
line3[0].set_data(CurrentXAxis,pylab.array(values3[-100:]))
ax.axis([CurrentXAxis.min(),CurrentXAxis.max(), -10, 10])
manager.canvas.draw()
timer =fig.canvas.new_timer(interval=10)
timer.add_callback(RealtimePloter,())
timer2 = fig.canvas.new_timer(interval=10)
timer2.add_callback(Voltage,())
pylab.show()
Использование CurrentXAxis = np.arange (len (values1) -100, len (values1), 1) ax.axis ([CurrentXAxis.min(), CurrentXAxis.max(), -10, 10]) I ' m, чтобы получить весь график, чтобы следовать с линиями. как бы вы могли перемещать ось x с помощью вашего примера? – user3524785
Я еще не начал работу над тем, что мне хотелось бы, чтобы X Axis действительно была на самом деле, это были последние 10-е данные. Я просто использую ряд данных, которые я собрал из одного из своих массивов, чтобы определить, сколько можно показать. если это поможет вам понять, что я пытаюсь сделать. – user3524785
Я просто отказался от переопределения границ оси – tacaswell