2016-08-09 17 views
9

Konieczne jest, aby moja aplikacja miała etykietę na każdym pasku wykresu słupkowego. Czy jest sposób na to zrobić z MPAndroidChart? Nie mogłem znaleźć tego sposobu na wiki/javadocs projektu.MPAndroidChart - Dodawanie etykiet do wykresu słupkowego

Jeśli nie ma sposobu, aby to zrobić, czy istnieje inne oprogramowanie, które pozwoli mi to zrobić?

enter image description here

Odpowiedz

22

Updated Answer (MPAndroidChart v3.0.1)

Będąc tak powszechnie używanych funkcji, v3.0.1 biblioteki dodaje klasę IndexAxisValueFormatter dokładnie do tego celu, więc jest to tylko jedna linia kodu teraz:

mBarChart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(labels)); 

protip z oryginalnego odpowiedź poniżej stosuje się nadal.

Original Odpowiedź (MPAndroidChart v3.0.0)

Z v3.0.0 biblioteki nie ma bezpośredni sposób ustawiania etykiety dla barów, ale jest to dość przyzwoity obejście, który wykorzystuje interfejs ValueFormatter.

Tworzenie nowego formatowania takiego:

public class LabelFormatter implements IAxisValueFormatter { 
    private final String[] mLabels; 

    public LabelFormatter(String[] labels) { 
     mLabels = labels; 
    } 

    @Override 
    public String getFormattedValue(float value, AxisBase axis) { 
     return mLabels[(int) value]; 
    } 
} 

następnie ustawić tę formatowania do swojej osi x (zakładając, że masz już utworzony String[] zawierający etykiety):

mBarChart.getXAxis().setValueFormatter(new LabelFormatter(labels)); 

protip : Jeśli chcesz usunąć dodatkowe etykiety pojawiające się podczas powiększania do wykresu słupkowego, możesz użyć funkcji granularity:

XAxis xAxis = mBarChart.getXAxis(); 
xAxis.setGranularity(1f); 
xAxis.setGranularityEnabled(true); 
+0

można podać mi jakieś przyzwoite kodu źródłowego na temat sposobu, aby pokazać wielokrotne wykres słupkowy z etykietami na OśX –

+0

ciebie protip zapisanych mój dzień. Dzięki! @ TR4Android –

+0

Dziękujemy za bieżące aktualizowanie odpowiedzi. To pytanie jest bardzo często zadawane, więc powinniśmy przekierować duplikaty tutaj. –

1

można ustawić etykietę kolumny powyżej przez dodanie tej linii odchodzenie kod

xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);