[JAVA] Créer un graphique à barres simple avec MPAndroidChart

emballer

Si vous souhaitez créer un graphique simple avec MPAndroidChart, Au contraire, il était difficile de faire un graphique simple à cause des fonctions riches. Il est devenu ver3.0.2 et était un peu différent de la version précédente (comme l'affichage de l'étiquette de l'axe des x ...)

Ce que je voulais faire

Je voulais faire un simple graphique à barres comme celui-ci. Screenshot (2017%2F09%2F08 午前10-18-41).png

Particulièrement difficile à comprendre

・ Afficher l'étiquette sur l'axe x ・ Définissez n'importe quelle couleur pour chaque graphique

manière

public class MainActivity extends AppCompatActivity {

    protected BarChart chart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        chart = (BarChart) findViewById(R.id.chart1);

        //Afficher l'acquisition de données
        BarData data = new BarData(getBarData());
        chart.setData(data);

        //Axe Y(la gauche)
        YAxis left = chart.getAxisLeft();
        left.setAxisMinimum(0);
        left.setAxisMaximum(100);
        left.setLabelCount(5);
        left.setDrawTopYLabelEntry(true);
        //En affichage entier
        left.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return "" + (int)value;
            }
        });

        //Axe Y(droite)
        YAxis right = chart.getAxisRight();
        right.setDrawLabels(false);
        right.setDrawGridLines(false);
        right.setDrawZeroLine(true);
        right.setDrawTopYLabelEntry(true);

        //Axe X
        XAxis xAxis = chart.getXAxis();
        //Liste des étiquettes à afficher sur l'axe X(la première""Est la position de l'origine)
        final String[] labels = {"","langue nationale", "Math", "Anglais"};
                xAxis.setValueFormatter(new IndexAxisValueFormatter(labels));
        XAxis bottomAxis = chart.getXAxis();
        bottomAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        bottomAxis.setDrawLabels(true);
        bottomAxis.setDrawGridLines(false);
        bottomAxis.setDrawAxisLine(true);

        //Affichage sur le graphique
        chart.setDrawValueAboveBar(true);
        chart.getDescription().setEnabled(false);
        chart.setClickable(false);

        //Guide d'utilisation
        chart.getLegend().setEnabled(false);

        chart.setScaleEnabled(false);
        //animation
        chart.animateY(1200, Easing.EasingOption.Linear);
    }

    //Obtenir des données de graphique à barres
    private List<IBarDataSet> getBarData(){
                //Données à afficher
        ArrayList<BarEntry> entries = new ArrayList<>();
        entries.add(new BarEntry(1, 60));
        entries.add(new BarEntry(2, 80));
        entries.add(new BarEntry(3, 70));
        List<IBarDataSet> bars = new ArrayList<>();
        BarDataSet dataSet = new BarDataSet(entries, "bar");

        //Afficher sous forme d'entier
        dataSet.setValueFormatter(new IValueFormatter() {
            @Override
            public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
                return "" + (int) value;
            }
        });
        //Ne pas souligner
        dataSet.setHighlightEnabled(false);

        //Définir la couleur de la barre
        dataSet.setColors(new int[]{R.color.material_blue, R.color.material_green, R.color.material_yellow}, this);
        bars.add(dataSet);

        return bars;
    }

}

Pour afficher une étiquette sur l'axe des x, cela ressemble à la conversion de la valeur numérique affichée sur l'axe des x des données en une étiquette. Un réglage de couleur arbitraire pour chaque graphique peut être exécuté en définissant la liste de couleurs dans la liste de données. De plus, par défaut, vous pouvez effectuer un zoom avant et arrière, appuyer pour mettre en surbrillance, etc. J'ai dû faire beaucoup pour l'ajuster car il y avait beaucoup d'échelles.

référence Étiquette sur l'axe x (https://github.com/PhilJay/MPAndroidChart/issues/2044) Couleur pour chaque graphique (https://stackoverflow.com/questions/38872181/mpandroidchart-bar-chart-how-to-change-color-of-each-label)

Recommended Posts

Créer un graphique à barres simple avec MPAndroidChart
Créez une application Web simple avec Dropwizard
[Retrait des rails] Créez une fonction de retrait simple avec des rails
Créez une application de recherche simple avec Spring Boot
Créez un tableau d'affichage simple avec Java + MySQL
Créez un terrain de jeu avec Xcode 12
Créez un site de démonstration simple avec Spring Security avec Spring Boot 2.1
Créez un environnement Vue3 avec Docker!
Créez des exceptions avec une interface fluide
Créez un serveur Web simple avec la bibliothèque standard Java com.sun.net.httpserver
Créez un CRUD simple avec SpringBoot + JPA + Thymeleaf ④ ~ Personnaliser le message d'erreur ~
Créez un fichier jar avec la commande
[Rails6] Créer une nouvelle application avec Rails [Débutant]
Créez une classe temporaire avec le nouvel Object () {}
[docker] [nginx] Créer un ALB simple avec nginx
[Rails 5] Créer une nouvelle application avec Rails [Débutant]
Créez un CRUD simple avec SpringBoot + JPA + Thymeleaf ② ~ Création d'écran et de fonctions ~
Dessinez un graphique à barres et un graphique linéaire en même temps avec MPAndroidChart
[Ruby on Rails] Créez un graphique circulaire des totaux par colonne avec Chartkick
Créez un serveur de passerelle simple en définissant masquerade avec firewall-cmd de CentOS8
[Memo] Créez facilement un environnement CentOS 8 avec Docker
Créer un CSR avec des informations étendues en Java
[Rails] rails nouveau pour créer une base de données avec PostgreSQL
[Windows] [IntelliJ] [Java] [Tomcat] Créer un environnement pour Tomcat 9 avec IntelliJ
Créons un processus chronométré avec la minuterie de Java! !!
Créez un cadre de traitement par lots simple dans Eclipse.
[Java] Créer une collection avec un seul élément
Créez une discussion d'équipe avec Rails Action Cable
Créer un compte SandBox avec IP Fastlane Spaces
Créer une carte multi-touches avec une bibliothèque standard
Afficher un simple Hello World avec SpringBoot + IntelliJ
Un simple jeu de ciseaux-papier-pierre avec JavaFX et SceneBuilder
Créer un serveur API Web avec Spring Boot
Créer un environnement de développement Spring Boot avec docker
Créer une image docker pour exécuter une application Java simple
Entraînez-vous à créer une application de chat simple avec Docker + Sinatra
Créer un site EC avec Rails 5 ⑨ ~ Créer une fonction de panier ~
Créez un modèle pour le widget iOS14 avec la configuration d'intention.
Créez une application de chat avec WebSocket (Tyrus) + libGDX + Kotlin
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
[Note] Créez un environnement Java à partir de zéro avec docker
Créer un service avec un modèle vide Liferay 7.0 / DXP
Essayez de créer avec Trailblazer
[Java] Créer un filtre
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
Tutoriel pour créer un blog avec Rails pour les débutants Partie 1
Créer un contrôle de page qui peut être utilisé avec RecyclerView
Créez une image Docker avec le JDK Oracle installé (miam
[Rails] J'ai essayé de créer une mini application avec FullCalendar
[Débutant] Essayez de créer un jeu RPG simple avec Java ①
Créez un CRUD simple avec SpringBoot + JPA + Thymeleaf ① ~ Hello World ~
Créez une application Web Hello World avec Spring Framework + Jetty