从oxyplot线系列中删除点(回到开头的图形)

时间:2016-12-13 03:47:52

标签: c# list xamarin graph oxyplot

我试图在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;

0 个答案:

没有答案