You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android MPChart分组柱状图X轴标签全显且与分组对齐实现问题

MPAndroidChart分组柱状图标签不显示、不对齐问题修复方案

代码存在的核心问题

  • BarEntry的X坐标赋值错误
    两个数据系列的BarEntry均使用了重复的X值(1、2、3、4、1、2),6组数据对应X轴索引应为0~5,每个数据集需要各添加6个X值为0、1、2、3、4、5的BarEntry,重复X值会导致数据堆叠、分组逻辑混乱。
  • X轴标签数配置错误
    代码中设置了xAxis.setLabelCount(5),但实际有6个自定义标签,无法完全展示,需要改为强制显示6个标签。
  • X轴配置冲突
    提前设置的xAxis.setAxisMaximum(6)会被后续分组计算的最大轴值覆盖,属于冗余代码;开启xAxis.setAvoidFirstLastClipping(true)会导致首尾标签偏移,影响对齐效果。

修复后完整代码

private void displayGraph(){
    barChart.setDrawBarShadow(false);
    barChart.setDrawValueAboveBar(true);
    barChart.setMaxVisibleValueCount(50);
    barChart.setPinchZoom(false);
    barChart.setDrawGridBackground(false);
    barChart.getDescription().setEnabled(false);
    Legend l = barChart.getLegend();
    l.setEnabled(false);

    ArrayList<BarEntry> barEntries = new ArrayList<>();
    ArrayList<BarEntry> barEntries1 = new ArrayList<>();

    // 修复:X值对应0~5的6组索引,每个X值唯一
    barEntries.add(new BarEntry(0,50f));
    barEntries.add(new BarEntry(1,42f));
    barEntries.add(new BarEntry(2,34f));
    barEntries.add(new BarEntry(3,24f));
    barEntries.add(new BarEntry(4,50f));
    barEntries.add(new BarEntry(5,42f));

    barEntries1.add(new BarEntry(0,17f));
    barEntries1.add(new BarEntry(1,19f));
    barEntries1.add(new BarEntry(2,19f));
    barEntries1.add(new BarEntry(3,18f));
    barEntries1.add(new BarEntry(4,17f));
    barEntries1.add(new BarEntry(5,19f));

    BarDataSet barDataSet = new BarDataSet(barEntries,"");
    barDataSet.setColor(Color.parseColor("#F44336"));
    barDataSet.setDrawValues(false);

    BarDataSet barDataSet1 = new BarDataSet(barEntries1,"");
    barDataSet1.setColors(Color.parseColor("#9C27B0"));
    barDataSet1.setDrawValues(false);

    String[] months = new String[] {"TYPE 1", "TYPE 2", "TYPE 3", "TYPE 4","TYPE 5","TYPE 6"};
    BarData data = new BarData(barDataSet,barDataSet1);
    barChart.setData(data);

    XAxis xAxis = barChart.getXAxis();
    xAxis.setValueFormatter(new IndexAxisValueFormatter(months));
    barChart.getAxisLeft().setAxisMinimum(0);
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setGranularity(1);
    xAxis.setGranularityEnabled(true);
    // 修复:强制显示6个标签
    xAxis.setLabelCount(6, true);
    xAxis.setDrawGridLines(false);

    float barSpace = 0.02f;
    float groupSpace = 0.3f;
    int groupCount = 6;
    data.setBarWidth(0.15f);
    xAxis.setAxisMinimum(0);
    // 按分组宽度自动计算X轴最大值
    xAxis.setAxisMaximum(0 + barChart.getBarData().getGroupWidth(groupSpace, barSpace) * groupCount);
    barChart.groupBars(0, groupSpace, barSpace);
    // 刷新图表
    barChart.invalidate();
}

内容的提问来源于stack exchange,提问作者MARSH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:45:03