MPAndroidChart: по оси x отображаются только альтернативные метки, когда появляется больше записей


В моем приложении для android у меня есть горизонтальная гистограмма с использованием MPAndroidChart.My проблема в том,что в моей гистограмме есть 12 баров, каждый из которых представляет месяц с апреля по март, но я могу видеть только метку альтернативных месяцев по оси X.Если есть небольшое количество баров, то я могу видеть все метки в оси X.Я не устанавливал количество меток для оси x, используя

XAxix.setLabelCount ()

Метод

.Тогда почему я не могу видеть все этикетки? Если я увеличил масштаб, то я могу видеть этикетки для каждого бара.Я используя MPAndroidChart В3.0.1.Прилагается скриншот вышеизложенного.Смотрите, здесь я вижу только "апрель, июнь, август, октябрь, декабрь, февраль", а все остальные месяцы не отображаются.Как я могу видеть и все остальные месяцы?

Горизонтальная Штриховая Диаграмма

Ниже приведен мой код.

        yVals1 = new ArrayList<BarEntry>();
    xVals = new ArrayList<String>();
    for (int i = 0; i < listChart.size(); i++){
        BarEntry newBEntry = new BarEntry(i,listChart.get(i).getAmount());
        xVals.add(listChart.get(i).getAltName());
        yVals1.add(newBEntry);
    }

    BarDataSet set1;
    set1 = new BarDataSet(yVals1, "");
    set1.setColors(new int[] {Color.BLUE,Color.GREEN});
    ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
    dataSets.add(set1);
    BarData data = new BarData(dataSets);
    data.setValueTextSize(10f);
    barChartIncExp.setData(data);

    barChartIncExp.setDrawBarShadow(false);
    barChartIncExp.setDrawValueAboveBar(true);

    barChartIncExp.getDescription().setEnabled(false);
    barChartIncExp.setMaxVisibleValueCount(60);
    // scaling can now only be done on x- and y-axis separately
    barChartIncExp.setPinchZoom(true);
    barChartIncExp.setDrawGridBackground(false);
    barChartIncExp.setHighlightFullBarEnabled(false);
    barChartIncExp.setHighlightPerDragEnabled(false);

    XAxis xAxis = barChartIncExp.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setDrawGridLines(false);
    xAxis.setGranularity(1f); 
    xAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            if(Math.round(value) >= xVals.size()) {
                return null;
            } else {
                return xVals.get(Math.round(value));
            }
        }
    });


    YAxis leftAxis = barChartIncExp.getAxisLeft();
    leftAxis.setDrawGridLines(false);
    leftAxis.setLabelCount(8, false);
    leftAxis.setSpaceTop(15f);
    leftAxis.setDrawLabels(false);

    YAxis rightAxis = barChartIncExp.getAxisRight();
    rightAxis.setLabelCount(8, false);
    rightAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);

    Legend l = barChartIncExp.getLegend();
    l.setEnabled(false);

    barChartIncExp.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
        @Override
        public void onValueSelected(Entry entry, Highlight highlight) {

        }

        @Override
        public void onNothingSelected() {

        }
    });
4 3

4 ответа:

Вы можете изменить количество меток, которые вы хотите показать на оси Y.

XAxis xAxis=линейная диаграмма.getXAxis ();

XAxis.setLabelCount(4, true); //4-нет отображаемых значений.

Попробуйте Это

// where 12 is the number of bars in your chart.
xAxis.setLabelCount(12)
XAxis xAxis = mChart.getXAxis();
xAxis.setLabelCount(label.size()+1, true);

Установите счетчик меток на размер метки + 1 в функции xAxis.setLabelCount. Это сработало для меня!

XAxis xAxis=lineChart.getXAxis();    
xAxis.setLabelCount(4,true);
xAxis.setGranularity(1f);