Mpandroid -Diagramm: So richten Sie ein horizontaler barizontaler barizontaler Barchart einAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Mpandroid -Diagramm: So richten Sie ein horizontaler barizontaler barizontaler Barchart ein

Post by Anonymous »

Ich verwende mpandroidchart, um ein horizontales Balkendiagramm im Porträtmodus mit aktivierter Scrolling anzuzeigen. Hier ist mein aktueller Code -Snippet: < /p>

Code: Select all

Map genreData = new LinkedHashMap();
genreData.put("Pop", 19);
genreData.put("Hip-Hop", 19);
genreData.put("Rock", 19);
genreData.put("Dance", 21);
genreData.put("R&B", 21);

if (genreData != null && !genreData.isEmpty()) {
List sorted = new ArrayList(genreData.entrySet());
sorted.sort((a, b) -> Integer.compare(b.getValue(), a.getValue())); // Sort descending

String[] labels = new String[sorted.size()];
ArrayList entries = new ArrayList();
ArrayList barColors = new ArrayList();
float maxVal = 0f;

for (int i = 0; i < sorted.size(); i++) {
Map.Entry e = sorted.get(i);

int idx = sorted.size() - 1 - i;
labels[idx] = e.getKey();
entries.add(new BarEntry(idx, e.getValue()));
barColors.add(Color.BLUE);
maxVal = Math.max(maxVal, e.getValue());
}

BarDataSet set = new BarDataSet(entries, "Genre");
set.setColors(barColors);
set.setValueTextSize(10f);
set.setValueFormatter(new ValueFormatter() {
@Override
public String getBarLabel(BarEntry barEntry) {
return String.valueOf((int) barEntry.getY());
}
});

BarData data = new BarData(set);
data.setBarWidth(0.5f);

genreChart.setData(data);
genreChart.setFitBars(true);
genreChart.getDescription().setEnabled(false);
genreChart.getLegend().setEnabled(false);
genreChart.getAxisRight().setEnabled(false);

XAxis x = genreChart.getXAxis();
x.setValueFormatter(new IndexAxisValueFormatter(labels));
x.setPosition(XAxis.XAxisPosition.BOTTOM);
x.setDrawGridLines(false);
x.setGranularity(1f);
x.setLabelCount(labels.length);
x.setTextSize(12f);

genreChart.getAxisLeft().setAxisMinimum(0f);
genreChart.getAxisLeft().setAxisMaximum(maxVal + 5f);

genreChart.setVisibleXRangeMaximum(3f);
genreChart.setDragEnabled(true);
genreChart.setPinchZoom(false);
genreChart.setScaleXEnabled(false);
genreChart.setScaleYEnabled(false);

genreChart.moveViewToX(0);

genreChart.animateY(800);
genreChart.invalidate();
}
< /code>
und mein XML -Layout: < /p>

< /code>
Probleme, mit denen ich ausgesetzt bin: < /p>

  LISTE -ItemDie Diagramm zeigt zunächst die Stangen von unten an, aber ich möchte, dass es von oben beginnt (mit den längsten Balken zuerst sichtbar). Scrollen Sie zurück. Zu einer Zahl, die kleiner als die Anzahl der Datenpunkte ist, treten die erwähnten seltsamen 2 Probleme auf. Beim Einstellen, z. an genitterart.setvisiblexrangemaximum (5f); 
Die Probleme treten nicht auf. Trotzdem ist dies ein Problem, da ich nicht alle Datenpunkte anzeigen kann und einen scrollbaren Barchart haben möchte. Weiß jemand, wie man das macht? Also bitte, wenn jemand eine Ahnung hat, wie er dieses Problem lösen kann, werde ich Ihre Antwort sehr schätzen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post