2017-06-21 18 views
0

私はMPAndroidChart libraryを使用して2つのグループにグループ化された4つのバーを持つBarchartを持っています。 これまでのところ動作します。今私は各グループの上にタイトルを表示したい。これは私の現在の出力です(ご覧のとおり、各グループの上にタイトルは表示されません)。MPAndroidChartグループ化Barchart:グループのタイトルがグループの上に表示されない

enter image description here

マイコード:

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

あなたは私が間違ってやっているかを見ることができますか?

答えて

0

最後に私は自分の問題の解決策を見つけました。

あなたは、このコードの2行(注:パラメータが要件のために異なります):追加する必要がまず

_overviewBarChart.getXAxis().setGranularity(1f); 
_overviewBarChart.getXAxis().setAxisMaximum(2); 

は私のミスは、0.1、0.2、0.3(デフォルトX軸が細かく粒状化にあるということでした...)。したがって、IndexAxisValueFormatterは、各XAxisステップにグループタイトルを適用します。 setGranularityはこれを解決します。最後に、setAxisMaximumは、XAxisのステップ数を制限するために使用されます(前の値は3だったので、タイトルは3回表示されました)。これに続い

と変更

...

barData.groupBars(0, 0.15f, 0.1f); 

(注:パラメータが要件のために異なる場合があります)。..

barData.groupBars(0, 0.45f, 0.1f); 

結果:

enter image description here

関連する問題