2017-01-27 3 views
-3

Я подстраиваю значения к линии, используя линейную регрессию, используя градиент приличный. На каждой итерации линия становится все ближе и ближе к лучшему.Matplotlib - Как я могу изменить изменение строки как изменение наклона и перехвата

Прямо сейчас я просто показываю окончательную строку. Но я хотел бы проиллюстрировать, как линия лучше и лучше подходит для данных, чем прогресс итерации.

Я посмотрел на образец, но они, кажется, просто добавляют новые x, y указывает на существующую строку. С каждой итерацией я хочу удалить старую строку и нарисовать новую строку с последними данными.

Любые идеи?

+0

вы можете заменить все данные в участке - есть даже пример на Matplotlib странице: http://matplotlib.org/1.5.1/examples/animation/simple_anim.html – furas

+0

Существует [пример того, как используйте 'FuncAnimation'] (http://matplotlib.org/1.4.1/examples/animation/animate_decay.html) в matplotlib. Нет никакой разницы между добавлением одного нового значения в строку или добавлением всех новых значений в строку на каждом шаге итерации. Таким образом, этот пример отлично подходит для вашего случая. Если у вас есть конкретная проблема, вы должны предоставить [MCVE], так как без какого-либо кода и/или подробного объяснения вам не поможет. – ImportanceOfBeingErnest

+0

Спасибо, ребята. Я вижу свою ошибку. Я начал с упомянутого примера фура, но не понял, что они делают в анимации() – JerryKur

ответ

1

Используя подсказки, приведенные выше, я создал этот образец кода, который показал мне, как оживить установку в Jupyter Notebook. Он имеет как фиксированные, так и анимированные данные.

%matplotlib notebook 
# A simple example of an animated plot 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

fig, ax = plt.subplots() 

# Initial plot 
x = np.arange(0., 10., 0.2) 
y = np.arange(0., 10., 0.2) 
line, = ax.plot(x, y) 

plt.rcParams["figure.figsize"] = (10,8) 
plt.ylabel("Price") 
plt.xlabel("Size (sq.ft)") 
plt.plot([1, 1.2, 3], [3, 3.5, 4.7], 'go', label='Training data') 
#ax.plot(test_house_size, test_house_price, 'mo', label='Testing data') 

def animate(i): 
    print(i)  
    x = np.arange(0., 6, 0.05) 
    line.set_xdata(x) # update the data 
    line.set_ydata(x ** (1 + (i/10.0))) # update the data 

    return line, 


# Init only required for blitting to give a clean slate. 
def init(): 
    line.set_ydata(y) 
    return line, 

ani = animation.FuncAnimation(fig, animate, frames=np.arange(1, 10), init_func=init, interval=1000, blit=True) 
plt.show()