android - MPAndroidChart : Only alternate labels are shown in x axis when more entries comes

标签 android bar-chart mpandroidchart axis-labels

在我的 android 应用程序中,我有一个使用 MPAndroidChart 的水平条形图。我的问题是我的条形图中有 12 个条形图,每个条形图代表从 4 月到 3 月的月份,但我只能在 x 轴上看到交替的月份标签。如果条形数量很少,那么我可以看到 x 轴上的所有标签。我没有使用

为 x 轴设置任何标签计数

xAxix.setLabelCount()

方法。那为什么我看不到所有的标签呢?如果我放大然后我可以看到每个栏的标签。我正在使用 MPAndroidChart v3.0.1。附件是上面的屏幕截图。看到这里我只能看到'Apr,Jun,Aug,Oct,Dec,Feb'和所有其他月份不显示。我怎样才能看到所有其他月份。

Horizontal BarChart

下面是我的代码。

        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() {

        }
    });

最佳答案

您可以更改要在 y 轴 中显示的标签数量。

XAxis xAxis=lineChart.getXAxis();

xAxis.setLabelCount(4,true); //4 is the number of values to be shown.

关于android - MPAndroidChart : Only alternate labels are shown in x axis when more entries comes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41299454/

相关文章:

android - 使用 Flutter 在 Android 上从本地编译的共享库调用函数

r - 在给定其他变量的情况下显示一个变量的存在百分比

php - 如何使用 php 从 mysql 数据库按年份显示条形图值

android - 尝试在 BarEntry 数组上添加值时出错

java - 如何在Mpandroid饼图中动态添加文本?

android - mpandroidchart x轴值重复

java - 如何在 Android Studio 2020 中找到 R 文件?

java - 从静态方法完成 FragmentActivity

使用 Node.js 时出现 Android-volley 发布错误

r - 按组划分的真/假值计数条形图(斜线图)