Я пытаюсь построить LineChart с MPAndroidChart, чтобы представить значение, которое я получаю из моего децибелметра. Проблема в том, что я получаю только движущуюся точку, которая представляет текущее значение, но я хотел бы иметь линию, которая при движении показывает значения. Что-то вроде ЭЭГ, чтобы быть ясным.
Это весь код, связанный с диаграммой в методе onCreate ():
chart.getDescription().setEnabled(true);
chart.getDescription().setText("Decibel chart");
chart.setTouchEnabled(false);
chart.setDragEnabled(false);
chart.setScaleEnabled(false);
chart.setPinchZoom(false);
chart.setBackgroundColor(Color.LTGRAY);
Legend l = chart.getLegend();
l.setForm(Legend.LegendForm.LINE);
l.setTextColor(Color.BLUE);
YAxis leftAxis = chart.getAxisLeft();
leftAxis.setTextColor(Color.BLUE);
leftAxis.setDrawGridLines(false);
leftAxis.setAxisMaximum(100f);
leftAxis.setAxisMinimum(0f);
chart.setDrawBorders(true);
Вот методы, которые я использую для обновления данных в моем графике:
private LineDataSet createSet(List<Entry> entries) {
LineDataSet set = new LineDataSet(entries, "Decibel Data");
set.setAxisDependency(YAxis.AxisDependency.LEFT);
set.setLineWidth(4f);
set.setColor(Color.RED);
set.setMode(LineDataSet.Mode.CUBIC_BEZIER);
set.setCubicIntensity(0.2f);
return set;
}
private void updateChart(float x, float y) {
List<Entry> entries = new ArrayList<>();
entries.add(new Entry(x, y));
if (entries.isEmpty()) {
chart.clear();
} else {
LineDataSet lineDataSet = createSet(entries);
LineData data = new LineData(lineDataSet);
data.setValueTextColor(Color.BLUE);
chart.setData(data);
chart.notifyDataSetChanged();
chart.invalidate();
}
}
Поскольку мне нужно обновлять данные динамически, updateChart (float x, float y) вызывается из потока.
Вот что я вижу, когда запускаю свое приложение:
chart_screenshot
Что я могу сделать, чтобы решить проблему?