'Android graphview Real Time Sensor Data plotting issue
I am implementing an app with the GraphView library in order to draw sensor data values in real time. However in the output i can see only only one dataDrawPoint and the plot line appears to be a straight line with no curves. On the X-Axis i display the timestamps for each sensor value and on the Y - Axis the value of each sensor.
This is the relevant code for the plotting of the Accelerometer Sensor Data:
private fun initAccelDataGraphLines()
{
var accelLineGraphView = dataBinding.accelLineGraphChart
accelLineDataFirstSeries = LineGraphSeries<DataPoint>()
accelLineDataFirstSeries.isDrawDataPoints = true
accelLineDataFirstSeries.color = resources.getColor(R.color.Blue)
accelLineDataFirstSeries.dataPointsRadius = 8f
accelLineDataFirstSeries.thickness = 4
accelLineDataSecondSeries = LineGraphSeries<DataPoint>()
accelLineDataSecondSeries.isDrawDataPoints = true
accelLineDataSecondSeries.color = resources.getColor(R.color.Green)
accelLineDataSecondSeries.dataPointsRadius = 8f
accelLineDataSecondSeries.thickness = 4
accelLineDataThirdSeries = LineGraphSeries<DataPoint>()
accelLineDataThirdSeries.isDrawDataPoints = true
accelLineDataThirdSeries.dataPointsRadius = 8f
accelLineDataThirdSeries.thickness = 4
accelLineDataThirdSeries.color = resources.getColor(R.color.Red)
accelLineGraphView.addSeries(accelLineDataFirstSeries)
accelLineGraphView.addSeries(accelLineDataSecondSeries)
accelLineGraphView.addSeries(accelLineDataThirdSeries)
accelLineGraphView.viewport.isScalable = true
accelLineGraphView.viewport.isScrollable = true
accelLineGraphView.getViewport().setScrollable(true); // enables horizontal scrolling
accelLineGraphView.getViewport().setScrollableY(true); // enables vertical scrolling
accelLineGraphView.getViewport().setScalable(true); // enables horizontal zooming and scrolling
accelLineGraphView.getViewport().setScalableY(true); // enables vertical zooming and scrolling
accelLineGraphView.getGridLabelRenderer().setLabelVerticalWidth(60);
accelLineGraphView.gridLabelRenderer.isHighlightZeroLines = false
accelLineGraphView.title = "Accelerometer Sensor Data Plot"
accelLineGraphView.getGridLabelRenderer().setVerticalAxisTitle(Html.fromHtml("m/s<sup>2</sup>").toString());
accelLineGraphView.getGridLabelRenderer().setHorizontalAxisTitle("Time (millsec)");
accelLineGraphView.titleTextSize = 16f
dataBinding.accelLineGraphChart.viewport.setMinY(-5.0)
dataBinding.accelLineGraphChart.viewport.setMaxY(15.0)
}
acceleroMeterValuesXAxis.add(event.values[0])
acceleroMeterValuesYAxis.add(event.values[1])
acceleroMeterValuesZAxis.add(event.values[2])
//append the accelerometer sensor values in real time
//set the timestamps
timestampX = System.currentTimeMillis() - initialAcceleratorTimeStamp
accelerometerValuesTimeStampCounter ++
//store the timestamps
accelerometerValuesTimeStamps.add(timestampX)
accelLineDataFirstSeries.appendData(DataPoint(accelerometerValuesTimeStamps.get(accelerometerValuesTimeStampCounter -1).toDouble() , event.values[0].toDouble()) , true, GRAPH_VIEW_ACCELLINE_DATA_SAMPLE_NUM)
accelLineDataSecondSeries.appendData(DataPoint(accelerometerValuesTimeStamps.get(accelerometerValuesTimeStampCounter -1).toDouble() , event.values[1].toDouble()) , true, GRAPH_VIEW_ACCELLINE_DATA_SAMPLE_NUM)
accelLineDataThirdSeries.appendData(DataPoint(accelerometerValuesTimeStamps.get(accelerometerValuesTimeStampCounter -1).toDouble() , event.values[2].toDouble()) , true, GRAPH_VIEW_ACCELLINE_DATA_SAMPLE_NUM)
[![dataBinding.accelLineGraphChart.viewport.setMinY(-5.0)
dataBinding.accelLineGraphChart.viewport.setMaxY(15.0)][1]][1]
Here is an image with the plot lines:
Any help is appreciated!
Lampros
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|

