Android MP chart устанавливает дату по оси x в формате дд-мм-гггг - PullRequest
0 голосов
/ 31 октября 2018

Я использую MPCHART для Android, но хочу показать значение даты на оси X, но BarEntry принимает значение с плавающей запятой, как проанализировать дату, чтобы ввести значение в BarEntry или любую другую альтернативу, чтобы добавить значение на гистограмму x и ось Y.

    private void grossChartSetup(ArrayList<BarEntry> grosssalesamountToday) {
    grossChart.setMarker(iMarker);

    grossChart.setDrawBarShadow(false);
    grossChart.setMaxVisibleValueCount(24);
    grossChart.setPinchZoom(false);
    grossChart.setEnabled(false);
    grossChart.setDrawBarShadow(false);
    grossChart.setDoubleTapToZoomEnabled(false);
    grossChart.getDescription().setEnabled(false);
    grossChart.setHighlightFullBarEnabled(false);
    grossChart.setOnChartGestureListener(this);


    BarDataSet orderDataSet1 = new BarDataSet(grosssalesamountToday, "Actual");
    orderDataSet1.setColor(mContext.getResources().getColor(R.color.darkCyan));
    BarData orderdata = new BarData(orderDataSet1);
    orderdata.setValueFormatter(new LargeValueFormatter());
    grossChart.setData(orderdata);

    float barWidth = 0.1f;
    grossChart.getBarData().setBarWidth(barWidth);

    XAxis orderXAxis = orderChart.getXAxis();
    orderXAxis.setDrawGridLines(false);
    orderXAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

// orderXAxis.setValueFormatter (new DayXAxisFormatter ());

    YAxis orderRightYAxis = orderChart.getAxisRight();
    YAxis orderLeftAxis = orderChart.getAxisLeft();
    orderLeftAxis.setDrawGridLines(false);
    orderRightYAxis.setEnabled(false);

    grossChart.getLegend().setPosition(Legend.LegendPosition.ABOVE_CHART_RIGHT);

    grossChart.invalidate();
    grossChart.setVisibleXRangeMaximum(7);
}

1 Ответ

0 голосов
/ 03 декабря 2018

Вы должны создать свой собственный форматер значений, как показано ниже

public class MyYAxisValueFormatter implements IValueFormatter {


    public MyYAxisValueFormatter() {
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        // "value" represents the position of the label on the axis (x or y)
        // value => date in MiliSecond
        val dateFormat = SimpleDateFormat("yyyy-MM-dd")
        return dateFormat.format(value)
    }
}

и после этого вы можете установить это как dataFormatter как показано ниже

dataSet.setValueFormatter(new MyYAxisValueFormatter())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...