Library / SDK
halfhp/androidplot avatar
halfhp/androidplot

Androidplot: charts for Android without dragging in a charting dependency

Charts and plots for Android

534 stars162 forksJavaApache-2.0

At a glance

What is it?
Androidplot is a Java and Kotlin charting library for Android whose only dependency is the androidx.annotation jar that every app already has, so it adds nothing to your APK. It draws the classic plot types, handles large datasets with zoom-aware downsampling, and can render off the main thread.
Who is it for?
Adopt Androidplot if you need charts in an Android app and you would rather own a small charting library than take on a full charting dependency with its own transitive weight. Do not adopt it if you need a chart type it does not draw, since the list of plot types is fixed and reasonably short, and do not assume the Compose support is a first class path, because the documented route is an AndroidView wrapper.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A charting library with one dependency

Androidplot is a library for creating dynamic and static charts in Android apps, and the sentence that decides whether you use it is about what it does not bring in.

The core library is lightweight: its only dependency is the androidx.annotation jar, which every Android app already has, so it adds nothing else to your APK. That is the whole pitch. A charting library that brings no third party transitives is a rare and valuable thing on Android, where the typical chart dependency arrives with its own support library requirements, its own version constraints and its own ProGuard configuration.

The runtime reach is also notable. Androidplot runs on Android 2.0, which is API 5, and up, works equally well from Kotlin and Java, and can be used from Jetpack Compose via AndroidView.

That API 5 floor is the kind of thing that sounds absurd in 2026 until you realise what it implies about the library's design. Nothing in it can depend on a recent platform API without a guard, and the drawing has to go through the View and Canvas layer rather than anything Compose-specific. The Compose support is an AndroidView wrapper, which is the honest way to offer Compose interop for a View-based library.

The project is Apache-2.0 licensed, the primary language is Java, the default branch is master, and the last push was on 2026-10-18. The release history is 1.6.0 from 2026-09-07, 1.5.11 from 2024-08-22 and 1.5.10 from 2022-08-01, so the current major is a recent jump after a long gap, and the homepage is androidplot.com.

The plot types, and the features around them

The features list is short and it reads like a checklist of what a charting library needs to do.

The plot types are line charts, scatter charts, bar charts, pie charts, step charts, candlestick charts and bubble charts. The screenshots in the README show seven of them, in vertical form, which is the shape most mobile dashboards use for a side panel or a card.

Then there are the things that make a chart usable rather than merely present. Dynamic plots, so the data can change and the plot redraw. Pan and zoom, which is not a given on a phone. Background-thread rendering, so the work of laying out a large dataset does not happen on the main thread. Large datasets with zoom-aware downsampling, which is the interesting one: the library knows the zoom level, so it can throw away the points that would not be visible at that scale instead of drawing every point and letting the renderer clip them.

There is also value markers and shaded regions, for annotating a series, and XML styling with custom renderers, which is the escape hatch for anything the built-in types do not cover.

That last item is the strategic one. A charting library that offers custom renderers can be extended into a chart type it does not ship, at the cost of drawing it yourself, rather than being limited to a fixed list.

Getting started, and the snapshot builds

The dependency is a single Gradle line:

groovy
dependencies {
    implementation "com.androidplot:androidplot-core:1.6.0"
}

The artefact is com.androidplot:androidplot-core, published to Maven Central, and the group id is the reverse of the GitHub organisation, which is the usual arrangement for a library that wants its own namespace.

Then the README points at the Quickstart in the docs for your first plot on screen, or at the full documentation, and mentions something that is useful for anyone working on the library itself: every push to master also publishes a snapshot build if you want to try unreleased changes.

That last detail is the way to test a change before it is released, and for a library whose next version may be a while away it is the practical route to trying a fix. The documentation set lives in the docs/ directory of the repository, with the quickstart at docs/quickstart.md and the full documentation at docs/index.md.

The demo app is also worth knowing about, because the README says its source is the best reference for how things fit together. It demonstrates every plot type and feature, it is installable from Google Play, and the source is browsable at demoapp/src/main/java/com/androidplot/demos. The repository also has a demoapp-wearable/ directory alongside the demoapp/ samples.

ProGuard, the I/O talk and where to ask questions

The Links section has an entry that is worth stopping on, because it is a practical warning rather than a badge. There is a talk from Google I/O 2018 where the library stars in Effective ProGuard keep rules for smaller applications, and the phrase Effective ProGuard keep rules for smaller applications is italicised in the README.

The implication is that Androidplot ships with ProGuard or R8 keep rules, and that a charting library built on reflection or on classes discovered at runtime needs those rules to survive shrinking. If you see an Androidplot chart disappear from a release build, that is the first thing to check.

The rest of the Links section is the standard set of destinations: the website at androidplot.com, the issues tracker, the release notes in docs/release_notes.md, and the contributing guide in docs/contributing.md.

Support has two channels, and the split is sensible. Technical questions should be posted using the androidplot tag on Stack Overflow, and for everything else the Google Groups forum is the place. That is an old-fashioned arrangement for a project with a 2026 release, and it reflects the library's long life: a Stack Overflow tag with an existing body of answers is worth more for a charting library than a fresh discussion board, because the questions repeat.

The repository layout backs this up. There is androidplot-core/ for the library, demoapp/ and demoapp-wearable/ for the samples, docs/ for the documentation, a build.gradle and settings.gradle, gradle.properties, a codecov.yml, and a .idea/ directory, which is a project that still carries its IDE configuration in version control.

A permissive licence, and an SPDX header instead of the text

The licensing note is short and unusual enough to be worth quoting rather than paraphrasing. Androidplot has been made available under the Apache 2.0 license. Source files carry an SPDX SPDX-License-Identifier: Apache-2.0 tag in place of a full license header, and the full text is in LICENSE.md.

So instead of a full license header at the top of every file, there is a single line naming the licence. That is the SPDX convention, and for a library with hundreds of source files it is a real reduction in noise, at the cost of the header that historically carried the copyright line and the warranty disclaimer where a reader would see it.

The full licence text in the repository still carries the standard Apache notice, including the copyright line for 2026 Androidplot.com, the grant, the conditions, and the disclaimer of warranty and liability, along with the pointer to the licence URL.

The README also asks for a rating on codix.io if you enjoy the library and it is a small reminder that the project is old and its documentation reflects that.

The last thing to weigh is the release cadence rather than the licence. The 1.5 line ran from 2022 to 2024, and 1.6.0 arrived in September 2026, so if you are picking a version for a new project, the current one is the 1.6.0 line with its Compose interop and the Android 2.0 floor still intact.

Editorial conclusion

Adopt Androidplot if you need charts in an Android app and you would rather own a small charting library than take on a full charting dependency with its own transitive weight. Do not adopt it if you need a chart type it does not draw, since the list of plot types is fixed and reasonably short, and do not assume the Compose support is a first class path, because the documented route is an AndroidView wrapper. Before you upgrade, check the release notes in the docs, because the version numbering shows a long gap and a recent jump, and read the ProGuard keep rules mentioned in the links if you shrink your release build.

Frequently asked questions

What is Androidplot?

It is a library for creating dynamic and static charts in Android apps. It runs on Android 2.0, API 5, and up, works from Kotlin and Java, can be used from Jetpack Compose via AndroidView, and its only dependency is the androidx.annotation jar that every Android app already has.

How do I add Androidplot to an Android project?

Add the Gradle dependency `implementation "com.androidplot:androidplot-core:1.6.0"`, published to Maven Central, then follow the Quickstart in the docs for your first plot on screen, or the full documentation for everything else.

Which chart types does Androidplot support?

Line, scatter, bar, pie, step, candlestick and bubble charts, with dynamic plots, pan and zoom, background thread rendering, large datasets with zoom-aware downsampling, value markers and shaded regions, and XML styling with custom renderers for anything the built-in types do not cover.

Does Androidplot work with Jetpack Compose?

It can be used from Jetpack Compose via AndroidView, which is the way to wrap a View-based library. The core library is written against the View and Canvas layer, which is also why it still supports Android 2.0.

Official sources

  1. halfhp/androidplot on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/halfhp-androidplot.svg)](https://hysenlabs.com/projects/halfhp-androidplot)

Was this useful?