Динамический граф в matplotlib с несколькими графами на одной фигуре - PullRequest
0 голосов
/ 03 мая 2018

Мне удалось настроить динамический график одной переменной в matplotlib:

def update_line(hl, new_data):

    hl.set_xdata(np.append(hl.get_xdata(), new_data[0]))
    hl.set_ydata(np.append(hl.get_ydata(), new_data[1]))
    plt.draw()


cost_plot, = plt.plot([], [], 'b-')
plt.xlabel('iter')
plt.ylabel('cost')
plt.axis([0, set_size, 0, 10])

some for:
    ...
    update_line(cost_plot, [iter, cost])
    plt.draw()
    plt.pause(0.001)

И с этим кодом я строю свою функцию стоимости моей первой нейронной сети:

График веселья (сеть еще не работает)

Теперь я хочу сделать то же самое, но для набора синапсов, поэтому я хочу несколько графики на одной фигуре, динамически обновляются на

update_line(plot, [iter, set of next values])

но я не могу найти способ сделать это.

Мои данные хранятся в массиве numpy

Конечный результат будет выглядеть примерно так

Edit: Окончательный результат после правильного выполнения

1 Ответ

0 голосов
/ 03 мая 2018

Вы, вероятно, хотите что-то вроде этого:

import numpy as np
import matplotlib.pyplot as plt

def update_line(hl, i, new_data):
    hl.set_data(np.arange(i+1), new_data[:i+1])

n_data = 2
n_iter = 10
data = np.random.rand(n_data, n_iter)

plt.figure()
plt.xlabel("iter")
plt.ylabel("cost")
plt.axis([0, n_iter, 0, 1])

cost_plots = []
for i in range(n_data):
    cost_plot, = plt.plot([], [])
    cost_plots.append(cost_plot)

for i in range(n_iter):
    for j, cost_plot in enumerate(cost_plots):
        update_line(cost_plot, i, data[j])
    plt.draw()
    plt.pause(0.1)

Я создал список cost_plots и передал его вашей функции update_line. На каждой итерации я зацикливаюсь и обновляю различные графики, а также обновляю фигуру в конце итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...