在Android中实现自定义条形图

时间:2020-06-13 10:41:40

标签: java android-studio bar-chart axis-labels mpchartandroid

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

enter image description here

应该看起来像这样。我尝试了mpChart,但只能走这么远了

enter image description here

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

我在这里尝试了几乎所有可能的示例和问题,无法使标签居中。是否可以将标签准确地放在未分组条形图中的条形下方?我看到的所有解决方案仅适用于分组条形图或组合图。

3 个答案:

答案 0 :(得分:0)

当我将x轴值从1绘制时,将其更改为0并删除了

xAxis.setCenterAxisLabels(true);

我能够使轴标签居中

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

为BarChartRenderer子类,然后调用:

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

它甚至可以让您按照here所述更改其形状。

但是我认为您要寻找的内容确实接近this