2016-08-25 41 views
5

Chcę manipulować osią x podczas wykresu w czasie rzeczywistym, aby najwyżej można było zobaczyć 10 próbek jednocześnie. Wygląda na to, że aktualizacje plt.axis() są aktualizowane tylko raz po zainicjowaniu wykresu. Jakieś sugestie? Z góry dziękuję!Przenoszenie osi x w matplotlib podczas wykresu w czasie rzeczywistym (python)

import numpy as np 
import matplotlib.pyplot as plt 

# Initialize 
x_axis_start = 0 
x_axis_end = 10 

plt.axis([x_axis_start, x_axis_end, 0, 1]) 
plt.ion() 

# Realtime plot 
for i in range(100): 
    y = np.random.random() 
    plt.scatter(i, y) 
    plt.pause(0.10) 
    # print(i) 

    if i%10 == 0 and i>1: 
     # print("Axis should update now!") 
     plt.axis([x_axis_start+10, x_axis_end+10, 0, 1]) 

Odpowiedz

1

Musisz zaktualizować x_axist_start i x_axis_end w rachunku if!

if i%10 == 0 and i>1: 
    print("Axis should update now!") 
    x_axis_start += 10 
    x_axis_end += 10 
    plt.axis([x_axis_start, x_axis_end, 0, 1]) 

To działa! :)

Objaśnienie: Dodano 10 tylko do obu parametrów. Na koniec zawsze dodawałeś 10 do 0 i 10, pozostawiając tylko jedną aktualizację.

+0

Och chłopcze, to takie proste! Dziękuję bardzo! – NumbThumb

+0

Nie ma za co. Dobra robota na minimalnym przykładzie pracy, nie widzimy ich wystarczająco dużo! – Ian