滚动图使用matplotlib"涂片"更新时

时间:2016-01-04 16:52:10

标签: python matplotlib plot

我编码的应用程序需要在excel电子表格中长期存储的传入数据的实时图表。因此,实时图表显示了25个最新数据点。

问题出现在情节必须在最新数据点移动并移出最旧点时。当我这样做时,图表"涂抹"如下图所示: here

然后我开始使用var data = new Dictionary<int, Dictionary<string, int[] > >() { { 100, new Dictionary<string, int[] >() { {"first", new int[] {4, 24, 5, 0} }, {"second", new int[] {42, 58, 23, 8} } // the rest of the items } } // the rest of the items }; ,但这导致我丢失了我的绘图中的所有格式,例如标题,轴等。有什么方法可以让我更新我的图表,但保留我的图表格式化?

这是plt.cla()之后的一个例子:

after plt.cla()

这里基本上是我如何在更大的循环中更新我的图表:

plt.cla()

我知道我可以重新添加轴标签等,但我觉得应该有一个更有说服力的方法这样做,这有点麻烦,因为可以有多个子图并重新格式化图非常重要的时间。

1 个答案:

答案 0 :(得分:1)

而不是plt.cla(),你发现它清除了轴上的所有内容,你可以删除最后一行,这样就可以保留标签和格式。

Axes实例有一个属性lines,它存储当前在轴上绘制的所有行。要删除绘制的最后一行,我们可以使用plt.gca()访问当前轴,然后使用轴上pop()列表中的lines访问当前轴。

else:
    plt.gca().lines.pop()
    y_data[0:max_data_points - 1] = y_data[1:max_data_points]
    y_data[max_data_points - 1] = measurement
    plt.plot(x_data, y_data, 'or--')