在 android 中实现自定义条形图

Implementing custom barchart in android

我正在尝试实现自定义条形图

应该看起来完全像这样。我尝试了 mpChart,但只能做到这一点

    barDataSet = new BarDataSet(barEntries, "");
    barData = new BarData(barDataSet);
    barData.setBarWidth(.5f);
    barChart.setData(barData);
    
  barDataSet.setColors(getResources().getColor(R.color.colorPrimary));
    barDataSet.setValueTextColor(Color.BLACK);
    barDataSet.setDrawValues(false);
    barChart.getXAxis().setDrawAxisLine(false);
    barChart.setDrawGridBackground(false);
    barChart.getXAxis().setDrawGridLines(false); 
    barChart.getAxisLeft().setDrawGridLines(false); 
    barChart.getAxisRight().setDrawGridLines(false);
    barChart.getAxisLeft().setEnabled(false);
    barChart.getAxisRight().setEnabled(false);
    barChart.getLegend().setEnabled(false);
    barChart.setPinchZoom(false);
    barChart.setDescription(null);
    barChart.setTouchEnabled(false);
    barChart.setDoubleTapToZoomEnabled(false);
    barChart.setExtraOffsets(20, 0, 0, 30);

    XAxis xAxis = barChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setTextSize(14f);
    xAxis.setTextColor(Color.BLACK);
    xAxis.setYOffset(5);
    xAxis.setDrawLabels(true);
    xAxis.setGranularityEnabled(true);
    xAxis.setGranularity(1f);
    xAxis.setXOffset(30);
    xAxis.setValueFormatter(new IndexAxisValueFormatter(xAxisLabel));
    xAxis.setCenterAxisLabels(true);
    
    barChart.invalidate();

我在这里尝试了几乎所有可能的示例和问题,但无法将标签置于条形中心。是否可以将标签恰好放在非分组条形图中的条形下方?我看到的所有解决方案仅适用于分组条形图或组合图表。

我正在绘制从 1 开始的 x 轴值。当将其更改为 0 并删除时

xAxis.setCenterAxisLabels(true);

并且我能够将轴标签居中

here 下载 MPAndroidChart 源代码。然后,您可以根据需要自定义代码并将其添加到您的项目中 单击文件>新建>导入模块。

您需要为其创建自定义渲染器。

子类 BarChartRenderer 然后调用:

barChart.setRenderer(new MyBarChartRenderer(barChart, barChart.getAnimator(), barChart.getViewPortHandler()))

它甚至可以让您按照描述改变它的形状 here

但我认为您要查找的内容非常接近 this