A powerful πŸš€ Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.

Overview

banner

Release API Android Arsenal Gitter Twitter

⚑ A powerful & easy to use chart library for Android ⚑

Charts is the iOS version of this library

Table of Contents

  1. Quick Start
    1. Gradle
    2. Maven
  2. Documentation
  3. Examples
  4. Questions
  5. Donate
  6. Social Media
  7. More Examples
  8. License
  9. Creators

Gradle Setup

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}

Maven Setup

<!-- <repositories> section of pom.xml -->
<repository>
    <id>jitpack.io</id>
   <url>https://jitpack.io</url>
</repository>

<!-- <dependencies> section of pom.xml -->
<dependency>
    <groupId>com.github.PhilJay</groupId>
    <artifactId>MPAndroidChart</artifactId>
    <version>v3.1.0</version>
</dependency>

Documentation πŸ“”

See the documentation for examples and general use of MPAndroidChart.

See the javadocs for more advanced documentation.


Examples πŸ‘€

Download the MPAndroidChart Example App or look at the source code.

ScreenShot


Questions & Issues πŸ€”

This repository's issue tracker is only for bugs and feature requests. The maintainers ask that you refrain from asking questions about how to use MPAndroidChart through the issue tracker.

Please read the documentation first, then ask all your questions on stackoverflow.com for the fastest answer.


Donations ❀️

This project needs you! If you would like to support this project's further development, the creator of this project or the continuous maintenance of this project, feel free to donate. Your donation is highly appreciated (and I love food, coffee and beer). Thank you!

PayPal

  • Donate 5 $: Thank's for creating this project, here's a coffee (or some beer) for you!
  • Donate 10 $: Wow, I am stunned. Let me take you to the movies!
  • Donate 15 $: I really appreciate your work, let's grab some lunch!
  • Donate 25 $: That's some awesome stuff you did right there, dinner is on me!
  • Or you can also choose what you want to donate, all donations are awesome!

Social Media πŸ”₯

If you like this library, please tell others about it πŸ’• πŸ’•

Share on Twitter Share on Google+ Share on Facebook

If you like, you can follow me on Twitter @PhilippJahoda.


More Examples πŸ‘


LineChart (with legend, simple design)

alt tag

LineChart (with legend, simple design)

alt tag

LineChart (cubic lines)

alt tag

LineChart (gradient fill)

alt tag

BarChart (with legend, simple design)

alt tag

BarChart (grouped DataSets)

alt tag

Horizontal-BarChart

alt tag

Combined-Chart (bar- and linechart in this case)

alt tag

PieChart (with selection, ...)

alt tag

ScatterChart (with squares, triangles, circles, ... and more)

alt tag

CandleStickChart (for financial data)

alt tag

BubbleChart (area covered by bubbles indicates the yValue)

alt tag

RadarChart (spider web chart)

alt tag


License πŸ“„

Copyright 2020 Philipp Jahoda

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.


Special Thanks ❀️

These people rock!

Comments
  • Support for x values (instead of x indices)

    Support for x values (instead of x indices)

    Thanks for your great library!

    We just found one major drawback. We like to draw a time series chart where the values are not equidistant. The x values where points are drawn must be at any position not just distributed equally by index. For example, the x axis represents the date and time (as in this blood pressure chart http://www.andreas-schreiber.net/activities/quantified-self/blood-pressure/).

    This applies to line chart and scatter chart.

    enhancement 
    opened by onyame 116
  • Date on X axis.

    Date on X axis.

    hi, i am using MPandroid chart in my app. i want to plot chart using values on y axis and date on x axis. I don't find any datetime axis in mp android chart. is there any way to plot x axis using date. i have values against date. i want to show the dates in (ddMMM-yy) format on x axis and the values on y axis. anyone can pass me the sample link for the same.

    sample for data: Date(X axis) Value(Y axis) 01/01/2001 966.78 01/02/2001 666.78 01/03/2001 966.78 01/04/2001 966.78 01/05/2001 966.78 01/06/2001 966.78 01/07/2001 966.78

    guide.

    opened by joshisunil-1983 73
  • how to display dynamic labels for XAxis

    how to display dynamic labels for XAxis

    I am using bar chart and i am unable to display dynamic xaxis labels on the chart, so far i have been able to show only one label for all bars using value formatter, please can anyone show me how to do it. It is a good library but still not sufficient documentation for noobs. currently i am using this code:

    XAxis xval = barChart.getXAxis();
            xval.setDrawLabels(true);
            xval.setValueFormatter(new AxisValueFormatter() {
                @Override
                public String getFormattedValue(float value, AxisBase axis) {
                    return  "Label";
                }
    
                @Override
                public int getDecimalDigits() {
                    return 0;
                }
            });
    
        xval.setPosition(XAxis.XAxisPosition.BOTTOM);
        xval.setDrawGridLines(false);
    
    opened by ghost 36
  • Entries disappearing while zooming ScatterChart

    Entries disappearing while zooming ScatterChart

    I'm using a ScatterChart with cca. 10k xVals, and about 200 Entries. When I zoom, all entries on the graph disappear except the ones on the far right. When I drag to the far right, they suddenly appear (regardless of the zoom amount).

    bug 
    opened by Paladinko 36
  • Unable to import library via Gradle

    Unable to import library via Gradle

    I'm trying to import library like said in Usage section in my Android project. I'm currently using Gradle, ofc.

    This is a piece of my build.gradle

    [...]
    repositories {
            maven { url 'http://repo1.maven.org/maven2' }
            maven { url 'https://jitpack.io' }
        }
    }
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
        compile 'com.android.support:design:23.1.1'
        compile 'com.github.PhilJay:MPAndroidChart:v2.2.0'
    }
    

    and this is the error I got: schermata 2016-01-29 alle 15 29 15

    I'm not new to importing new dependencies to my project and I really need to say that this is the first time I can't include a new dependency in this way....

    On the other side, including JAR library in lib folder does the trick.

    opened by Shadie6 31
  • Invalid index 0, size is 0 in lineChart

    Invalid index 0, size is 0 in lineChart

    in the first, I add an empty chart data ,then

    java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    11-09 19:34:42.397 E/AndroidRuntime( 5201): 	at             java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
    11-09 19:34:42.397 E/AndroidRuntime( 5201): 	at java.util.ArrayList.get(ArrayList.java:308)
    11-09 19:34:42.397 E/AndroidRuntime( 5201): 	at com.github.mikephil.charting.data.DataSet.getEntryForIndex(DataSet.java:286)
    11-09 19:34:42.397 E/AndroidRuntime( 5201): 	at com.github.mikephil.charting.utils.Transformer.generateTransformedValuesLine(Transformer.java:184)
    11-09 19:34:42.397 E/AndroidRuntime( 5201): 	at com.github.mikephil.charting.renderer.LineChartRenderer.drawValues(LineChartRenderer.java:545)
    11-09 19:34:42.397 E/AndroidRuntime( 5201): 	at com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:251)
    

    I think it is because of you dont check size when you draw values

    opened by madroidmaq 29
  • I get a negative NegativeArraySizeException at generateTransformedValuesScatter

    I get a negative NegativeArraySizeException at generateTransformedValuesScatter

    This is the data I pass along:

    DataSet, label: Equities, entries: 22
    Entry, x: 2.4622053E-4 y (sum): -2.5103273E-4 Entry, x: 1.4264166E-4 y (sum): 1.06562635E-4 Entry, x: 1.0069651E-4 y (sum): 2.2954303E-4 Entry, x: 3.3205854E-6 y (sum): 6.520928E-5 Entry, x: 2.1512537E-4 y (sum): -1.926993E-4 Entry, x: 1.4847405E-4 y (sum): -1.5883509E-4 Entry, x: 2.8459038E-4 y (sum): 1.1068245E-4 Entry, x: 1.3150444E-4 y (sum): 1.4332784E-4 Entry, x: 7.719888E-5 y (sum): 1.6962597E-4 Entry, x: 1.3707434E-4 y (sum): 1.7498349E-4 Entry, x: 2.5035875E-4 y (sum): 3.8239497E-4 Entry, x: 1.0254524E-4 y (sum): 1.468406E-4 Entry, x: 1.5425305E-4 y (sum): 4.278698E-5 Entry, x: 1.2035284E-4 y (sum): 3.2309844E-4 Entry, x: 8.58292E-5 y (sum): 4.6827746E-4 Entry, x: 8.473067E-5 y (sum): 4.3495893E-4 Entry, x: 3.0464705E-4 y (sum): -2.1406553E-4 Entry, x: 2.2885398E-4 y (sum): -1.1195301E-4 Entry, x: 1.5392534E-4 y (sum): 4.011409E-5 Entry, x: 2.240534E-4 y (sum): 1.1159029E-5 Entry, x: 2.7432045E-4 y (sum): -1.8261799E-5 Entry, x: 4.9744867E-5 y (sum): -1.1376083E-4 
    

    And I get a NegativeArraySizeException:

    java.lang.NegativeArraySizeException: -10
                                                                                            at com.github.mikephil.charting.utils.Transformer.generateTransformedValuesScatter(Transformer.java:110)
                                                                                            at com.github.mikephil.charting.renderer.ScatterChartRenderer.drawValues(ScatterChartRenderer.java:106)
                                                                                            at com.github.mikephil.charting.renderer.CombinedChartRenderer.drawValues(CombinedChartRenderer.java:95)
                                                                                            at com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:272)
                                                                                            at android.view.View.draw(View.java:15231)
    
    
        public float[] generateTransformedValuesScatter(IScatterDataSet data, float phaseX,
                                                        float phaseY, int from, int to) {
    
            /// ------- interestingly i get a 17 for the from and an 11 for the to which is n fact negative.
            final int count = (int) ((to - from) * phaseX + 1) * 2;
    
            if(valuePointsForGenerateTransformedValuesScatter.length != count){
                valuePointsForGenerateTransformedValuesScatter = new float[count];
            }
            float[] valuePoints = valuePointsForGenerateTransformedValuesScatter;
    
            for (int j = 0; j < count; j += 2) {
    
                Entry e = data.getEntryForIndex(j / 2 + from);
    
                if (e != null) {
                    valuePoints[j] = e.getX();
                    valuePoints[j + 1] = e.getY() * phaseY;
                }else{
                    valuePoints[j] = 0;
                    valuePoints[j + 1] = 0;
                }
            }
    
            getValueToPixelMatrix().mapPoints(valuePoints);
    
            return valuePoints;
        }
    
    

    I use the current/newest version from maven.

    opened by KIC 27
  • Fill LineChart sometimes not working

    Fill LineChart sometimes not working

    With last version 2.0.8 sometimes the chart is not filled. When I revert back to 2.0.7 it works again.

    set1.setDrawFilled(true); set1.setFillColor(getResources().getColor(R.color.red_down)); mChart.setData(data) mChart.invalidate();

    regards

    opened by warmax 27
  • How to add this library to my project?

    How to add this library to my project?

    Hey ,PhilJay. I want to develop an application with a chart functionality. So I found MPAndroidChart on github, I really like this project. But because I'm just starting out with github, so I do not know how to apply some of the features of this project to my application. I would be very appreciate if you could tell me the the way to apply it to my application!

    opened by sparrowjack 26
  • How to hide labels of pie part if its value is 0

    How to hide labels of pie part if its value is 0

    I want to hide labels in some parts of pie chart when its value is 0, because I don't want to see these labels is stacked as picture bellow bug How do I fix it???

    opened by hongsonitptit 22
  • v.3.0.0-beta1 BarChart: ArrayIndexOutOfBoundsException when formatter applied, granularity is enabled and there's only one data point

    v.3.0.0-beta1 BarChart: ArrayIndexOutOfBoundsException when formatter applied, granularity is enabled and there's only one data point

    Hi, I've faced an ArrayIndexOutOfBoundsException under following conditions:

    • AxisValueFormatter is applied to x axis, where formatted value is an item of a list;
    • granularity is enabled for x axis;
    • the data consists of only one value.

    Here's the stacktrace:

    java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
    at java.util.ArrayList.get(ArrayList.java:310)
    at com.example.asuprun.tempconverter.AnotherActivity$1.getFormattedValue(AnotherActivity.java:65)
    at com.github.mikephil.charting.components.AxisBase.getFormattedLabel(AxisBase.java:451)
    at com.github.mikephil.charting.components.AxisBase.getLongestLabel(AxisBase.java:437)
    at com.github.mikephil.charting.renderer.XAxisRenderer.computeSize(XAxisRenderer.java:78)
    at com.github.mikephil.charting.renderer.XAxisRenderer.computeAxisValues(XAxisRenderer.java:73)
    at com.github.mikephil.charting.renderer.XAxisRenderer.computeAxis(XAxisRenderer.java:66)
    at com.github.mikephil.charting.charts.BarLineChartBase.notifyDataSetChanged(BarLineChartBase.java:339)
    at com.github.mikephil.charting.charts.Chart.setData(Chart.java:318)
    at com.example.asuprun.tempconverter.AnotherActivity.plotData(AnotherActivity.java:88)
    at com.example.asuprun.tempconverter.AnotherActivity.toggleData(AnotherActivity.java:98)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)
    at android.view.View.performClick(View.java:4780)
    at android.view.View$PerformClick.run(View.java:19866)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
    

    Simplified code:

    public class AnotherActivity extends AppCompatActivity {
        private ViewGroup chartView;
        private Map<String, Integer> data;
        private BarChart chart;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.chart_layout);
    
            chartView = (ViewGroup) findViewById(R.id.chart_view);
            chart = new BarChart(this);
            data = new LinkedHashMap<>();
            data.put("6/15", 36);
            data.put("8/15", 23);
            chartView.addView(chart);
            plotData();
        }
    
        private void plotData() {
            chart.clear();
            final ArrayList<String> xVals = new ArrayList<>();
            ArrayList<BarEntry> yVals = new ArrayList<>();
    
            for (Map.Entry<String, Integer> entry : data.entrySet()) {
                yVals.add(new BarEntry(xVals.size(), entry.getValue()));
                xVals.add(entry.getKey());
            }
    
            XAxis xAxis = chart.getXAxis();
            xAxis.setDrawGridLines(false);
            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
            xAxis.setGranularityEnabled(true);
            xAxis.setValueFormatter(new AxisValueFormatter() {
                                        @Override
                                        public String getFormattedValue(float value, AxisBase axis) {
                                            try {
                                                return xVals.get((int) value);
                                            } catch (IndexOutOfBoundsException e) {
                                                e.printStackTrace();
                                                return "stub";
                                            }
                                        }
    
                                        @Override
                                        public int getDecimalDigits() {
                                            return 0;
                                        }
                                    }
            );
    
            chart.getAxisRight().setEnabled(false);
            YAxis axisLeft = chart.getAxisLeft();
            axisLeft.setAxisMinValue(0f);
            axisLeft.setGranularityEnabled(true);
            axisLeft.setGranularity(1f);
    
            BarDataSet dataSet = new BarDataSet(yVals, "Data");
            BarData barData = new BarData(dataSet);
            barData.setBarWidth(0.7f);
            chart.setData(barData);
            chart.invalidate();
        }
    
        public void toggleData(View view) {
            if (data.size() > 1) {
                data.remove("8/15");
            } else {
                data.put("8/15", 23);
            }
            plotData();
        }
    }
    
    opened by antohama 21
  • Fix scatter shape size bug

    Fix scatter shape size bug

    Scatter shape sizes were not converted from dp to pixels in the shape renderers so they were drawn at inconsistent size on different density screens.

    PR Checklist:

    • [x] I have tested this extensively and it does not break any existing behavior.
    • [x] I have added/updated examples and tests for any new behavior.
    • [x] If this is a significant change, an issue has already been created where the problem / solution was discussed: [issue link]

    PR Description

    Scatter shape size was treated as pixels instead of dp. This is a bug and leads to inconsistent appearance on different density screens. This is also inconsistent with other places (e.g. scatter hole size or line chart marker size) where values were properly treated as dp.

    This change fixes the scatter shape renderers so they scale the user-specified size from dp to pixels before drawing the marker.

    Using pixels in just one place is a bug. This may cause existing chart markers to change size - and users who were pre-scaling this one dimension by density manually will have to remove that.

    opened by tgvoskuilen 0
  • Scatter shape size treated as pixels, not dp

    Scatter shape size treated as pixels, not dp

    Summary The value passed to setScatterShapeSize on ScatterDataSet is not converted from dp to pixels in the shape renderers (e.g. CircleShapeRenderer) so the value is treated as a size in pixels, not dp. The scatter shape hole size, however, is correctly converted from dp to pixels. This is present in all the scatter shape renderers.

    Expected Behavior All sizes are in dp (as indicated in comments and documentation).

    Possible Solution Convert value from dp to pixels in the scatter shape renderers. e.g. change

    final float shapeSize = dataSet.getScatterShapeSize();
    

    to

    final float shapeSize = Utils.convertDpToPixel(dataSet.getScatterShapeSize());
    

    in all the renderers.

    Device (please complete the following information):

    • Library Version 3.1.0

    Additional Context I will submit a PR for this

    opened by tgvoskuilen 0
  • Feedback

    Feedback

    STOP RIGHT THERE!

    Issues are NOT for getting help, only for reporting bugs and feature requests.

    Search open and closed issues to see if your question already has an answer. However, do not create a new issue.

    Instead, do the following:

    1. Download the Example App and check out the source code. 90% of the time there is an example that does exactly what you are trying to do.

    2. Look at the Wiki for the official documentation for MPAndroidChart. You can also browse the javadoc for a more detailed tutorial of the API.

    3. Go to StackOverflow and ask your questions there. The community will be much more helpful and willing to offer guidance.

    You have been warned!

    From now on, any issues asking for help will get closed with a link to this file.

    Additional Context

    ADD A REWARD using Speed to SOLVE this issue QUICKLY and SUPPORT this project.

    opened by Penetreitor10 0
  • jitpack.io is down

    jitpack.io is down

    * What went wrong:
    9 actionable tasks: 9 executed
    Execution failed for task ':mergeGoogleBetaNativeLibs'.
    > Could not resolve all files for configuration ':googleBetaRuntimeClasspath'.
       > Could not resolve com.github.devnullorthrow:MPAndroidChart:3.2.0-alpha.
         Required by:
             project :
          > Could not resolve com.github.devnullorthrow:MPAndroidChart:3.2.0-alpha.
             > Could not get resource 'https://www.jitpack.io/com/github/devnullorthrow/MPAndroidChart/3.2.0-alpha/MPAndroidChart-3.2.0-alpha.pom'.
                > Could not GET 'https://www.jitpack.io/com/github/devnullorthrow/MPAndroidChart/3.2.0-alpha/MPAndroidChart-3.2.0-alpha.pom'. Received status code 521 from server: 
    

    Please relocate to another hosting...

    screenshot
    opened by rtsisyk 7
  • I want a pie chart that has lines instead of having the labels inside of the slices

    I want a pie chart that has lines instead of having the labels inside of the slices

    I made a pie chart using MP Chart. The values are inside of the pie pieces, but I want to have lines pointing to each piece of the pie indicating the value. Here is the code that I used to build my pie chart.

    The issue I'm having is that there isn't a ton of stuff online about MP Chart and a lot of the stuff that is online is in Java. My code is in Kotlin. Trying to find something in Kotlin. Beginner to developing.

    Image of my current Pie Chart What I want my pie chart to look like

    //***Start Pie Chart Code***//
        val pieChart = binding.pieChart
        // on below line we are setting user percent value,
        // setting description as enabled and offset for pie chart
        pieChart.setUsePercentValues(false)
        pieChart.getDescription().setEnabled(false)
        pieChart.setExtraOffsets(5f, 10f, 5f, 5f)
        // on below line we are setting drag for our pie chart
        pieChart.setDragDecelerationFrictionCoef(0.95f)
        // on below line we are setting hole
        // and hole color for pie chart
        pieChart.setDrawHoleEnabled(true)
        pieChart.setHoleColor(Color.WHITE)
        // on below line we are setting circle color and alpha
        pieChart.setTransparentCircleColor(Color.WHITE)
        pieChart.setTransparentCircleAlpha(110)
        // on  below line we are setting hole radius
        pieChart.setHoleRadius(20f)
        pieChart.setTransparentCircleRadius(5f)
        // on below line we are setting center text
        pieChart.setDrawCenterText(true)
        // on below line we are setting
        // rotation for our pie chart
        pieChart.setRotationAngle(0f)
        // enable rotation of the pieChart by touch
        pieChart.setRotationEnabled(true)
        pieChart.setHighlightPerTapEnabled(true)
        // on below line we are setting animation for our pie chart
        pieChart.animateY(1400, Easing.EaseInOutQuad)
        // on below line we are disabling our legend for pie chart
        pieChart.legend.isEnabled = false
        pieChart.setEntryLabelColor(Color.WHITE)
        pieChart.setEntryLabelTextSize(12f)
    
        // on below line we are creating array list and
        // adding data to it to display in pie chart
        val entries: ArrayList<PieEntry> = ArrayList()
    
        entries.add(PieEntry(proteinFloat,"g"))
        entries.add(PieEntry(carbFloat,"g"))
        entries.add(PieEntry(fatFloat,"g"))
    
        // on below line we are setting pie data set
        val dataSet = PieDataSet(entries, "Mobile OS")
    
        // on below line we are setting icons.
        dataSet.setDrawIcons(false)
    
        // on below line we are setting slice for pie
        dataSet.sliceSpace = 3f
        dataSet.iconsOffset = MPPointF(0f, 40f)
        dataSet.selectionShift = 5f
    
        // add a lot of colors to list
        val colors: ArrayList<Int> = ArrayList()
        colors.add(resources.getColor(R.color.purple_200))
        colors.add(resources.getColor(R.color.blue))
        colors.add(resources.getColor(R.color.red))
    
        // on below line we are setting colors.
        dataSet.colors = colors
    
        // on below line we are setting pie data set
        val data = PieData(dataSet)
        data.setValueFormatter(PercentFormatter())
        data.setValueTextSize(15f)
        data.setValueTypeface(Typeface.DEFAULT_BOLD)
        data.setValueTextColor(Color.WHITE)
        pieChart.setData(data)
    
        // undo all highlights
        pieChart.highlightValues(null)
    
        // loading chart
        pieChart.invalidate()
        //***End Pie Chart Code***//
    
    opened by bdupey 0
Releases(v3.1.0)
  • v3.1.0(Mar 20, 2019)

    About

    This mostly includes bug fixes, but with a few notable differences. The biggest change is bumping MPAndroidChart's minSdkVersion to 14. If you have a lower version, you should stop supporting it and go up to 14 as well.

    Please see the current distribution usages, as less than 1% of Android devices are running versions 15 and lower now.

    Breaking Changes

    • minSdkVersion has been bumped to 14, read the above.
    • Easing class has been simplified, old methods of getting easing functions are DEPRECATED (35c9fc937ecda0dd2eb1a7b879aa869a48bfad3d)
    • Chart.saveToGallery(name, quality) now saves as a PNG instead of JPG (d67ea48)

    Additions

    • Upgraded project to androidX, maven upgraded to 2.1, gradle upgraded to 4.6, android gradle to 3.2.1, android build tools to 28.0.3
    • Example project has been refreshed (d67ea481af1e8528c617dfd404d0c7827b0134b2, 5030b36c86cfa2d076bb6b86fa8fcb37ce58557f)
    • Grid lines can be drawn behind or infront of data (c97b8d531d5584b767d0587805c1c95018cf92d6)
    • Can use pie slice color for value line color (1e6e58d2c026be332d6756b04d85b33cd3d36c2b)
    • BarChart supports gradient colored bars (e4ba3cdc20555b5f7cd793e614ee13406a7605ec)

    Fixes

    • Zoom animations fixed (6c54f0b0a91ca87fe39dd63d9095e4f55d6c59ff)
    • Many rendering bugs fixed (43ae497ecf7427587687945496c6a70e65f01fcb, aee6058dbb74f4eb1aae8e88c7562d28a91e1e1c, 92c14db5b4de4efd43c9fd74361886b92111ca9f, 89436221db3d83991f9ecd830f871d4ce7da47a4)
    • Copying data sets fixed (7abc9cd6696f78c77068ffc278793594b33497fe)
    Source code(tar.gz)
    Source code(zip)
  • v3.1.0-alpha(Oct 29, 2018)

    Pre-Release Disclaimer

    This is a pre-release, which means it's not fully tested. However, many bugs have still been fixed and I highly recommend that you update anyway to get those latest changes. Please open an issue if you are still running into issues with this release so they can be patched up for the final 3.1 release!

    About

    This mostly includes bug fixes, but with a few notable differences. The biggest change is bumping MPAndroidChart's minSdkVersion to 14. If you have a lower version, you should stop supporting it and go up to 14 as well.

    Please see the current distribution usages, as less than 1% of Android devices are running versions 15 and lower now.

    Breaking Changes

    • minSdkVersion has been bumped to 14, read the above.
    • Easing class has been simplified, old methods of getting easing functions are DEPRECATED (35c9fc937ecda0dd2eb1a7b879aa869a48bfad3d)
    • Chart.saveToGallery(name, quality) now saves as a PNG instead of JPG (d67ea48)

    Additions

    • Upgraded project to androidX, maven upgraded to 2.1, gradle upgraded to 4.6, android gradle to 3.2.1, android build tools to 28.0.3
    • Example project has been refreshed (d67ea481af1e8528c617dfd404d0c7827b0134b2, 5030b36c86cfa2d076bb6b86fa8fcb37ce58557f)
    • Grid lines can be drawn behind or infront of data (c97b8d531d5584b767d0587805c1c95018cf92d6)
    • Can use pie slice color for value line color (1e6e58d2c026be332d6756b04d85b33cd3d36c2b)
    • BarChart supports gradient colored bars (e4ba3cdc20555b5f7cd793e614ee13406a7605ec)

    Fixes

    • Zoom animations fixed (6c54f0b0a91ca87fe39dd63d9095e4f55d6c59ff)
    • Many rendering bugs fixed (43ae497ecf7427587687945496c6a70e65f01fcb, aee6058dbb74f4eb1aae8e88c7562d28a91e1e1c, 92c14db5b4de4efd43c9fd74361886b92111ca9f, 89436221db3d83991f9ecd830f871d4ce7da47a4)
    • Copying data sets fixed (7abc9cd6696f78c77068ffc278793594b33497fe)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.3(Nov 29, 2017)

  • v3.0.2(Mar 23, 2017)

  • v3.0.1(Nov 17, 2016)

  • v3.0.0(Oct 19, 2016)

    This is a major release, with a few breaking changes. So please pay attention.

    Updates:

    • The Integer x-index is dead. Intoducing: x-values (float). Each entry now has an x and a y.
    • Pie/radar charts do not have a concept of X index anymore
    • Unified XAxis/YAxis features and experience.
    • Unified formatter interfaces for axes.
    • Major refactoring of the Highlight mechanism.
    • Refactored marker mechanism
    • Refactored legend entry mechanism
    • Each dataset can now set its own legend form/size/etc.
    • More demos
    • Many minor bug fixes and improvements

    Breaking changes / how to migrate:

    • All dataset constructors have changed - they do not take an array of x-indices anymore.
    • All entry constructors have changed - they take in an X and a Y.
    • Pie and Radar chart entries now have their own classes. So exchange the Entry classes withPieEntry/RadarEntry
    • If you have any old startAtZeroEnabled calls - these have been deprecated for a long time. Replace them with axisMinimum.
    • In general, all functions that accepted x-indices before, now accept an x-value, so you might have to adjust the names a little bit.
    • Where OnChartValueSelectedListener is implemented, update the onValueSelected interface
    • Replace drawSliceTextEnabled with drawEntryLabelsEnabled
    • If you have a custom scatter shape - implement an IShapeRenderer, and put your rendering code in there
    • If you have a custom marker - consider subclassing MarkerView/MarkerImage or implementing IMarker. There are more options than before now...
    • If you have used barSpace before, move to using barWidth
    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-beta1(Jul 2, 2016)

  • v3.0.0-beta(Jul 1, 2016)

    • Elimination of the "x-index" concept (each Entry now has a float x- and y-coordinate)
    • Change of the Entry constructor from Entry(float y, int xIndex) to Entry(float x, float y)
    • XAxis and YAxis concept is now similar (XAxis no longer represented by Strings)
    • Separation of the Realm.io support to a separate repository
    • Bugfixes and stability improvement
    • Many more...

    Currently, the documentation is not up to date and still refers to versions prior to 3.0 - please have a look a the example project to figure out how the new API works. An update of the docs will follow soon.

    Please also note that this is a "beta" release that might contain bugs that require fixing. A stable release 3.0 will be out within the next few weeks. If you are certain that you discovered a new issue with this new version, please let me know.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.5(May 27, 2016)

    • New: Horizontal cubic bezier lines for Line chart (through mode property)
    • New: Allow transparent color in circle hole color (Line chart)
    • New: circleHoleRadius property for more control over line chart circles
    • New: PieChart values outside of chart (connected with lines)
    • New: highlightFullBar for highlighting all values on an x-index at once
    • New: Allow setting xVals on existing Data objects
    • New: Allow bubble sizes to not be normalized against the dataset max
    • New: Added material color template
    • New: Flag to control whether we draw a limit line's labels
    • New: Exploded the Legend-Position enum to support more combinations
    • New: Allow drawing borders for bars in a Bar chart
    • Improved: Highlighting when multiple values on x-index present (bubble chart, combined chart)
    • Fixed: We are now taking into account the extra offsets for Pie/Radar chart view
    • Fixes regarding MarkerView
    • Improvements to Demo, now keeping dataset styling when changin dataset size
    • General bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v2.2.4(Mar 31, 2016)

  • v2.2.3(Feb 28, 2016)

  • v2.2.2(Feb 10, 2016)

    • Support for setting different colors for value-text
    • Realm.io support related bugfixes
    • Introducing a zero-line, which can be configured separately from the grid lines of the YAxis
    • Minor other bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Jan 18, 2016)

    • Plotting data directly from Realm.io mobile data base
    • Realm.io tutorial
    • Introducing DataSet interfaces (e.g. ILineDataSet) for creating custom DataSets
    • Bugfixing in HorizontalBarChart
    • Bugfixing concerning stacked-bars
    • Rotated XAxis labels fixes
    • General bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v2.1.6(Nov 2, 2015)

  • v2.1.5(Oct 11, 2015)

  • v2.1.4(Sep 20, 2015)

    • PieChart and HorizontalBarChart now support MarkerView
    • Dashed highlight-lines now possible
    • Introducing FillFormatter for individual LineDataSets
    • Introducing XAxisValueFormatter for custom XAxis label formatting
    • Introducing YAxisValueFormatter for custom YAxis label formatting
    • Formatter package name changed (from utils to formatter)
    • Documentation wiki improvements
    • General improvements
    • General bugfixes
    Source code(tar.gz)
    Source code(zip)
    mpandroidchartlibrary-2-1-4.jar(497.55 KB)
  • v2.1.3(Jul 31, 2015)

  • v2.1.2(Jul 24, 2015)

  • v2.1.1(Jul 20, 2015)

  • v2.1.0(May 5, 2015)

  • v2.0.9(Apr 7, 2015)

  • v2.0.8(Mar 13, 2015)

  • v2.0.7(Mar 1, 2015)

  • v2.0.2(Feb 28, 2015)

  • v2.0.1(Feb 27, 2015)

  • v2.0.0(Feb 21, 2015)

    What's new:

    • Dual YAxis (you can now choose which axis you want your DataSet to plot against, either LEFT or RIGHT)
    • CombinedChart (bar-, line-, scatter- and candle-data can now be displayed together in one chart)
    • Removed nineoldandroids-library
    • and many more...

    Not working yet:

    • HorizontalBarChart
    • Grouped BarChart highlighting
    • CombinedChart highlighting
    • lot's of other stuff :-)

    The ReadMe.md documentation is currently outdated. Please refer to the example-project.

    Please note that this is only a pre-release and absolutely not bug free and feature complete. Let me know what you think and inform me about bugs / issues.

    Source code(tar.gz)
    Source code(zip)
    mpchartlibrary-2-0-0-beta.jar(1.10 MB)
  • v1.7.4(Nov 18, 2014)

  • v1.7.3(Oct 30, 2014)

  • v1.7.2(Oct 22, 2014)

  • v1.7.1(Oct 17, 2014)

Owner
Philipp Jahoda
Passionate developer. Startup guy. Tech lover.
Philipp Jahoda
SwiftUI library to easily render diagrams given a tree of objects. Similar to ring chart, sunburst chart, multilevel pie chart.

Swift Sunburst Diagram Sunburst diagram is a library written with SwiftUI to easily render diagrams given a tree of objects. Similar to ring chart, su

Ludovic Landry 494 Dec 19, 2022
candlestick chart for ios

###Licenses (The MIT License) Copyright Β©2012 zhiyu zheng all rights reserved. Permission is hereby granted, free of charge, to any person obtaining a

ZhiYu 962 Oct 17, 2022
Easy to use and highly customizable pie charts library for iOS

PieCharts Easy to use and highly customizable pie charts library for iOS Swift 4.2, iOS 8+ Video Features: Customizable slices Add overlays using simp

null 503 Dec 6, 2022
Easy to use and highly customizable pie charts library for iOS

PieCharts Easy to use and highly customizable pie charts library for iOS Swift 4.2, iOS 8+ Video Features: Customizable slices Add overlays using simp

null 503 Dec 6, 2022
Easy to use Spider (Radar) Chart library for iOS written in Swift.

DDSpiderChart Easy to use Spider (Radar) Chart library for iOS written in Swift. Requirements iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+ Xcode

Deniz Adalar 82 Nov 14, 2022
A simple and animated Pie Chart for your iOS app.

XYPieChart XYPieChart is an simple and easy-to-use pie chart for iOS app. It started from a Potion Project which needs an animated pie graph without i

XY Feng 1.7k Sep 6, 2022
This is pie chart that is very easy to use and customizable design.

CSPieChart Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements Installation CSPieCh

iOSCS 40 Nov 29, 2022
A simple pie chart for iOS.

EGPieChart Installation EGPieChart is available through CocoaPods. To install it, simply add the following line to your Podfile: pod 'EGPieChart' manu

Ethan Guan 3 Nov 29, 2021
TKRadarChart - A customizable radar chart in Swift

TKRadarChart A customizable radar chart in Swift Requirements iOS 8.0+ Xcode 9.0 Swift 4.0 Installation CocoaPods You can use CocoaPods to install TKR

TBXark 203 Dec 28, 2022
an iOS open source Radar Chart implementation

JYRadarChart an open source iOS Radar Chart implementation ##Screenshots Requirements Xcode 5 or higher iOS 5.0 or higher ARC CoreGraphics.framework D

Johnny Wu 416 Dec 31, 2022
Dr-Charts Easy to use, customizable and interactive charts library for iOS in Objective-C

dr-charts Easy to use, customizable and interactive charts library for iOS in Objective-C Features: Multiple chart types Line / Multiple lines / Lines

Zomato 93 Oct 10, 2022
An overview of the different types of charts you can make with Swift Charts

Swift Charts Examples This repo aims to provide sample code for lots of different chart types for you to use as inspiration for your own projects. We

Jordi Bruin 1.2k Dec 30, 2022
Core Charts | Basic Scrollable Chart Library for iOS

Core Charts | Basic Chart Library for iOS HCoreBarChart VCoreBarChart Requirements Installation Usage Appearance Customization Getting Started You nee

Γ‡ağrΔ± Γ‡OLAK 71 Nov 17, 2022
iOS/iPhone/iPad Chart, Graph. Event handling and animation supported.

#EChart A highly extendable, easy to use chart with event handling, animation supported. ##Test How To Use Download and run the EChartDemo project is

Scott Zhu 646 Dec 27, 2022
Using Swift Charts and Voiceover Chart Descriptor to compose music. 🀯

Chart de lune ?? Using Swift Charts and Voiceover Chart Descriptor to compose music. ?? Image source: https://hadikarimi.com/portfolio/claude-debussy-

An Trinh 31 Nov 21, 2022
Simple iOS Application built using UIKit displaying the list of Cryptocurrencies and a detailed screen with a line graph.

CryptoViewer Simple iOS Application built using UIKit displaying the list of Cryptocurrencies and a detailed screen with a line graph. Home Screen: Di

null 0 Jun 14, 2022
MSBBarChart is an easy to use bar chart library for iOS

MSBBarChart MSBBarChart is an easy to use bar chart library for iOS. Usage if you want to hide label above bar barChart.setOptions([.isHiddenLabelAbov

misyobun 45 May 3, 2022
FSLineChart A line chart library for iOS.

FSLineChart A line chart library for iOS. Screenshots Installing FSLineChart Add the contents of the FSLineChart project to your directory or simply a

Arthur 856 Nov 24, 2022
Line Chart library for iOS written in Swift

Swift LineChart Usage var lineChart = LineChart() lineChart.addLine([3, 4, 9, 11, 13, 15]) Features Super simple Highly customizable Auto scaling Touc

Mirco Zeiss 601 Nov 15, 2022