web-dev-qa-db-fra.com

MPAndroidChart - Ajout d'étiquettes au graphique à barres

Il est nécessaire pour mon application d'avoir une étiquette sur chaque barre du graphique à barres. Existe-t-il un moyen de le faire avec MPAndroidChart? Je n'ai pas trouvé de moyen de le faire sur le projet wiki/javadocs.

S'il n'y a pas moyen de le faire, y a-t-il un autre logiciel qui me le permettra?

enter image description here

13
Matt

Réponse mise à jour (MPAndroidChart v3.0.1)

Étant une fonctionnalité couramment utilisée, la version 3.0.1 de la bibliothèque a ajouté la classe IndexAxisValueFormatter exactement à cette fin, il ne s'agit donc plus que d'une ligne de code:

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

Le ProTip de la réponse d'origine ci-dessous s'applique toujours.

Réponse originale (MPAndroidChart v3.0.0)

Avec la version 3.0.0 de la bibliothèque, il n'existe aucun moyen direct de définir des étiquettes pour les barres, mais il existe une solution de contournement plutôt décente qui utilise l'interface ValueFormatter.

Créez un nouveau formateur comme celui-ci:

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];
    }
}

Réglez ensuite ce formateur sur votre axe x (en supposant que vous avez déjà créé un String[] contenant les étiquettes):

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

Astuce: si vous souhaitez supprimer les étiquettes supplémentaires apparaissant lors du zoom dans le graphique à barres, vous pouvez utiliser la fonction de granularité:

XAxis xAxis = mBarChart.getXAxis();
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
41
TR4Android

vous pouvez définir le libellé de la colonne ci-dessus en ajoutant ce code de ligne

xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
7
Muneerah Rashed