繁体   English   中英

matplotlib中的动态图,一个图中包含多个图

[英]Dynamic graph in matplotlib with multiple graphs in one figure

我设法在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的数组中

最终结果看起来像这样

编辑: 正确执行后的最终结果

您可能想要这样的东西:

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。 在每次迭代中,我循环并更新不同的图,并在迭代结束时更新图形。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM