Open Source · Android · Kotlin

Jedes Diagramm, das deine Android-App braucht.

Linien-, Balken-, Kreis-, Streu-, Candlestick-, Blasen-, Radar- und kombinierte Diagramme mit Zoomen, Ziehen, Hervorheben, Markern und Animationen. Eine Kotlin-API mit Properties, ein Jetpack-Compose-Modul und eine einzige Zeile für die Abhängigkeit.

Apache 2.0Lizenz Seit 2014gepflegt
Zweiundzwanzig Sekunden durch die Diagrammtypen, das Styling, dreißigtausend Punkte und den Code, den es dafür braucht. Das Video ist auf Englisch.

Neun Diagrammtypen, eine Arbeitsweise

Entries enthalten die Werte, ein Data Set enthält eine Reihe und ihr Styling, das Data-Objekt enthält alle Reihen eines Diagramms. Einmal beim Liniendiagramm gelernt, kennst du es für alle. Jede Karte unten ist ein Screenshot der Beispiel-App, gezeichnet von der Bibliothek.

Streudiagramme, Linien über die volle Breite, kubische und gestufte Linien, Halbkreise, negative Stapel, Echtzeitdaten und mehr findest du in der Beispiel-App.

Gebaut für echte Apps

Touch, der sich nativ anfühltZiehen, mit zwei Fingern zoomen, doppelt tippen, mit Schwung wischen, zum Hervorheben tippen, Kreis- und Radardiagramme drehen.
Alles gestaltbarAchsen, Raster, Legende, Grenzlinien, Wertformatierer, Farben, Strichmuster, Füllungen und Verläufe, alles als Properties.
Marker und HervorhebungenZeig eine View oder ein Composable am ausgewählten Eintrag, mit Listenern für Auswahl und Gesten.
AnimationenAnimiere entlang x, y oder beiden, lass Werte weich zu neuen Daten wandern oder animiere Zoom und Scrollen.
Schnell bei großen DatenDreißigtausend Punkte in einem Liniendiagramm laufen flüssig, dank gepuffertem Zeichnen und weil nur der sichtbare Ausschnitt gezeichnet wird.
Typisierte PayloadsHäng eigene Objekte an Einträge und bekomm sie aus Auswahl und Suche typisiert zurück.
Dokumentierte APIJede Klasse, Funktion und Property ist dokumentiert, mit Einheiten, Standardwerten und Nebenwirkungen.
Speichern und teilenZeichne jedes Diagramm in eine Bitmap oder direkt in die Galerie.

Jetpack Compose, voll unterstützt

Jeder Diagrammtyp hat ein Composable mit demselben Namen. Übergib die Daten als State, konfiguriere einmal in setup und lies Auswahl und Viewport über rememberChartState zurück. Marker sind Composables, Previews funktionieren und der State übersteht Konfigurationsänderungen.

val state = rememberChartState()
LaunchedEffect(lineData) { state.animateX(500) }

LineChart(
    data = lineData,
    modifier = Modifier.fillMaxWidth().height(300.dp),
    state = state,
    marker = { entry, _ -> Text("${entry.y}") },
    setup = { axisRight.isEnabled = false },
)
Text("Selected: ${state.selectedEntry?.y}")
Ein Linien-, ein Kreis- und ein Balkendiagramm, gesteuert durch Compose-State

Dokumentation

Loslegen

Füg das JitPack-Repository und eine Abhängigkeit hinzu, setz ein Diagramm in ein Layout oder Composable und übergib ihm Daten.

1. Abhängigkeit hinzufügen

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        maven("https://jitpack.io")
    }
}

// build.gradle.kts
dependencies {
    implementation("com.github.PhilJay.MPAndroidChart:MPChartLib:v4.0.1")
    implementation("com.github.PhilJay.MPAndroidChart:MPChartCompose:v4.0.1")
}

2. Diagramm anzeigen

val entries = listOf(Entry(0f, 4f), Entry(1f, 8f), Entry(2f, 6f))
val set = LineDataSet(entries, "Sales").apply {
    color = Color.BLUE
    lineWidth = 2f
    mode = LineDataSet.Mode.CUBIC_BEZIER
}
chart.data = LineData(set)
chart.animateX(500)

Benötigt minSdk 23. Apache License 2.0. Fragen gehören auf Stack Overflow, Fehler in die GitHub Issues.