首页 文章

MPAndroidChart:当有更多条目时,只有替代标签在x轴上显示

提问于
浏览
3

在我的Android应用程序中,我有一个使用MPAndroidChart的水平条形图 . 我的问题是我的条形图中有12个条形,每个代表从4月到3月的月份,但我只能看到x轴上的备用月标签 . 如果有然后我可以看到x轴上的所有标签 . 我没有为x轴设置任何标签计数

xAxix.setLabelCount()

method.Then为什么我看不到所有的标签?如果我缩放然后我可以看到每个栏的标签 . 我正在使用MPAndroidChart v3.0.1.Attached是上面的截图 . 看到这里我只能看到'4月,6月,8月,10月,12月,2月'和所有其他月份没有显示 . 我怎样才能看到所有其他月份 .

以下是我的代码 .

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 回答

  • 2

    Try This

    // where 12 is the number of bars in your chart.
    xAxis.setLabelCount(12)
    
  • 0

    您可以更改要在 y-axis 中显示的标签数量 .

    XAxis xAxis=lineChart.getXAxis();
    
    xAxis.setLabelCount(4,true); //4 is the number of values to be shown.
    
  • 3
    XAxis xAxis=lineChart.getXAxis();    
    xAxis.setLabelCount(4,true);
    xAxis.setGranularity(1f);
    
  • 1
    XAxis xAxis = mChart.getXAxis();
    xAxis.setLabelCount(label.size()+1, true);
    

    将标签计数设置为 xAxis.setLabelCount 函数中标签1的大小 . 它对我有用!

相关问题