2016-08-25 11 views
5

Я хочу манипулировать осью x во время графика в реальном времени, чтобы одновременно было отображено не более 10 образцов. Кажется, что plt.axis() обновляется только один раз после того, как сюжет был инициализирован. Какие-либо предложения? Заранее спасибо!Перемещение оси x в matplotlib в режиме реального времени (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]) 

ответ

1

Вы должны обновить x_axist_start и x_axis_end в 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]) 

Это трюк! :)

Объяснение: Вы только добавили 10 раз к обоим параметрам. В конце вы всегда добавляли от 10 до 0 и 10, оставляя только одно обновление.

+0

О, мальчик, это так же просто! Спасибо огромное! – NumbThumb

+0

Добро пожаловать. Хорошая работа по минимальному рабочему примеру, мы этого не видим! – Ian