How to draw a pie chart in android

Viewed 66397

I'd like to draw a pie chart in my android application. Would you please suggest me a way to do that in a simple way ? I have written a view class for that purpose but it's not satisfying. So I would appreciate if you tell me a good and high performance chart library.

7 Answers

If you want to have best Pie Chart do as follows: 1. Open build.gradle(Modul: app) add dependence implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'

2.Create Your_Layout as:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_gravity="center_vertical"
        android:orientation="vertical">

        <com.github.mikephil.charting.charts.PieChart
            android:id="@+id/piechart_1"
            android:layout_width="match_parent"
            android:layout_height="300sp">
        </com.github.mikephil.charting.charts.PieChart>
    </LinearLayout>
  1. Open Your activity file and paste the following codes:

    public class YourActivity extends AppCompatActivity{
    
            protected void onCreate(Bundle saveInstanceState)
    {
              super.onCreate(saveInstanceState);
              setContentView(R.layout.Your_layout);
              setPieChart(); }
    
             public void setPieChart() {
                        this.pieChart = pieChart;
                        pieChart.setUsePercentValues(true);
                        pieChart.getDescription().setEnabled(true);
                        pieChart.setExtraOffsets(5,10,5,5);
                        pieChart.setDragDecelerationFrictionCoef(0.9f);
                        pieChart.setTransparentCircleRadius(61f);
                        pieChart.setHoleColor(Color.WHITE);
                        pieChart.animateY(1000, Easing.EasingOption.EaseInOutCubic);
                        ArrayList<PieEntry> yValues = new ArrayList<>();
                        yValues.add(new PieEntry(34f,"Ilala"));
                        yValues.add(new PieEntry(56f,"Temeke"));
                        yValues.add(new PieEntry(66f,"Kinondoni"));
                        yValues.add(new PieEntry(45f,"Kigamboni"));
    
                        PieDataSet dataSet = new PieDataSet(yValues, "Desease Per 
                         Regions");
                        dataSet.setSliceSpace(3f);
                        dataSet.setSelectionShift(5f);
                        dataSet.setColors(ColorTemplate.COLORFUL_COLORS);
                        PieData pieData = new PieData((dataSet));
                        pieData.setValueTextSize(10f);
                        pieData.setValueTextColor(Color.YELLOW);
                        pieChart.setData(pieData);
                        //PieChart Ends Here
                    }
    }
    

It Will Give you Pie Chart shown Below; enter image description here

The Library can also be used for Drawing Bar Graphs, LineGraphs,Horizontal Bar Graphs Etc

Open up build.gradle (module:app) and add the library in the dependencies.

implementation 'com.github.lecho:hellocharts-library:1.5.8@aar'

Next you need to open up build.gradle (Project) and add Jcenter because this library is available through it.

allprojects {
repositories {
    google()
    jcenter()
}

}

Now sync your project by clicking on Sync Now.

Open up activity_main.xml and add the following code for Android pie chart view.

< ?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
 tools:context="com.codingdemos.codingdemos.MainActivity">
<lecho.lib.hellocharts.view.PieChartView
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
< /LinearLayout>

Here is the code for MainActivity.java file.

public class MainActivity extends AppCompatActivity {
    PieChartView pieChartView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    pieChartView = findViewById(R.id.chart);

    List pieData = new ArrayList<>();
    pieData.add(new SliceValue(15, Color.BLUE).setLabel("Q1: $10"));
    pieData.add(new SliceValue(25, Color.GRAY).setLabel("Q2: $4"));
    pieData.add(new SliceValue(10, Color.RED).setLabel("Q3: $18"));
    pieData.add(new SliceValue(60, Color.MAGENTA).setLabel("Q4: $28"));

    PieChartData pieChartData = new PieChartData(pieData);
    pieChartData.setHasLabels(true).setValueLabelTextSize(14);
    pieChartData.setHasCenterCircle(true).setCenterText1("Sales in million").setCenterText1FontSize(20).setCenterText1Color(Color.parseColor("#0097A7"));
    pieChartView.setPieChartData(pieChartData);
}
}

you can see https://www.codingdemos.com/android-pie-chart-tutorial/ for more description.

Related