如何使用 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限制可见数据点

MATLAB用作图之后如何把y轴的坐标值放到两个刻度之间?

在 Graphview 库中使用日期

MATLAB中如何画平行x轴或y的直线?

单击窗口 x 轴的末端时,通过鼠标单击在 OpenGL 中创建的光线不正确?

如何使用输入数组在 GraphView 库中绘制图形?