我正在使用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();
}
}
答案 0 :(得分:1)
看起来索引已关闭;它不是任意水平线,而是数据集的最后一个可见点与第一个可见点之间的一条线;最后一个可见点实际上位于您的数据中,而第一个可见点是i + 1。 Androidplot只需逐步浏览系列中的所有点,并根据值绘制它们。
此代码:
if(xVal1>WINDOW_SIZE){
xVal1 =0;
series0.addLast(xVal1, ch0Buffer.get(i));
}
在数据集末尾添加一个新点,它在x的开头一直有xval,这可以解释你所看到的内容。
使用您所拥有的一个解决方案是在将xval重置为0之前立即在数据集中插入空值; Androidplot将在该点结束该行,并在遇到另一个非空值时开始一个新行。
但是,考虑到你要完成的任务,我建议使用循环缓冲区而不是推/弹。它会更快,更简单,表现得更完美。