Android-график Mp установлен Custom X Axis для дат - PullRequest
0 голосов
/ 25 июня 2018

Я использую mpchart для Android версии v3.0.3. Я пытаюсь установить значение Custom x-axis относительно даты и не могу достичь желаемого результата.

Значение для моей записи в баре выглядит следующим образом:

[Entry, x: 20.0 y: 21.0, Entry, x: 23.0 y: 22.0, Entry, x: 17.0 y: 23.0, Entry, x: 11.0 y: 24.0, Entry, x: 61.0 y: 26.0, Entry, x: 39.0 y: 27.0, Entry, x: 19.0 y: 28.0, Entry, x: 18.0 y: 29.0, Entry, x: 16.0 y: 30.0, Entry, x: 13.0 y: 0.0, Entry, x: 11.0 y: 2.0, Entry, x: 12.0 y: 3.0, Entry, x: 39.0 y: 4.0, Entry, x: 25.0 y: 5.0, Entry, x: 16.0 y: 6.0, Entry, x: 29.0 y: 7.0, Entry, x: 30.0 y: 8.0, Entry, x: 48.0 y: 9.0, Entry, x: 18.0 y: 10.0, Entry, x: 36.0 y: 11.0, Entry, x: 42.0 y: 12.0, Entry, x: 46.0 y: 13.0, Entry, x: 70.0 y: 14.0, Entry, x: 48.0 y: 15.0, Entry, x: 14.0 y: 16.0, Entry, x: 23.0 y: 17.0, Entry, x: 16.0 y: 18.0, Entry, x: 13.0 y: 19.0, Entry, x: 27.0 y: 20.0, Entry, x: 7.0 y: 21.0, Entry, x: 25.0 y: 23.0, Entry, x: 9.0 y: 24.0] 

Требуемое значение для записей, которые я хочу установить на оси X, выглядит следующим образом:

[22 May , 23 May , 24 May , 25 May , 27 May , 28 May , 29 May , 30 May , 31 May , 01 Jun , 03 Jun , 04 Jun , 05 Jun , 06 Jun , 07 Jun , 08 Jun , 09 Jun , 10 Jun , 11 Jun , 12 Jun , 13 Jun , 14 Jun , 15 Jun , 16 Jun , 17 Jun , 18 Jun , 19 Jun , 20 Jun , 21 Jun , 22 Jun , 24 Jun , 25 Jun ]

Код для установки пользовательских значений оси X выглядит следующим образом:

public class CustomXAxisValueFormatter implements IAxisValueFormatter {
    ArrayList<String> mIndexForXaxis;

    public CustomXAxisValueFormatter(ArrayList<String> indexForXaxis){
        this.mIndexForXaxis = indexForXaxis;
    }

    @Override
    public String getFormattedValue(float value, AxisBase axis) {
        AppLogger.i("Print index values: "+mIndexForXaxis);
        String returnIndex = null;
        for(int i = 0 ; i < mIndexForXaxis.size(); i++){
            AppLogger.i("Print index values: "+mIndexForXaxis.get(i));
            returnIndex = mIndexForXaxis.get(i);
        }

        return returnIndex;
    }
}

Где я передаю вышеупомянутый массив дат как indexForXaxis, например, 22 мая и т. Д. В этом классе.

Однако отраженный график выглядит следующим образом:

enter image description here

Я понимаю, что он берет только последнее значение из списка индексов. Как правильно отражать даты?

1 Ответ

0 голосов
/ 14 марта 2019

Попробуй. Я надеюсь, что это решение поможет вам,

XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);
xAxis.setTextSize(10f);
xAxis.setTextColor(Color.RED);
xAxis.setDrawAxisLine(true);
xAxis.setDrawGridLines(false);

для динамического формата даты,

xAxis.setValueFormatter(new IndexAxisValueFormatter(getDate));

public ArrayList<String> getDate() {

        ArrayList<String> label = new ArrayList<>();
        for (int i = 0; i < yourList.size(); i++)
            label.add(yourList.get(i).getDateValue());
        return label;
    }
...