2017-01-26 9 views
0

In meiner Anwendung möchte ich einige Daten in einem Kreisdiagramm anzeigen. Ich benutze die MPAndroidChart-Bibliothek und befolge die Dokumentation, die ich geschafft habe, ein gut aussehendes Diagramm zu programmieren, in dem alle meine Daten korrekt angezeigt werden.Zeigen Sie verschiedene Datensätze mit einem MPAndroidChart Tortendiagramm

Jetzt möchte ich mein Diagramm verbessern, aber ich habe einige Probleme. Meine Daten beziehen sich auf einen einzigen Tag, aber es gibt zwei Kategorien: Einkommen und Einnahmen. Bis jetzt habe ich sie als eine einzige PieDataSet behandelt (sie haben Etiketten, so ist es ziemlich einfach zwischen ihnen zu unterscheiden). Jetzt möchte ich unter Einkommen und Einnahmen unterscheiden, um sie mit verschiedenen Farben in demselben Tortendiagramm zu zeigen.

Ich habe versucht folgende this Link (das Liniendiagramm Teil), um es Tortendiagramme Anpassung, aber Android Studio sagt mir, dass ich nicht ein List<IPieDataSet> als Parameter für einen Konstruktor eines PieData Objekt verwenden kann. Hier ist der Code:

public static void drawPie(List<PieEntry> entriesU, List<PieEntry>entriesE, PieChart chart){ 
    PieDataSet set = new PieDataSet(entriesU,"uscite"); 
    PieDataSet set1 = new PieDataSet(entriesE,"entrate"); 
    List<IPieDataSet> dataSets = new ArrayList<>(); 
    dataSets.add(set); 
    dataSets.add(set1); 
    set.setSliceSpace(5); 
    set1.setSliceSpace(5); 
    PieData data = new PieData(dataSets); 
    chart.setData(data); 
} 

Ich habe viel gesucht, aber ich habe immer noch keine Antwort auf dieses Problem gefunden.

Frage:

Es ist möglich, mehrere Datensätze auf dem gleichen Kreisdiagramm angezeigt wird oder nicht? Und wenn es möglich ist, wie kann ich es tun?

Antwort

1

Ein Tortendiagramm ist ein einzelner 360-Grad-Kreis, in dem die Schnitte Prozentsätze eines gesamten Datensatzes darstellen. Dies macht nur im Zusammenhang mit einer einzigen IDataSet Sinn. Im Gegensatz zu BarChart und LineChart unterstützt ein PieChart nicht mehrere IDataSet.

Ich denke, was Sie wirklich wollen, ist, verschiedene Farben für Ihre "Einkommen" und "Einnahmen" zu verwenden. Dazu müssen Sie lediglich List<Integer> gelöste Farben (keine Farbressourcen) erstellen, wobei die Position in der Liste der Reihenfolge entspricht, in der die PieEntry dem Diagramm hinzugefügt wurde.

Zur Veranschaulichung, lassen Sie uns sagen, dass wir dieses:

entries.add(new PieEntry(15f, "entrate1")); //revenue1 
entries.add(new PieEntry(20f, "uscite1")); //expense1 
entries.add(new PieEntry(10f, "entrate2")); //revenue2 
entries.add(new PieEntry(50f, "uscite2")); //expense2 

Sie erstellen nur eine List<Integer> der aufgelösten Farben, die übereinstimmt:

List<Integer> colors = new ArrayList<Integer>(); 
colors.add(ContextCompat.getColor(context, R.color.red)); 
colors.add(ContextCompat.getColor(context, R.color.blue)); 
colors.add(ContextCompat.getColor(context, R.color.red)); 
colors.add(ContextCompat.getColor(context, R.color.blue)); 
dataSet.setColors(colors); 

Jetzt sind alle Ihre Einnahmen sind rot und Ihre Kosten sind blau . Sie können sogar clever sein und eine Funktion schreiben, die PieEntry Farben zuordnet, anstatt es manuell zu tun.

In jedem Fall ist this answer here korrekt für die Einstellung der Farben für die Kreisdiagrammscheiben.

+1

Das funktioniert perfekt für mich. Vielen Dank! – Caterina

Verwandte Themen