← Back to list

Graphs in Android Apps

USING MPANDROIDCHART LIBRARY

Anant Raman in The Startup · 2019-11-10 11:44 · 71 claps · 2.0 min read
#android #graph #mpandroidchart #android-chart #androidgraph
Open on Medium ↗
Wiki topics: 📚 · Books & Reading

Graphs in Android Apps

USING MPANDROIDCHART LIBRARY

MPAndroid chart is a free Library by Philipp Jahoda (PhilJay). It is an easy to use library, designed for Android platform. It provides us the following options for the charts :

Bar Chart Bar Chart with base Bubble Chart Candlestick Chart Horizontal Bar Chart Line Chart Pie Chart Radar Chart Pie radar Chart base Scatter Chart Combined Chart

Gradle Setup: Add the following dependencies inbuild.gradle project level


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

Add the following dependencies in build.gradle app level :

 implementation ‘com.github.PhilJay:MPAndroidChart:v3.0.3’

For Horizontal Bar Chart :

Now let’s create activity_main.xmlfor the chart to be displayed :

<com.github.mikephil.charting.charts.HorizontalBarChart
    android:id="@+id/id_horizontal_barchart"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/dp_20">
</com.github.mikephil.charting.charts.HorizontalBarChart>

The function in java class to inflate the horizontal bar chart :

public static void barchart(BarChart barChart, ArrayList<BarEntry> arrayList, final ArrayList<String> xAxisValues) {
    barChart.setDrawBarShadow(false);
    barChart.setFitBars(true);
    barChart.setDrawValueAboveBar(true);
    barChart.setMaxVisibleValueCount(25);
    barChart.setPinchZoom(true);

    barChart.setDrawGridBackground(true);
    BarDataSet barDataSet = new BarDataSet(arrayList, "Values");
    barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
    BarData barData = new BarData(barDataSet);
    barData.setBarWidth(0.9f);
    barData.setValueTextSize(0f);

    barChart.setBackgroundColor(Color.TRANSPARENT); //set whatever color you prefer
    barChart.setDrawGridBackground(false);

    Legend l = barChart.getLegend(); // Customize the ledgends 
    l.setTextSize(10f);
    l.setFormSize(10f);
//To set components of x axis
    XAxis xAxis = barChart.getXAxis();
    xAxis.setTextSize(13f);
    xAxis.setPosition(XAxis.XAxisPosition.TOP_INSIDE);
    xAxis.setValueFormatter(new   IndexAxisValueFormatter(xAxisValues));
    xAxis.setDrawGridLines(false);

    barChart.setData(barData);

}

Calling the above function to create the chart :

We need to create the list of type BarEntry (consisting of positions and values), a BarChart and an optional list of titles on X axis.

private HorizontalBarChart mBarChart;
mBarChart = findViewById(R.id.id_horizontal_barchart);
// PREPARING THE ARRAY LIST OF BAR ENTRIES
ArrayList<BarEntry> barEntries = new ArrayList<>();
barEntries.add(new BarEntry(1f, VALUES_TO_BE_ADDED)));
barEntries.add(new BarEntry(2f, VALUES_TO_BE_ADDED)));
barEntries.add(new BarEntry(3f, VALUES_TO_BE_ADDED)));
barEntries.add(new BarEntry(4f, VALUES_TO_BE_ADDED)));
}
// TO ADD THE VALUES IN X-AXIS
ArrayList<String> xAxisName = new ArrayList<>()'
xAxisName.add("Name 1");
xAxisName.add("Name 2");
xAxisName.add("Name 3");
xAxisName.add("Name 4");
barchart(mBarChart,barEntries,xAxisName);

For Pie Chart :

Let’s create activity_main.xmlfor the chart to be displayed

<com.github.mikephil.charting.charts.PieChart
    android:id="@+id/pie_chart"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</com.github.mikephil.charting.charts.PieChart>

The function in java class to inflate the Pie chart :

public static void piechart(PieChart piechart, ArrayList<PieEntry> arrayList) {
    piechart.setUsePercentValues(true);
    piechart.getDescription().setEnabled(false);
    piechart.setExtraOffsets(2, 5, 2, 2);
    piechart.setDragDecelerationFrictionCoef(0.95f);
    piechart.setDrawHoleEnabled(true);
    piechart.setHoleColor(Color.WHITE);
    piechart.setTransparentCircleRadius(61f);
    PieDataSet pieDataSet = new PieDataSet(arrayList, " ");
    pieDataSet.setSliceSpace(3f);
    pieDataSet.setSelectionShift(5f);
// Custom colors to in the pie chart
   int[] colors = {Color.rgb(13, 166, 10), Color.rgb(255, 140, 0)};

   ArrayList<Integer> arrayList1 = new ArrayList<>();
    for (int c : colors) {
        arrayList1.add(c);
    }
    pieDataSet.setColors(arrayList1);
    pieDataSet.setColors(ColorTemplate.createColors(colors));
    PieData pieData = new PieData((pieDataSet));
    pieData.setValueTextSize(18f);
    pieData.setValueTextColor(Color.WHITE);
    piechart.setData(pieData);
    piechart.setCenterTextSize(30f);
    piechart.setDrawEntryLabels(false);
    piechart.animateY(1000, Easing.EaseInOutCubic);

}

Calling the above function to create the chart :

We need to create the list of type PieEntry (consisting of positions and values), a Pie Chart.

private PieChart mPieChart;
mPieChart = findViewById(R.id.piechartSession);
ArrayList<PieEntry> dataList= new ArrayList<>();
sessDataPie1.add(new PieEntry(DATA_TO_BE_ENTERED, "Data 1"));
sessDataPie1.add(new PieEntry(DATA_TO_BE_ENTERED, "Data 2"));
sessDataPie1.add(new PieEntry(DATA_TO_BE_ENTERED, "Data 3"));
piechart(mPieChart,sessDataPie1);

NOTE : DATA HAS BEEN ADDED JUST TO DEMONSTRATE HOW THE FUNCTION WORKS. DATA IN MY APP WAS FETCHED FROM THE CLOUD. YOU CAN CREATE YOUR OWN DATA AS PER YOUR REQUIREMENTS.


메타데이터
post_id
3f2bf8baa4cf
slug
graphs-in-android-apps-3f2bf8baa4cf
url
https://medium.com/@anant-raman/graphs-in-android-apps-3f2bf8baa4cf
canonical_url
https://medium.com/@anant-raman/graphs-in-android-apps-3f2bf8baa4cf
author_url
https://medium.com/@anant-raman
status
ok
fetched_at
2026-07-14 23:49:41