Линейчатая диаграмма mpandroidchart Появляются проблемы с перекрытием меток осей X - PullRequest
0 голосов
/ 19 сентября 2019

На самом деле мы пытаемся отрисовать линейный график, в зависимости от того, какие данные у нас есть, данные отрисовываются в двух направлениях, еженедельно и ежедневно.Линейный график состоит из оси X, которая отображает даты, но даты, которые выводят список по оси X, перекрывают друг друга.Пожалуйста, проверьте это изображение, чтобы посмотреть: https://pasteboard.co/Iya3jWL.jpg Ниже приведен код, который я применил для линейного графика, чтобы настроить внешний вид линейного графика.

final ArrayList<ILineDataSet> linedataSets = new ArrayList<>();

            LineDataSet set1 = new LineDataSet(ptsModel.yVals7, "Male");
            set1.setFillAlpha(110);
            set1.setColor(Color.parseColor("#1C8AF9"));
            set1.setCircleColor(Color.parseColor("#1C8AF9"));
            set1.setFillColor(Color.parseColor("#9C1C8AF9"));
            set1.setLineWidth(2f);
            set1.setCircleRadius(3f);
            set1.setDrawCircleHole(false);
            set1.setValueTextSize(9f);
            set1.setDrawFilled(true);
            set1.setDrawValues(false);
            set1.setMode(LineDataSet.Mode.CUBIC_BEZIER);

            LineDataSet set2 = new LineDataSet(ptsModel.yVals8, "Female");
            set2.setFillAlpha(110);
            set2.setColor(Color.parseColor("#F92F81"));
            set2.setCircleColor(Color.parseColor("#F92F81"));
            set2.setFillColor(Color.parseColor("#B0F92F81"));
            set2.setLineWidth(2f);
            set2.setCircleRadius(3f);
            set2.setDrawCircleHole(false);
            set2.setValueTextSize(9f);
            set2.setDrawFilled(true);
            set2.setDrawValues(false);
            set2.setMode(LineDataSet.Mode.CUBIC_BEZIER);

            linedataSets.add(set1);
            linedataSets.add(set2);

            LineData linedata = new LineData(linedataSets);
            gendertrendschart.setData(linedata);
            gendertrendschart.notifyDataSetChanged();
            gendertrendschart.getAxisLeft().setStartAtZero(true);

            gendertrendschart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
            gendertrendschart.getXAxis().setDrawGridLines(false);
            gendertrendschart.getAxisLeft().setDrawGridLines(true);
            gendertrendschart.getAxisLeft().setEnabled(true);
            gendertrendschart.getAxisRight().setEnabled(false);
            gendertrendschart.getXAxis().setDrawLabels(true);
            /*int valOffset = (int) (set1.getCircleRadius() * 1.75f);
            gendertrendschart.getXAxis().setXOffset(valOffset);*/
            gendertrendschart.getXAxis().setTextColor(Color.GRAY);
            gendertrendschart.getAxisLeft().setTextColor(Color.GRAY);
            gendertrendschart.getXAxis().setLabelCount(ptsModel.xVals.size(), true);
            gendertrendschart.setMaxHighlightDistance(20);
            gendertrendschart.getXAxis().setGranularityEnabled(true);
            gendertrendschart.getAxisLeft().setGranularityEnabled(true);
            gendertrendschart.getAxisLeft().setValueFormatter(new LargeValueFormatter());

            gendertrendschart.setVisibleXRangeMaximum(5);
            gendertrendschart.setHorizontalScrollBarEnabled(true);

            gendertrendschart.getXAxis().setCenterAxisLabels(true);
gendertrendschart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(ptsModel.xVals));

Я пытаюсь найти решение в ихGitHub репозиторий, но не может найти правильное решение, было бы неплохо, если бы вы могли нам помочь.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Вы можете сделать одну вещь, чтобы получить желаемый результат, то есть вы должны сделать метку оси X с двумя строками.Таким образом, он не будет перекрывать ярлыки.Для этого просто поместите "\ n" в середине каждого из вас, каждый ярлык в списке значений оси X.

В вашем случае, я думаю, вы отображаете дату на оси X.вы просто помещаете «\ n» в середину вашего SimpleDateFortmater.

Как: "dd/MM\nyyyy"

0 голосов
/ 24 сентября 2019

Добавьте строку ниже к вашему коду:

barChart.getXAxis().setGranularityEnabled(true);
barChart.getXAxis().setGranularity(1.0f);
lineChart.getXAxis().setLabelCount(3);  // give any number here for visible labels

Вы можете получить метки для других записей при увеличении

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