#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 мс. Я был бы благодарен. Я прилагаю фотографию участка в том виде, в каком он есть сейчас
Наконец, я прикрепляю некоторые значения моего списка массивов, которые отображаются на графике