Графики - с использованием Mp Chart

Графики - с использованием Mp Chart

Мне нужно нарисовать график, как изображение, которое я загрузил, я использую библиотеку диаграмм MP и разрабатываю график, но хочу настроить его в соответствии с моими требованиями, но не могу найти решение для моих требований, мое основное требование - ось x, которую я хочу показать пользовательские значения на оси, например 5-11 12-18, но я передаю значение оси x, как это

private ArrayList<String> setXAxisValues() {
        ArrayList<String> xVals = new ArrayList<String>();
        xVals.add("10");
        xVals.add("20");
        xVals.add("30");
        xVals.add("30.5");
        xVals.add("40");

        return xVals;
    }

Таким образом, он показывает значения x, подобные этому 10 20 30, поэтому я хочу, чтобы мой график был построен с использованием этого значения x, которое происходит прямо сейчас, но хочу показать настраиваемое значение внизу, например 5-11 и т.д., и это значение динамически приходит из ответа Api, поэтому, пожалуйста, помогите мне в этом, ожидая положительного и скорейшего ответа. Спасибо заранее.

0
0
64
1

Ответы 1

Чтобы отформатировать значения оси x, вы должны использовать метод setValueFormatter, который принимает интерфейс обратного вызова, если вы должны реализовать метод getFormattedValue, который вызывается перед рисованием значения оси x.

xAxis.setValueFormatter((value, axis) -> {
        String res = "";
        try {
            // get current position of x-axis
            int currentPosition = (int) value;
            // check if position between array bounds
            if (currentPosition > -1 && currentPosition < maxSize) {
               // get value from formatted values array
               res = xVals.get(currentPosition);
            }
        } catch (Exception e) {
            // handle exception
        }
        return res;
    });

Я использую средство форматирования значений, подобное этому String [] values ​​= new String [] {"5-11", "12-18", "19-25", "26-02"}; xAxis.setValueFormatter (новый MyXAxisValueFormatter (значения)); но он все еще не работает

kim jot 10.08.2018 06:55

Поделитесь, пожалуйста, своей реализацией MyXAxisValueFormatter()?

Nader Baltaji 10.08.2018 10:51

теперь он работает, я внес некоторые изменения, но получаю исключение arrayindexbound, если значения осей x и y изменены. Я делюсь ссылкой с полным кодом класса, пожалуйста, проверьте файл и скажите, в чем проблема. files.fm/u/6pdpvfh6#sign_up

kim jot 10.08.2018 11:41

Прежде чем принимать массив, проверьте сообщение: if (currentPosition > -1 && currentPosition < maxSize) { return months[(int) value]; }, где максимальный размер - это размер массива.

Nader Baltaji 10.08.2018 11:51

ок, давай попробую, а как получить текущее положение? это позиция в массиве? и проверяли ли вы мой код по ссылке?

kim jot 10.08.2018 12:01

получить текущую позицию с помощью (int) value и проверить ее перед доступом к массиву

Nader Baltaji 10.08.2018 13:14

Другие вопросы по теме