先看一下效果
首先我们来初始化一下barchart的配置:
private void initBarChar(BarChart barChart) {
XAxis xAxis = barChart.getXAxis();
//关闭右边纵轴
barChart.getAxisRight().setEnabled(false);
//关闭图例
barChart.getLegend().setEnabled(false);
//关闭描述信息的显示
barChart.getDescription().setEnabled(false);
//打开缩放交互
barChart.setPinchZoom(true);
//关闭网格线水平网格线
barChart.getAxisLeft().setDrawGridLines(false);
//关闭坐标纵轴
barChart.getAxisLeft().setEnabled(false);
barChart.setClickable(false);
//设置x轴显示在下方
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLinesBehindData(true);
xAxis.setGranularityEnabled(true);
xAxis.setDrawLimitLinesBehindData(false);
//设置X轴文本旋转角度
xAxis.setLabelRotationAngle(45);
xAxis.setDrawGridLines(false);
//设置X轴文本大小
xAxis.setTextSize(7);
}
设置显示的数据
List<BarEntry> barEntries = new ArrayList<>();
//X轴文本 与barEntries 长度一致
List<String> xLabels = new ArrayList<>();
//柱子文本 与barEntries 长度一致
List<Integer> colors = new ArrayList<>();
// ......省略数据赋值
BarDataSet barDataSet = new BarDataSet(barEntries, "Svr");
barDataSet.setColors(colors);
//给柱状图barChart赋值
if (barChart.getBarData() == null) {
BarData barData = new BarData();
barData.addDataSet(barDataSet);
barChart.setData(barData);
} else {
barChart.getBarData().addDataSet(barDataSet);
}
barDataSet.setValueTextSize(7);
XAxis xAxis = barChart.getXAxis();
xAxis.setValueFormatter(new IndexAxisValueFormatter(xLabels));
xAxis.setAxisMinimum(-0.5f);
xAxis.setAxisMaximum(bcGnssSVRInfo.getBarData().getXMax() + 1.5f);//x轴右边长度
//让X轴显示所有文本
xAxis.setLabelCount(xLabels.size());
//刷新
barChart.getBarData().notifyDataChanged();
barChart.notifyDataSetChanged();
barChart.invalidate();