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

时间:2016-04-14 13:40:14

标签: android androidplot

我正在使用AndroiPlot绘制实时线图。我需要在达到最大窗口时从左边重新开始绘图。我能够将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();
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

看起来索引已关闭;它不是任意水平线,而是数据集的最后一个可见点与第一个可见点之间的一条线;最后一个可见点实际上位于您的数据中,而第一个可见点是i + 1。 Androidplot只需逐步浏览系列中的所有点,并根据值绘制它们。

此代码:

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

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

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

但是,考虑到你要完成的任务,我建议使用循环缓冲区而不是推/弹。它会更快,更简单,表现得更完美。