hellocharts-android
Charts library for Android compatible with API 8+, several chart types with scaling, scrolling and animations 📊
Top Related Projects
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.
AnyChart Android Chart is an amazing data visualization library for easily creating interactive charts in Android apps. It runs on API 19+ (Android 4.4) and features dozens of built-in chart types.
Android Library to rapidly develop attractive and insightful charts in android applications.
Android Graph Library for creating zoomable and scrollable line and bar graphs.
Quick Overview
HelloCharts for Android is an open-source charting library that provides a wide range of chart types for Android applications. It offers a simple API for creating interactive and visually appealing charts, making it easy for developers to integrate data visualization into their Android apps.
Pros
- Easy to use with a simple and intuitive API
- Supports a variety of chart types, including line, bar, pie, and bubble charts
- Highly customizable with options for colors, styles, and animations
- Smooth animations and touch interactions for enhanced user experience
Cons
- Limited documentation and examples compared to some other charting libraries
- Not actively maintained, with the last update being several years ago
- May lack some advanced features found in more recent charting libraries
- Limited support for newer Android versions and features
Code Examples
- Creating a simple line chart:
LineChartView chart = findViewById(R.id.chart);
List<PointValue> values = new ArrayList<>();
values.add(new PointValue(0, 2));
values.add(new PointValue(1, 4));
values.add(new PointValue(2, 3));
values.add(new PointValue(3, 4));
Line line = new Line(values).setColor(Color.BLUE).setCubic(true);
List<Line> lines = new ArrayList<>();
lines.add(line);
LineChartData data = new LineChartData();
data.setLines(lines);
chart.setLineChartData(data);
- Creating a pie chart:
PieChartView chart = findViewById(R.id.chart);
List<SliceValue> values = new ArrayList<>();
values.add(new SliceValue(15, Color.BLUE));
values.add(new SliceValue(25, Color.GRAY));
values.add(new SliceValue(10, Color.RED));
values.add(new SliceValue(60, Color.MAGENTA));
PieChartData data = new PieChartData(values);
data.setHasLabels(true);
data.setHasCenterCircle(true);
chart.setPieChartData(data);
- Adding touch interactions to a column chart:
ColumnChartView chart = findViewById(R.id.chart);
// ... Set up chart data ...
chart.setOnValueTouchListener(new ColumnChartOnValueSelectListener() {
@Override
public void onValueSelected(int columnIndex, int subcolumnIndex, SubcolumnValue value) {
Toast.makeText(getActivity(), "Selected: " + value.getValue(), Toast.LENGTH_SHORT).show();
}
@Override
public void onValueDeselected() {
// Handle deselection
}
});
Getting Started
- Add the HelloCharts dependency to your app's
build.gradle
file:
dependencies {
implementation 'com.github.lecho:hellocharts-library:1.5.8@aar'
}
- Add a chart view to your layout XML:
<lecho.lib.hellocharts.view.LineChartView
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="200dp" />
- Initialize and configure the chart in your activity or fragment:
LineChartView chart = findViewById(R.id.chart);
List<PointValue> values = new ArrayList<>();
// Add data points...
Line line = new Line(values).setColor(Color.BLUE).setCubic(true);
LineChartData data = new LineChartData();
data.setLines(Collections.singletonList(line));
chart.setLineChartData(data);
Competitor Comparisons
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.
Pros of MPAndroidChart
- More extensive chart types and customization options
- Better performance with large datasets
- Active development and frequent updates
Cons of MPAndroidChart
- Steeper learning curve due to more complex API
- Larger library size, which may impact app size
Code Comparison
MPAndroidChart:
LineChart chart = findViewById(R.id.chart);
LineData data = new LineData(dataSets);
chart.setData(data);
chart.invalidate();
hellocharts-android:
LineChartView chart = findViewById(R.id.chart);
LineChartData data = new LineChartData(lines);
chart.setLineChartData(data);
Feature Comparison
MPAndroidChart offers a wider range of chart types, including candlestick and bubble charts, while hellocharts-android focuses on basic chart types. MPAndroidChart provides more advanced customization options for animations, gestures, and styling.
hellocharts-android has a simpler API, making it easier to get started for basic charting needs. It also has a smaller library size, which can be beneficial for apps with strict size constraints.
Community and Support
MPAndroidChart has a larger community and more frequent updates, which can lead to better long-term support and bug fixes. hellocharts-android has fewer contributors and less frequent updates, but still maintains a stable codebase.
Performance
MPAndroidChart generally performs better with large datasets, making it more suitable for apps that need to display extensive data points. hellocharts-android is efficient for smaller datasets but may struggle with very large amounts of data.
AnyChart Android Chart is an amazing data visualization library for easily creating interactive charts in Android apps. It runs on API 19+ (Android 4.4) and features dozens of built-in chart types.
Pros of AnyChart-Android
- More comprehensive and feature-rich charting library
- Supports a wider variety of chart types and customization options
- Regular updates and active development
Cons of AnyChart-Android
- Commercial product with licensing fees
- Larger file size and potentially higher resource usage
- Steeper learning curve due to more complex API
Code Comparison
hellocharts-android:
LineChartView chart = new LineChartView(context);
LineChartData data = new LineChartData();
List<PointValue> values = new ArrayList<PointValue>();
values.add(new PointValue(0, 2));
values.add(new PointValue(1, 4));
data.setLines(Arrays.asList(new Line(values)));
chart.setLineChartData(data);
AnyChart-Android:
AnyChartView anyChartView = findViewById(R.id.any_chart_view);
Cartesian cartesian = AnyChart.line();
List<DataEntry> data = new ArrayList<>();
data.add(new ValueDataEntry("A", 2));
data.add(new ValueDataEntry("B", 4));
cartesian.line(data);
anyChartView.setChart(cartesian);
Both libraries offer straightforward ways to create basic charts, but AnyChart-Android provides more advanced features and customization options at the cost of a more complex API and licensing fees. hellocharts-android is simpler and open-source but may lack some advanced features found in AnyChart-Android.
Android Library to rapidly develop attractive and insightful charts in android applications.
Pros of WilliamChart
- More modern and actively maintained (last update in 2023)
- Supports Kotlin and offers a more idiomatic API for Kotlin developers
- Provides smoother animations and transitions between chart states
Cons of WilliamChart
- Fewer chart types available compared to HelloCharts
- Less extensive documentation and examples
- Smaller community and fewer third-party resources
Code Comparison
WilliamChart:
val chart = LineChartView(context).apply {
gradientFillColors = intArrayOf(Color.WHITE, Color.BLUE)
animation.duration = 1000L
animate(lineSet)
}
HelloCharts:
LineChartView chart = new LineChartView(context);
LineChartData data = new LineChartData();
data.setLines(lines);
chart.setLineChartData(data);
chart.setZoomEnabled(true);
WilliamChart offers a more concise and Kotlin-friendly syntax, while HelloCharts provides a more traditional Java-style API. WilliamChart's code focuses on customization and animation, whereas HelloCharts emphasizes data setup and interaction features.
Android Graph Library for creating zoomable and scrollable line and bar graphs.
Pros of GraphView
- More extensive documentation and examples
- Supports a wider variety of graph types (line, bar, point, combined)
- Active development with frequent updates and bug fixes
Cons of GraphView
- Steeper learning curve due to more complex API
- Larger library size, which may impact app performance
- Less customizable styling options for graph elements
Code Comparison
HelloCharts:
LineChartData data = new LineChartData();
List<PointValue> values = new ArrayList<>();
values.add(new PointValue(0, 2));
values.add(new PointValue(1, 4));
data.setLines(Collections.singletonList(new Line(values)));
GraphView:
GraphView graph = findViewById(R.id.graph);
LineGraphSeries<DataPoint> series = new LineGraphSeries<>(new DataPoint[] {
new DataPoint(0, 1),
new DataPoint(1, 5)
});
graph.addSeries(series);
Both libraries offer similar functionality for creating basic charts, but GraphView requires more setup code for customization. HelloCharts provides a more concise API for simple use cases, while GraphView offers more flexibility for complex scenarios.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
HelloCharts for Android
Charting library for Android compatible with API 8+(Android 2.2). Works best when hardware acceleration is available, so API 14+(Android 4.0) is recommended. Apache License 2.0.
Features
- Line chart(cubic lines, filled lines, scattered points)
- Column chart(grouped, stacked, negative values)
- Pie chart
- Bubble chart
- Combo chart(columns/lines)
- Preview charts(for column chart and line chart)
- Zoom(pinch to zoom, double tap zoom), scroll and fling
- Custom and auto-generated axes(top, bottom, left, right, inside)
- Animations
Screens and Demos
- Code of a demo application is in
hellocharts-samples
directory, requires appcompat v21. - The demo app is also ready for download on Google Play.
- Short video is available on YouTube.
Download and Import
Android Studio/Gradle
- Maven Central/jCenter, add dependency to your
build.gradle
:
dependencies{
compile 'com.github.lecho:hellocharts-library:1.5.8@aar'
}
- JitPack.io, add
jitpack.io
repositiory and dependency to yourbuild.gradle
:
repositories {
maven {
url "https://jitpack.io"
}
}
dependencies {
compile 'com.github.lecho:hellocharts-android:v1.5.8'
}
Eclipse/ADT
- Download the latest release jar file.
- Copy
hellocharts-library-<version>.jar
into thelibs
folder of your application project.
Usage
Every chart view can be defined in layout xml file:
<lecho.lib.hellocharts.view.LineChartView
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
or created in code and added to layout later:
LineChartView chart = new LineChartView(context);
layout.addView(chart);
Use methods from *Chart classes to define chart behaviour, example methods:
Chart.setInteractive(boolean isInteractive);
Chart.setZoomType(ZoomType zoomType);
Chart.setContainerScrollEnabled(boolean isEnabled, ContainerScrollType type);
Use methods from data models to define how chart looks like, example methods:
ChartData.setAxisXBottom(Axis axisX);
ColumnChartData.setStacked(boolean isStacked);
Line.setStrokeWidth(int strokeWidthDp);
Every chart has its own method to set chart data and its own data model, example for line chart:
List<PointValue> values = new ArrayList<PointValue>();
values.add(new PointValue(0, 2));
values.add(new PointValue(1, 4));
values.add(new PointValue(2, 3));
values.add(new PointValue(3, 4));
//In most cased you can call data model methods in builder-pattern-like manner.
Line line = new Line(values).setColor(Color.BLUE).setCubic(true);
List<Line> lines = new ArrayList<Line>();
lines.add(line);
LineChartData data = new LineChartData();
data.setLines(lines);
LineChartView chart = new LineChartView(context);
chart.setLineChartData(data);
After the chart data has been set you can still modify its attributes but right after that you should call
set*ChartData()
method again to let chart recalculate and redraw data. There is also an option to use copy constructor for deep copy of
chart data. You can safely modify copy in other threads and pass it to set*ChartData()
method later.
Contributing
Yes:) If you found a bug, have an idea how to improve library or have a question, please create new issue or comment existing one. If you would like to contribute code fork the repository and send a pull request.
License
HelloCharts
Copyright 2014 Leszek Wach
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
HelloCharts library uses code from InteractiveChart sample available
on Android Developers page:
http://developer.android.com/training/gestures/scale.html
Top Related Projects
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.
AnyChart Android Chart is an amazing data visualization library for easily creating interactive charts in Android apps. It runs on API 19+ (Android 4.4) and features dozens of built-in chart types.
Android Library to rapidly develop attractive and insightful charts in android applications.
Android Graph Library for creating zoomable and scrollable line and bar graphs.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot