我试图在Oxyplot中创建一个回到开头的线序列图,但是我很难从图中删除旧点。我已经尝试过Series.Remove和Series.RemoveAt方法,但两者都没有用。即使remove方法返回true(表示它认为它已成功删除了数据点),我的绘图最终会自动跟踪它。
我将我的animate方法连接到一个事件,该事件传入新数据以添加到绘图中。我试图在新数据之前清除(clearGap)点数,以便可以将新数据与旧数据区分开来。当没有要删除的数据点时,try / catch用于处理第一次运行。
void AnimatePlot(double[] data)
{
clearIndex = plotIndex + clearGap;
List<double> plotData = data.ToList();
RunOnUiThread(() =>
{
for (int i = 0; i < plotData.Count; i++)
{
if (clearIndex < _plotBottomMax)
{
try
{
var res = lsPlot1.Points.Remove(lsPlot1.Points[clearIndex].);
}
catch (Exception e)
{
;
}
clearIndex++;
}
else
{
clearIndex = 0;
try
{
var res = lsPlot1.Points.Remove(lsPlot1.Points[clearIndex]);
}
catch (Exception e)
{
;
}
clearIndex++;
}
if (plotIndex < _plotBottomMax)
{
lsPlot1.Points.Add(new DataPoint(plotIndex, plotData[i]));
plotIndex++;
}
else
{
plotIndex = 0;
lsPlot1.Points.Add(new DataPoint(plotIndex, plotData[i]));
plotIndex++;
}
}
//Unlock the plot so we can animate it
_plotView.InvalidatePlot(true);
});
}
如果它不清楚,将绘制点直到它们到达图形的边缘(_plotBottomMax),然后绘图索引将重置为0并且它将再次开始。
如何正确删除系列中某个位置的点?
编辑: 将系列与剧情绑定:
_lsPlot1 = new LineSeries
{
LineStyle = LineStyle.Solid,
StrokeThickness = 1,
Title = "Signal",
YAxisKey = "yAxis",
Color = OxyColor.FromRgb(255, 0, 0)
};
//Add plot's LineSeries into the model
_plotModel.Series.Add(_lsPlot1);
//Set Plot View's Model
plotView.Model = _ecgPlotModel;