[ERLEDIGT] MPAndroidChart gruppiertes Barchart: Gruppentitel nicht über Gruppe

O

OPunktSchmidt

App-Anbieter (kostenpfl.)
4
Hallo,

vorweg: Ich nutze MPAndroidChart (GitHub - PhilJay/MPAndroidChart: A powerful Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations.):

Ich habe ein Barchart mit 4 Bars, die in 2 Gruppen gruppiert sind. Das funktioniert so weit. Jetzt möchte ich einen Titel über jeder Gruppe anzeigen. Dies ist meine aktuelle Ausgabe (wie ihr sehen könnt, werden die Titel nicht über jeder Gruppe gezeigt sondern irgendwo und mehrmals).

ul1EL.png


Mein Code:


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

Könnt ihr vielleicht sehen was ich falsch mache?

LG
 
Ich denke nicht dass du hier jemand finden wirst der dieses Framework benutzt hat, aber hast du dich in der Dokumentation mal selbst schlau gelesen ob du dort etwas findest?

Bei Punkt 11 habe ich diese Methode ausfindig machen können: setDescriptionPosition(float x, float y)

Solch eine Methode benutzt du z.B. gar nicht in deinem Code (Strg+F Browser Suche hat mir keine Einträge angezeigt), also evtl. mal in der Doku nochmal nachlesen.
 
Ja ich weiß das es schwer ist jemanden zu finden der sich damit gut auskennt und dann auch noch das Problem erkennt. MPAndroidChart ist zwar das bekannteste Chart-Framework aber trotzdem wird es vergleichsweise wenige geben die es viel einsetzen. Selbst bei StackOverflow meldet sich keiner.

Ich habe selber schon die Dokumentation durch und es gibt sogar ein Beispiel auf GitHub dafür aber das will irgendwie auch nicht. Ich setze mich morgen auch nochmal ein paar Stunden hin und versuche das Problem zu lösen aber vielleicht findet sich ja doch jemand :)

edit: Ich denke nicht das setDescriptionPosition das Problem ist. Man kann zu einem Gesamtchart einen Beschreibungstext angeben (nicht für die Gruppen). Dafür ist die Funktion. Ich schau aber auch nochmal über die Doku ob ich was übersehen habe
 
Ich habe etwas in der JavaDoc dieses Framework mal geschaut. Da steht bei der Methode Bardata.groupBars(float,float,float)
dass man unbedingt notifyDataSetChanged() auf das darunter liegende Set aufrufen sollte. Würde das evtl dein Fehler beheben?!
 
Hallo OPunkt

Ich hoffe es ist in Ordnung wenn ich auf meine Antwort bei Stackoverflow verlinke

natürlich ist es absolut in Ordnung - eher sogar erwünscht - wenn User ihr Feedback zur Lösung geben. :)

Ich habe nun den Thread auf erledigt gesetzt
 

Ähnliche Themen

S
Antworten
4
Aufrufe
4.368
mblaster4711
mblaster4711
L
Antworten
5
Aufrufe
813
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
940
swa00
swa00
Zurück
Oben Unten