AndroidPlot 到达屏幕右上角后从左侧实时绘制绘图

AndroidPlot real time plotting plot from left after it reaches the the right corner of screen

我正在使用 AndroiPlot 绘制实时折线图。当它达到最大值 window 时,我需要从左侧重新开始绘图。我能够将 x 轴值重置为 0 并从左侧开始绘图。但是从右到左总是有一条线,如图中所示,我不需要在图中显示。有人可以帮我以正确的方式绘制它吗?

private void addEntryGraph0() {
    if (series0.size() > WINDOW_SIZE) {
        for (int i = 0; i < sampleRatio; i++)
            series0.removeFirst();
    }
    // add the latest sample:
    for (int i = 0; i < sampleRatio; i++) {
        if(xVal1>WINDOW_SIZE){
            xVal1 =0;
            series0.addLast(xVal1, ch0Buffer.get(i));
        }
        else{
            xVal1++;
            series0.addLast(xVal1, ch0Buffer.get(i));
        }
    }
    // redraw the Plots:
    plot0.redraw();
    synchronized (ch0Buffer) {
        ch0Buffer.subList(0, sampleRatio).clear();
    }
}

索引好像关闭了;它不是任意水平线,而是数据集最后一个可见点与第一个可见点之间的一条线;最后一个可见点实际上位于数据中的 i,而第一个可见点是 i+1。 Androidplot 简单地遍历您系列中的所有点并根据值绘制它们。

此代码:

if(xVal1>WINDOW_SIZE){
    xVal1 =0;
    series0.addLast(xVal1, ch0Buffer.get(i));
}

在数据集的末尾添加一个新点,它在 x 的开头一直有一个 xval,这将解释您所看到的内容。

继续使用现有方法的一种解决方案是在将 xval 重置为 0 之前立即将空值插入数据集中; Androidplot 将在该点结束该行,并在遇到另一个非空值时开始新的一行。

但是,考虑到您要完成的任务,我建议使用循环缓冲区而不是推送/弹出。它会更快、更简单并且完全符合预期。