Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/KoalaPlot/koalaplot-core
Koala Plot is a Compose Multiplatform based charting and plotting library written in Kotlin
https://github.com/KoalaPlot/koalaplot-core
Last synced: 2 months ago
JSON representation
Koala Plot is a Compose Multiplatform based charting and plotting library written in Kotlin
- Host: GitHub
- URL: https://github.com/KoalaPlot/koalaplot-core
- Owner: KoalaPlot
- License: mit
- Created: 2022-07-27T02:50:54.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-24T04:03:34.000Z (3 months ago)
- Last Synced: 2024-10-24T21:16:40.292Z (3 months ago)
- Language: Kotlin
- Homepage: https://koalaplot.github.io/
- Size: 4.97 MB
- Stars: 392
- Watchers: 1
- Forks: 18
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-list - KoalaPlot/koalaplot-core - Koala Plot is a Compose Multiplatform based charting and plotting library written in Kotlin (Kotlin)
- kmp-awesome - Koala Plot - A charting and plotting library for Compose Multiplatform. (Libraries / 🍎 Compose UI)
README
[![Maven Central](https://img.shields.io/maven-central/v/io.github.koalaplot/koalaplot-core?color=278ec7)](https://central.sonatype.com/artifact/io.github.koalaplot/koalaplot-core)
[![Kotlin](https://img.shields.io/badge/kotlin-1.9.22-278ec7.svg?logo=kotlin)](http://kotlinlang.org)
[![Dokka docs](https://img.shields.io/badge/docs-dokka-278ec7)](https://koalaplot.github.io/koalaplot-core/api/0.6.3/)
[![License MIT](https://img.shields.io/badge/license-MIT-278ec7.svg)](https://github.com/KoalaPlot/koalaplot-core/tree/main/LICENSE.txt)# Koala Plot
Koala Plot is a [Compose Multiplatform](https://www.jetbrains.com/lp/compose-mpp/) based charting and plotting library
allowing you to build great looking interactive charts for
[Android](https://developer.android.com/jetpack/compose), desktop, ios, and web using a single API and code base.Try out
the [web version of the samples](https://koalaplot.github.io/koalaplot-samples/wasmJs/productionExecutable/index.html)
for a quick look at the possibilities when using Koala Plot. Note that this uses
the [alpha Kotlin wasm Compose web-canvas](https://kotlinlang.org/docs/wasm-overview.html) capability, and you'll
need a browser supporting the [wasm garbage collection feature](https://github.com/WebAssembly/gc). For more information
see [https://kotl.in/wasm_help](https://kotl.in/wasm_help).This project is in a pre-release experimental/alpha state. We encourage you to give it a try, make suggestions for
improvement, and even [contribute](https://github.com/KoalaPlot/koalaplot-core/blob/main/CONTRIBUTING.md)! It is
expected that the API surface and functionality will change as we gain experience using the library in applications.# Current Features
Most elements of a plot are Composables and can therefore be easily customized. This includes things like colors, fonts,
borders, shapes, user interaction, etc. Web support is provided by the Compose-web Canvas support currently in alpha.* Pie and donut chart
* Composable slices, with default implementation that can react to hovering
* Optional Composable labels and Composable connectors with provided linear and bezier implementations
* Composable content for donut chart centers
* Customizable first-draw animation
* Line graphs
* Linear or Log y-axis
* Numeric or category x-axis
* Composable axis titles and value labels
* Optional Composable symbols for data points
* Optional Composable symbols at each data point with default implementations
* Zoom and pan one or both axes (except for mobile platforms within js and wasmJs)
* Optional shaded areas (area chart)
* Stacked area graphs
* Plots multiple lines with shaded areas between them and accumulated values
* Similar feature set as the Line chart
* Vertical bar graph
* Linear or Log y-axis
* Numeric or category x-axis
* Composable vertical bars with a provided default implementation
* Support for clustered and stacked bars
* Support for negative values and bars that don't start at 0
* Customizable first-draw animation
* Zoom and pan one or both axes (except for mobile platforms within js and wasmJs)
* Bullet Graph
* Individual or multiple vertically aligned bullet graphs
* Radar/Polar/Spider plots
* Lines, areas, symbols, or a combination
* Configurable origin position and angle orientation (clockwise/counter-clockwise)
* Chart layout
* Combines an optional Composable title, plot, and legend with any of 4 positions
* Legends
* Single column
* Flow-layout# Getting Started
1. Add the mavenCentral and compose repositories to your project's build.gradle.kts
```kotlin
repositories {
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
```2. Include Koala Plot core as a dependency in your project's build.gradle.kts
```kotlin
dependencies {
implementation("io.github.koalaplot:koalaplot-core:0.6.4")
}
```You can also see a complete example of a build.gradle.kts in
the [samples](https://github.com/KoalaPlot/koalaplot-samples).3. Start coding
```kotlin
BulletGraphs {
bullet(FloatLinearAxisModel(0f..300f)) {
label {
Column(
horizontalAlignment = Alignment.End,
modifier = Modifier.padding(end = KoalaPlotTheme.sizes.gap)
) {
Text("Revenue 2005 YTD", textAlign = TextAlign.End)
Text("(US $ in thousands)", textAlign = TextAlign.End, style = MaterialTheme.typography.labelSmall)
}
}
axis { labels { Text("${it.toInt()}") } }
comparativeMeasure(260f)
featuredMeasureBar(275f)
ranges(0f, 200f, 250f, 300f)
}
}
```# Documentation
- [Latest build](https://koalaplot.github.io/koalaplot-core/api/0.6.4)
- [Release 0.6.4](https://koalaplot.github.io/koalaplot-core/api/0.6.4)Also see the [sample repository](https://github.com/KoalaPlot/koalaplot-samples) for code examples.
# Contributing
Contributions are welcome. Further details can be found in the
[Contributing Guidelines](https://github.com/KoalaPlot/koalaplot-core/blob/main/CONTRIBUTING.md)# Examples