所以我试着用MPAndroidChart做一个每周图表,用当前的周数据和前几周的数据。我可以做单条很好,所有的线,但当我试图做多栏组,它做以下工作。

还有什么需要我做的吗?我每组每天只有两条酒吧。以下是我的当前代码:
BarData barDataPayments = new BarData(barDataSetCurrentWeek, barDataSetPrevWeek);
barChartPayments.setData(barDataPayments);
XAxis xAxisPayments = barChartPayments.getXAxis();
xAxisPayments.setValueFormatter(new IndexAxisValueFormatter(labelWeekdayNames));
xAxisPayments.setYOffset(5);
xAxisPayments.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxisPayments.setLabelCount(labelWeekdayNames.size());
xAxisPayments.setGranularity(1f);
xAxisPayments.setCenterAxisLabels(false);
xAxisPayments.setDrawGridLines(false);
float groupSpace = 0.08f;
float barSpace = 0.03f;
float barWidth = 0.2f;
barDataPayments.setBarWidth(barWidth);
barChartPayments.getXAxis().setAxisMinimum(0);
barChartPayments.getXAxis().setAxisMaximum(0 + barChartPayments.getBarData().getGroupWidth(groupSpace, barSpace) * 14);
barChartPayments.groupBars(0, groupSpace, barSpace);
barChartPayments.invalidate();发布于 2019-11-27 07:23:32
所以我最终要做的是手动设置数据。它需要一些调整才能得到我想要的方式,我相信有一个更正确的方法,但到目前为止,这是我找到的最简单的方法。
xAxisMiles.setYOffset(0); // <---- CHANGED TO ZERO
xAxisMiles.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxisMiles.setLabelCount(labelWeekdayNames.size());
xAxisMiles.setGranularity(1f);
xAxisMiles.setCenterAxisLabels(true); // <---- SET TO TRUE
xAxisMiles.setDrawGridLines(false);
//IMPORTANT *****
barDataPayments.setBarWidth(0.40f);
barDataPayments.getXAxis().setAxisMinimum(0);
barDataPayments.getXAxis().setAxisMaximum(7);
barDataPayments.groupBars(0, 0.10f, 0.05f);
//***** IMPORTANT*/发布于 2019-11-23 07:53:45
我有个片段可以帮你,
BarData barData = new BarData();
int i=10;
for (ExpenseData expenseData : results) {
List<BarEntry> barEntryList = new ArrayList<>();
barEntryList.add(new BarEntry(i, (float) expenseData.getBalance()));
BarDataSet barDataSet = new BarDataSet(barEntryList, expenseData.getCategory());
int rand = (int) (i*Math.random());
barDataSet.setBarBorderWidth(1);
barDataSet.setBarBorderColor(Color.rgb(rand,i*20,i));
barDataSet.setColor(Color.rgb(rand,i*20,i));
barData.addDataSet(barDataSet);
i+=10;
}
barChart.setData(barData);https://stackoverflow.com/questions/58823369
复制相似问题