MP Android Диаграмма - PullRequest
       1

MP Android Диаграмма

0 голосов
/ 07 января 2020

Привет! Я использую график MP Android в качестве библиотеки графиков в своем приложении android. Я пытаюсь выделить некоторые значения из диапазона в наборе линейных данных другим цветом (Рисунок 1), и если значение выходит за пределы диапазона, я также хочу изменить также нарисованное изображение в виде маркера. Picture 1

Я достиг этого (рисунок 2), и теперь мне удалось изменить цвет на красный из значений диапазона. Как я могу достичь Рисунка 1 на графике? Picture 2

private void populateChart() {
    chart = binding.lcCharts;
    chart.setBackgroundColor(Color.WHITE);
    chart.getDescription().setEnabled(false);
    chart.setDoubleTapToZoomEnabled(false);
    chart.setPinchZoom(false);
    chart.setScaleEnabled(false);
    getXAxisData()

    LineData lineData = new LineData(setLineDataSet());
    lineData.setDrawValues(false);

    chart.setData(lineData);
    chart.setTouchEnabled(true);
    chart.setDrawMarkers(false);
    chart.setHighlightPerTapEnabled(true);
    chart.setMarker(new YourMarkerView(fragment.requireContext(), R.layout.layout_pop_up));
    chart.setClipChildren(false);
    chart.setClipToPadding(false);


    chart.invalidate();

    chart.notifyDataSetChanged();


}

private ArrayList<ILineDataSet> setLineDataSet() {

    ArrayList<ILineDataSet> dataSet = new ArrayList<>();
    for (int i = 0; i < response.size(); i++) {

        LineDataSet lineDataSet = new LineDataSet(setData(i),
                response.get(i).getName());
        lineDataSet.setLineWidth(3);


        lineDataSet.setColor(this.getResources().getColor(colorArray[i]));
        lineDataSet.setDrawCircleHole(false);
        lineDataSet.setCircleRadius(4);
        lineDataSet.setCircleColors(setColorOfLineDataSet(i));
        dataSet.add(lineDataSet);

    }


    return dataSet;
}

private ArrayList<Integer> setColorOfLineDataSet(int i) {
    ArrayList<Integer> color = new ArrayList<Integer>();

    for (int j = 0; j < response.get(i).size(); j++) {

        if (!response.get(i).isNormal()) {
            color.add(R.color.Red);
        } else {
            color.add(colorArray[i]);
        }
    }

    return color;
} private void getXAxisData() {
    XAxis xAxis = chart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setDrawAxisLine(false);
    xAxis.setDrawGridLines(false);
    // xAxis.setGranularity(1f);
 xAxis.setValueFormatter(new MyXAxisValueFormatter(getDateArrayForXAxis()));//getDateArrayForXAxis function returns a String array of size 14 with values of dates of past two weeks.
    xAxis.setLabelCount(14, true);


}




public class MyXAxisValueFormatter extends ValueFormatter {

    private String[] mValues;

    public MyXAxisValueFormatter(String[] values) {
        this.mValues = values;
    }


    public String getFormattedValue(float value) {
        String val = null;

        try {
            val = String.valueOf(mValues[(int) value]);

        } catch (IndexOutOfBoundsException e) {
        }


        return val;
    }

    /**
     * Used to draw axis labels, calls {@link #getFormattedValue(float)} by default.
     *
     * @param value float to be formatted
     * @param axis  axis being labeled
     * @return formatted string label
     */

    public String getAxisLabel(float value, AxisBase axis) {
        return getFormattedValue(value);
    }


}

Этот код завершается с ошибкой arrayIndexOutOfBoundException. введите код здесь

1 Ответ

0 голосов
/ 07 января 2020

Для настройки формы Circle вы можете использовать следующие методы LineDataSet:

  • setCircleColor (/ некоторое значение цвета /)
  • setCircleRadius (/ * некоторое число с плавающей запятой * /)
  • setDrawCircleHole (/ * логическое значение * /)
  • setDrawFilled (/ * логическое значение * /)

try это, может быть, вы найдете то, что вы хотите. Но я не думаю, что это позволит вам полностью изменить форму.

Я ссылался на эту статью в качестве примера: https://www.studytutorial.in/android-line-chart-or-line-graph-using-mpandroid-library-tutorial

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