Erstellen Sie zwei oder mehr Liniendiagramme mit MPAndroidChart [Java]

Warum ich auf diesen Artikel gekommen bin

Ich bin neu in der Android App-Produktion. Ich habe es geschafft, durch Text- und Websuche etwas greifbares zu machen, aber ich suche immer nach Code, der hilfreich zu sein scheint, weil ich die Grundlagen des Denkens nicht verstehen kann. Dieses Mal habe ich mich mit der Datenbank verbunden und mit diesen Daten zwei Diagramme mit unterbrochenen Linien erstellt, aber es fiel mir schwer, die Beschreibung der zweiten Zeile nicht zu kennen, daher möchte ich sie hier schreiben.

Referenz##

Money Forward Engineer Blog (Android: Ausdrucksstark mit Grafikanzeige. Verwenden wir MPAndroidChart!) Nyans App-Entwicklung (Zeichnen von Grafiken mit [Android] MPAndroidChart-Bibliothek) ← Dies ist ein Blog mit vielen Artikeln. Vielen Dank für Ihre Hilfe.

Umgebung##

Windows10 AndroidStudio4

Graphinitialisierung

Die Einführung und das Layout von MPAndroidChart finden Sie auf der Referenzseite. Ich habe auch einige der Methoden auskommentiert, die ich nicht verwendet habe.

LineChartActivity.java


LineChart mChart = findViewById(R.id.lineChart);
        //Gibt an, ob der Diagrammbeschreibungstext angezeigt werden soll
        mChart.getDescription().setEnabled(true);
        //Grafikbeschreibungstext (App-Name usw.)
        mChart.getDescription().setText(getResources().getString(R.string.app_name));
        //Diagrammbeschreibung Einstellung der Textfarbe
        //mChart.getDescription().setTextColor(Color.BLACK);
        //Diagrammbeschreibung Einstellung der Textgröße
        //mChart.getDescription().setTextSize(10f);
        //Anzeige der Positionseinstellung des Grafikbeschreibungstextes
        //mChart.getDescription().setPosition(0, 0);
        //Hintergrundfarbe des Graphen
        mChart.setBackgroundColor(Color.WHITE);

        //x-Achseneinstellung
        XAxis xAxis = mChart.getXAxis();
        //Ausgabe der x-Achse diagonal
        xAxis.setLabelRotationAngle(45);
        //Maximalwert der x-Achse Minimalwert
        //0 wenn~9. wird ausgegeben(10 Stück)Wenn Sie es nicht schreiben, werden die registrierten Daten angezeigt.
        xAxis.setAxisMinimum(0f);
        xAxis.setAxisMaximum(9f);
        //Stellen Sie das in der Datenbank registrierte Datum auf die x-Achse ein
        xAxis.setValueFormatter(new IndexAxisValueFormatter(getDate()));

        //Machen Sie die x-Achse zu einer gestrichelten Linie(Dashed Line)
        xAxis.enableGridDashedLine(10f, 10f, 0f);
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

        //Einstellung der y-Achse
        YAxis yAxis = mChart.getAxisLeft();
        //Maximale / minimale Einstellung der Y-Achse
        yAxis.setAxisMaximum(150f);
        yAxis.setAxisMinimum(50f);
        //Machen Sie die y-Achse zu einer gestrichelten Linie
        yAxis.enableGridDashedLine(10f, 10f, 0f);
        yAxis.setDrawZeroLine(true);

        //Die Skala rechts. Falsch, wenn nicht benötigt
        mChart.getAxisRight().setEnabled(false);

x-Achseneinstellungen

GetDate-Methode für die Einstellung der x-Achse. Ich musste die Art der in der Datenbank registrierten Daten ändern. Es scheint, dass ich klüger schreiben kann, aber für mich ist es das jetzt. Das variable Datum ist eine ArrayList , die die Daten in der Datenbank enthält.

LineChartActivity.java


//SimpleDateFormat durch Umschreiben der im String-Typ gespeicherten Daten auf den Datumstyp
private  ArrayList<String> getDate() {
        ArrayList<String> dateLabels = new ArrayList<>();
        for (int i = 0; i < date.size(); i++) {
            try {
                //Korrigieren Sie das Datum bis heute
                String strDate = date.get(i);
                DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
                Date entryDate = dateFormat.parse(strDate);
                DateFormat dt = new SimpleDateFormat("MM/dd");
                String setDate = dt.format(entryDate);
                dateLabels.add(setDate);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return dateLabels;
    }

Datenanzeige

Die Variablen valuesMax und valuesMin sind ArrayList , die die Daten in der Datenbank enthalten.

LineChartActivity.java


ArrayList<Entry> valuesMax = new ArrayList<>();
ArrayList<Entry> valuesMin = new ArrayList<>();
        LineDataSet max;   //Zeilenargument
        LineDataSet min;   
//Linieneinstellungsmethode
        max = new LineDataSet(valuesMax, "A");//Markenname
        max.setColor(Color.RED);          //Linienfarbe
        max.setCircleColor(Color.RED);    //Koordinatenfarbe
        max.setLineWidth(5f);             //Liniendicke 1f~
        max.setCircleRadius(5f);          //Koordinatengröße
        max.setDrawCircleHole(false);     //Koordinaten füllen → falsch Nicht füllen → wahr
        max.setValueTextSize(10f);        //Schreiben Sie den Wert der Daten. Nicht bei 0f aufgeführt. Da es sich um ein Float handelt, hat es einen Dezimalpunkt
        max.setDrawFilled(true);          //Ob unter der Zeile gefüllt werden soll
        max.setFillColor(Color.RED);      //Gefüllte Feldfarbe

//Machen Sie einen anderen Satz
        min = new LineDataSet(valuesMin, "B");
        min.setColor(Color.BLUE);
        min.setCircleColor(Color.BLUE);
        min.setLineWidth(5f);
        min.setCircleHoleRadius(5f);
        min.setDrawCircleHole(false);
        min.setValueTextSize(10f);
        min.setDrawFilled(true);
        min.setFillColor(Color.BLUE);

        //Setzen Sie eine Linie im Diagramm
        ArrayList<ILineDataSet> dataSets = new ArrayList<>();
        dataSets.add(max);
        dataSets.add(min);
        LineData lineData = new LineData(dataSets);
        mChart.setData(lineData);
        //Animieren Sie die Daten. Millisekunde.Größere Zahlen sind langsamer
        mChart.animateX(1000);

Die Zeile, die Sie dem ILineDateSet hinzugefügt haben, wird auf dem Bildschirm angezeigt.

Das fertige Produkt

Es werden zwei Grafiken angezeigt. Ich habe die Füllung rot und blau gemacht, aber der untere Rand der blauen Linie ist gemischt und wird lila ◎ Ich bin froh, wenn Sie es als Referenz verwenden können.

Recommended Posts

Erstellen Sie zwei oder mehr Liniendiagramme mit MPAndroidChart [Java]
Erstellen Sie ein Java-Projekt mit Eclipse
[Java] Wie schreibe ich, wenn ich zwei oder mehr Argumente an super übergebe?
Java lernen Versuchen Sie es mit einem Scanner oder einer Karte
Spieleentwicklung mit zwei Personen mit Java 2
Spieleentwicklung mit zwei Personen mit Java 1
Spieleentwicklung mit zwei Personen mit Java 3
Interagieren Sie mit der LINE Message API mit Lambda (Java)
Erstellen Sie eine API mit Retrofit2, Okhttp3 und Gson (Java).