Линейная диаграмма Android — xAxis в миллисекундах

#android #android-fragments #charts #linechart

Вопрос:

У меня есть эта линейная диаграмма, на которой можно построить след ЭКГ. Я не знаю, что я изменил, но теперь, когда я дважды щелкаю мышью, она больше не масштабируется. Я попытался реализовать setPinchZoom (true) и setScaleEnabled (true), но не решил.

 private void lineChartTracciato(ArrayListlt;Entrygt; listaECG) {   XAxis xAxis = tracciatoECG.getXAxis();  xAxis.setCenterAxisLabels(true);  xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);  xAxis.setDrawGridLines(true);  xAxis.setGranularityEnabled(true);  xAxis.setGranularity(1.0f);  xAxis.setTextColor(Color.BLACK);  xAxis.setTextSize(12);  xAxis.setAxisLineColor(Color.WHITE);   YAxis leftAxis = tracciatoECG.getAxisLeft();  leftAxis.setTextColor(Color.BLACK);  leftAxis.setTextSize(12);  leftAxis.setDrawZeroLine(true);  leftAxis.setAxisLineColor(Color.WHITE);  leftAxis.setDrawGridLines(true);  leftAxis.setGranularity(2);  leftAxis.setLabelCount(8, true);  leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);    //Find max and min value  ArrayListlt;Floatgt; asseY = new ArrayListlt;gt;();  int dimTracciato = listaECG.size();  for (int i=0; ilt;dimTracciato; i  ){  asseY.add(listaECG.get(i).getY());  }  Collections.sort(asseY);   float massimo = asseY.get(dimTracciato-1);  float minimo = asseY.get(0);   leftAxis.setAxisMinimum(minimo-1f);  leftAxis.setAxisMaximum(massimo 1f);   LineDataSet setComp1 = new LineDataSet(listaECG, "Tracciato ECG");   setComp1.setColor(Color.parseColor("#f57f17"));  setComp1.setDrawCircles(false);  setComp1.setDrawValues(false);   tracciatoECG.getAxisRight().setEnabled(false);  tracciatoECG.getDescription().setText("Scorri verso destra");  tracciatoECG.getDescription().setTextSize(12);  tracciatoECG.getDescription().setTextColor(Color.parseColor("#f57f17"));    tracciatoECG.getLegend().setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);  tracciatoECG.getLegend().setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);   LineData data = new LineData(setComp1);   tracciatoECG.setData(data);  tracciatoECG.setGridBackgroundColor(Color.WHITE);  tracciatoECG.setVisibleXRangeMaximum(5000);  tracciatoECG.invalidate(); }  

Кроме того, я хотел попросить о дополнительной помощи. Мои записи состоят из следующего: Значение x = время Значение Y = значение трассировки ЭКГ Что касается времени (значение X), в начале у меня был файл CSV, в котором значения X имели метки времени типа (например, 1626177386385.16, 1626177386388,49,…). Чтобы начать значения X с 0, я вычитал первое значение X из каждого значения X, чтобы найти время в миллисекундах (или, по крайней мере, я надеюсь, что сделал это хорошо). Не могли бы вы помочь мне реализовать ось X графика, чтобы, например, иметь интервалы в 1000 мс. Я был бы благодарен. Я прилагаю фотографию участка в том виде, в каком он есть сейчас

Вот диаграмма, как она показана сейчас

Наконец, я прикрепляю некоторые значения моего списка массивов, которые отображаются на графике

введите описание изображения здесь