2014-11-11 4 views
6

Sto utilizzando il rilascio v2 MPAndroidChart library. Sto cercando di mostrare 3 barre, con i dati presi dal database. Sfortunatamente, invece di vedere 3 barre con i loro dati, visualizzandoli con lo stesso risultato. Guarda lo screenshot. Grazie per l'aiuto.MPAndroidChart BarChart Group DataSets

int [] x = {1,2,3}; 
Cursor c = db.rawQuery(sql, null); 
     int count = c.getCount(); 

     float value1 ; 
     float value2 ; 
     float value3 ; 
     String[] mesi = new String[count]; 

     for(int n=0; n<count; n++) { 
      c.moveToNext();  
      mesi[n]= c.getString(0);    
      value1 = c.getFloat(1); 
      value2 = c.getFloat(2); 
      value3 = c.getFloat(3); 

      ArrayList<String> xVals = new ArrayList<String>(); 
      for (int i = 0; i <x.length; i++) { 
       xVals.add(x.length + " " + mChart.getUnit());    
      } 

      ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>(); 
      ArrayList<BarEntry> yVals2 = new ArrayList<BarEntry>(); 
      ArrayList<BarEntry> yVals3 = new ArrayList<BarEntry>(); 

      for (int i = 0; i < x.length; i++) {     
       yVals1.add(new BarEntry(value1, i)); 
      } 

      for (int i = 0; i < x.length; i++) {     
       yVals2.add(new BarEntry(value2, i)); 
      } 

      for (int i = 0; i < x.length; i++) {     
       yVals3.add(new BarEntry(value3, i)); 
      } 

     // create 3 datasets with different types 
      BarDataSet set1 = new BarDataSet(yVals1, "Company A"); 
      set1.setColor(Color.rgb(104, 241, 175)); 
      BarDataSet set2 = new BarDataSet(yVals2, "Company B"); 
      set2.setColor(Color.rgb(164, 228, 251)); 
      BarDataSet set3 = new BarDataSet(yVals3, "Company C"); 
      set3.setColor(Color.rgb(242, 247, 158)); 

      ArrayList<BarDataSet> dataSets = new ArrayList<BarDataSet>(); 
      dataSets.add(set1); 
      dataSets.add(set2); 
      dataSets.add(set3); 

      BarData data = new BarData(xVals, dataSets); 

      // add space between the dataset groups in percent of bar-width 
      data.setGroupSpace(0); 

      mChart.setData(data); 
      mChart.invalidate(); 

}    
     c.close(); 
    db.close(); 

} 

il risultato enter image description here

risposta

4

Avete fatto un'uscita logcat dei valori del grafico dovrebbe mostrare? Forse non sono memorizzati correttamente nel database.

Il tuo codice sembra corretto per me.

È anche possibile testarlo fornendo semplicemente un valore predefinito come ad es. 50 per tutte le barre e vedere se è tracciata correttamente.

Per cambiare la chiamata colore:

BarDataSet.setColor(...);

UPDATE: V'è ora un tutorial molto dettagliato su come creare raggruppati BarCharts disponibili sulla pagina ufficiale GitHub della biblioteca, sulla base del rilascio v3 .0.0: Grouped BarChart tutorial

+0

ok, risolto, grazie ... Ora come posso modificare i valori dei colori? Sono riuscito a modificare solo quelli della legenda. grazie – user3608814

+0

Bene, guarda la mia modifica. –

+0

Grazie, mi piace molto la tua libreria. Hai fatto un ottimo lavoro. – user3608814