在 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。
我正在尝试实现自定义条形图
应该看起来完全像这样。我尝试了 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。