Java MPAndroidChart分组条形图:组标题未显示在组上方
我有一个条形图,其中有4个条形图,使用。 到目前为止,这是可行的。现在我想在每组上方显示一个标题。这是我当前的输出(如您所见,标题没有显示在每个组的上方) 我的代码:Java MPAndroidChart分组条形图:组标题未显示在组上方,java,android,mpandroidchart,Java,Android,Mpandroidchart,我有一个条形图,其中有4个条形图,使用。 到目前为止,这是可行的。现在我想在每组上方显示一个标题。这是我当前的输出(如您所见,标题没有显示在每个组的上方) 我的代码: _overviewBarChart.setPinchZoom(false); _overviewBarChart.getDescription().setEnabled(false); _overviewBarChart.setDrawValueAboveBar(true); _overviewBa
_overviewBarChart.setPinchZoom(false);
_overviewBarChart.getDescription().setEnabled(false);
_overviewBarChart.setDrawValueAboveBar(true);
_overviewBarChart.getXAxis().setCenterAxisLabels(true);
_overviewBarChart.getXAxis().setAxisMinimum(0);
_overviewBarChart.getXAxis().setDrawGridLines(false);
private void updateOverviewBarChart() {
//Init calorie needs bars
BarEntry todayCalorieNeedsBarEntry = new BarEntry(0, _calorieEntry.getTarget());
BarEntry yesterdayCalorieNeedsBarEntry = new BarEntry(0, 0);
if (_yesterdayCalorieEntry != null)
yesterdayCalorieNeedsBarEntry = new BarEntry(0, _yesterdayCalorieEntry.getTarget());
ArrayList<BarEntry> calorieNeedsBarEntries = new ArrayList<>();
calorieNeedsBarEntries.add(todayCalorieNeedsBarEntry);
calorieNeedsBarEntries.add(yesterdayCalorieNeedsBarEntry);
//Init consumed calories bars
BarEntry todayConsumedCaloriesBarEntry = new BarEntry(1, _calorieEntry.getConsumed());
BarEntry yesterdayConsumedCaloriesBarEntry = new BarEntry(1, 0);
if (_yesterdayCalorieEntry != null)
yesterdayConsumedCaloriesBarEntry = new BarEntry(1, _yesterdayCalorieEntry.getConsumed());
ArrayList<BarEntry> consumedCaloriesBarEntries = new ArrayList<>();
consumedCaloriesBarEntries.add(todayConsumedCaloriesBarEntry);
consumedCaloriesBarEntries.add(yesterdayConsumedCaloriesBarEntry);
//Init BarDataSets
BarDataSet calorieNeedsBarDataSet = new BarDataSet(calorieNeedsBarEntries, getString(R.string.fragment_main_calorieneeds));
calorieNeedsBarDataSet.setColor(Color.parseColor("#26A69A"));
BarDataSet consumedCaloriesBarDataSet = new BarDataSet(consumedCaloriesBarEntries, getString(R.string.fragment_main_consumed));
consumedCaloriesBarDataSet.setColor(Color.parseColor("#E53935"));
//Init BarData, group BarEntrys, set group titles
BarData barData = new BarData(calorieNeedsBarDataSet, consumedCaloriesBarDataSet);
barData.setValueTextSize(14);
barData.setBarWidth(0.2f);
barData.groupBars(0, 0.15f, 0.1f);
ArrayList<String> groupTitles = new ArrayList<String>();
groupTitles.add(getString(R.string.fragment_main_today));
groupTitles.add(getString(R.string.fragment_main_yesterday));
_overviewBarChart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(groupTitles));// new BarChartStringFormatter(groupTitles));
//Set data, redraw BarChart
_overviewBarChart.setData(barData);
_overviewBarChart.invalidate();
}
\u概览条形图。设置PinchZoom(假);
_overviewBarChart.getDescription().setEnabled(false);
_概览条形图。设置条形图上方的DrawValues(true);
_overviewBarChart.getXAxis().setCenterAxisLabels(true);
_概述Barchart.getXAxis().SetAxismimum(0);
_overviewBarChart.getXAxis().setDrawGridLines(false);
私有void updateOverviewBarChart(){
//初始卡路里需要棒
BarEntry today卡路里eneedsbarentry=新的BarEntry(0,_calorienetry.getTarget());
BarEntry YesterdayCareneedsBarentry=新BarEntry(0,0);
如果(_YesterdayCalorientry!=null)
YesterdayCalorienedSBarentry=新的BarEntry(0,_YesterdayCalorienentry.getTarget());
ArrayList CarolineedsBarentries=新ArrayList();
添加(今天的卡路里含量);
加上(昨天的热量);
//初始消耗热量棒
BarEntry Today ConsumedCaloriesBarentry=新的BarEntry(1,_calorientry.getConsumed());
BarEntry Yesterday ConsumedCaloriesBarentry=新BarEntry(1,0);
如果(_YesterdayCalorientry!=null)
yesterdayConsumedCaloriesBarEntry=新的BarEntry(1,_yesterdayCalorieEntry.getConsumed());
ArrayList consumedCaloriesBarEntries=新建ArrayList();
添加(今天的ConsumedCaloriesBarentry);
添加(昨天的ConsumedCaloriesBarentry);
//初始化数据集
BarDataSet-CarrienedSBardataSet=新的BarDataSet(CarrienedSBarentries,getString(R.string.fragment_-main_-CarrienedES));
卡路里数据集.setColor(Color.parseColor(“#26A69A”);
BarDataSet consumedCaloriesBarDataSet=新的BarDataSet(consumedCaloriesBarEntries,getString(R.string.fragment_main_consumed));
consumedCaloriesBarDataSet.setColor(Color.parseColor(“#E53935”);
//Init BarData,组Barentry,设置组标题
BarData BarData=新的BarData(卡路里巴德数据集、消耗热量巴德数据集);
barData.setValueTextSize(14);
立根宽度(0.2f);
barData.groupBars(0,0.15f,0.1f);
ArrayList groupTitles=新的ArrayList();
添加(getString(R.string.fragment_main_today));
add(getString(R.string.fragment_main_昨日));
_概述Barchart.getXAxis().setValueFormatter(新的IndexaxiValueFormatter(groupTitles));//新的BarChartStringFormatter(groupTitles));
//设置数据,重新绘制条形图
_概述Barchart.setData(barData);
_overviewBarChart.invalidate();
}
你能看出我做错了什么吗?我终于找到了解决问题的办法 首先,您必须添加这两行代码(注意:参数可以根据您的需求而变化): 我的错误是默认的XAxis是细粒化的(0.1、0.2、0.3…)。因此IndexAxisValueFormatter将组标题应用于每个XAxis步骤。setGranularity解决了这个问题。最后,setAxisMaximum用于限制XAxis上的步数(之前的是3步,所以标题显示了3次) 然后改变
barData.groupBars(0, 0.15f, 0.1f);
为此(注意:参数可根据您的要求而变化)
结果:
barData.groupBars(0, 0.15f, 0.1f);
barData.groupBars(0, 0.45f, 0.1f);