如何使用 GraphView 修复 x 轴的限制
Posted
技术标签:
【中文标题】如何使用 GraphView 修复 x 轴的限制【英文标题】:How to fix the limit of x axis with GraphView 【发布时间】:2021-02-26 11:28:09 【问题描述】:我想开发一个应用程序,它以 100 Hz 的频率与 BLE 传感器进行通信,并使用 GraphView 绘制实时数据。我想以“心电图方式”绘制数据,始终具有相同的固定 x 轴和在时间期间绘制的曲线,如果绘图到达图表的右端,则返回到图表的左侧。我设法接收数据并绘制它,但我有两个问题:
有时,它会延迟半秒,我不知道它是来自我的应用程序还是我的手机(它是 OnePlus 6,性能非常好)。 我无法“修复” x 轴限制...为了解释它,x 轴的宽度是固定的,但曲线开始绘制在图表的右侧并填充图表向左移动,直到曲线触及图形的左边界。然而,这不是我想做的。这里有一些代码 sn-ps 可以帮助你理解我做错了什么。
LineGraphSeries<DataPoint> series;
private int time = 0;
private int maxDataPoints = 200;
在 OnCreate 函数中
mDataGraph = (GraphView) findViewById(R.id.graph_data);
mDataGraph.getGridLabelRenderer().setHorizontalLabelsVisible(false);
mDataGraph.getGridLabelRenderer().setVerticalLabelsVisible(false);
mDataGraph.getGridLabelRenderer().setHighlightZeroLines(true);
mDataGraph.getGridLabelRenderer().setGridStyle(GridLabelRenderer.GridStyle.NONE);
mDataGraph.getViewport().setDrawBorder(true);
mDataGraph.setKeepScreenOn(true);
series = new LineGraphSeries<DataPoint>();
mDataGraph.addSeries(series);
// customize a little bit viewport
Viewport viewport = mDataGraph.getViewport();
viewport.setXAxisBoundsManual(true);
viewport.setMinX(0);
viewport.setMaxX(maxDataPoints);
viewport.setScalable(true);
viewport.setScrollable(true);
我处理数据文本和图表的功能
private void displayData(String data)
if (data != null)
mDataField.setText(data);
int dataNumber = Integer.parseInt(data);
// Reset graph
if (time == maxDataPoints)
mDataGraph.removeAllSeries();
series = new LineGraphSeries<DataPoint>();
mDataGraph.addSeries(series);
time = 0;
series.appendData(new DataPoint(time, dataNumber), true, maxDataPoints);
time ++;
请注意,我的模板是蓝牙 Le Gatt 模板。
这是我第一次使用这个论坛并且我在android studio(甚至在java)中编码,所以我希望我的解释清楚并且有人可以帮助我。
感谢您花时间阅读本文。
问候, 亚瑟。
【问题讨论】:
【参考方案1】:我可以通过在 appendData 函数中将 scrollToEnd 设置为 false 来修复它... 太容易了。
问候, 亚瑟。
【讨论】:
以上是关于如何使用 GraphView 修复 x 轴的限制的主要内容,如果未能解决你的问题,请参考以下文章
Android-jjoe64:graphview限制可见数据点