Как установить метки даты в Graphview (Android) точно под точкой данных с датой-значением точки данных? - PullRequest
0 голосов
/ 22 февраля 2020

Я использую Graphview с DataPoint [] из базы данных. DataPoint [] имеет следующие точки данных:

  1. [1.582381477E12 / 0.0] (дата 2020-02-22 14:24:37),
  2. [1.58238148E12 / 1.0 ] (дата 2020-02-22 14:24:40),
  3. [1.582381489E12 / 2.0] (дата 2020-02-22 14:24:49),
  4. [ 1.582381491E12 / 3.0] (дата 2020-02-22 14:24:51),
  5. [1.582381497E12 / 4.0] (дата 2020-02-22 14:24:57),
  6. [1.582381511E12 / 5.0] (дата 2020-02-22 14:25:11)

Я использую этот код для моего GraphView:

    DataPoint[] dataPoints = getSucccessData(exercise.getExersiseNumber());
    LineGraphSeries<DataPoint> mLGS = new LineGraphSeries<>(dataPoints);
    mLGS.setDrawDataPoints(true);
    graphView = findViewById(R.id.gvGraphView);

    simpleDateFormat = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");

    graphView.getGridLabelRenderer().setLabelFormatter(new DefaultLabelFormatter(){
        @Override
        public String formatLabel(double value, boolean isValueX) {

            if(isValueX){
                return simpleDateFormat.format(new Date((long)value));
            }
            else {
                return super.formatLabel(value, isValueX);
            }
        }
    });
        graphView.removeAllSeries();
        graphView.addSeries(mLGS);
        graphView.getViewport().setMinY(0);
        graphView.getViewport().setMaxY(5);
        graphView.getViewport().setYAxisBoundsManual(true);
        graphView.getViewport().setMinX(dataPoints[0].getX());
        graphView.getViewport().setMaxX(dataPoints[dataPoints.length - 1].getX());
        graphView.getGridLabelRenderer().setNumHorizontalLabels(dataPoints.length -1);
        graphView.getViewport().setXAxisBoundsManual(true);
        graphView.getGridLabelRenderer().setHumanRounding(false, true);
        graphView.getGridLabelRenderer().setHorizontalLabelsAngle(90);
        graphView.getViewport().setScrollableY(true);
        graphView.getViewport().setScrollableY(true);
        graphView.getViewport().setScalable(true);
        graphView.getViewport().scrollToEnd();
        graphView.getViewport().setScrollable(true);

Результат этого графика:

Graphview

Как вы можете видеть, лаборатории Xaxis не являются первыми и последними, а не значениями x мои точки данных, и они не связаны напрямую с указанным c точкой данных. Это значения дат в диапазоне между первым и последним значением x моих точек данных, и расстояние между ними не одинаково. Чем больше времени находится между значениями x, тем больше расстояние между точками данных.

Я хочу иметь точное значение x моих точек данных в виде метки Xaxis, никаких других меток Xaxis и расстояние между точками данных всегда должно быть одинаковым, независимо от того, сколько времени проходит между датами.

Как я могу это сделать?

...