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 将在该点结束该行,并在遇到另一个非空值时开始新的一行。
但是,考虑到您要完成的任务,我建议使用循环缓冲区而不是推送/弹出。它会更快、更简单并且完全符合预期。
我正在使用 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 将在该点结束该行,并在遇到另一个非空值时开始新的一行。
但是,考虑到您要完成的任务,我建议使用循环缓冲区而不是推送/弹出。它会更快、更简单并且完全符合预期。