我编码的应用程序需要在excel电子表格中长期存储的传入数据的实时图表。因此,实时图表显示了25个最新数据点。
问题出现在情节必须在最新数据点移动并移出最旧点时。当我这样做时,图表"涂抹"如下图所示:
然后我开始使用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()
之后的一个例子:
这里基本上是我如何在更大的循环中更新我的图表:
plt.cla()
我知道我可以重新添加轴标签等,但我觉得应该有一个更有说服力的方法这样做,这有点麻烦,因为可以有多个子图并重新格式化图非常重要的时间。
答案 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--')