Monday, August 5, 2013

Android Charts using A-Chart Engine- Part 1(Line Chart)

Line Charts Using A-Chart Engine

It is important that in today's world charts is an essential feature in most of the business enterprise applications. So therefore in this tutorial we'll take a look of how to implement some of the business charts. Let us begin with the simple Line Chart implementation.

Step 1

First of all download the latest version of the A-Chart Engine library from this link. Then copy the jar file into the libs folder of your project.

Step 2

Update the activity_main.xml like the following:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/Chart_layout"
        android:orientation="vertical">
       
    </LinearLayout>
  
</LinearLayout>

Step 3

In the main.java do the following steps.

// First Create a Graphical View object called mChart.

private GraphicalView mChart;


private String[] mMonth = new String[] {
       "Jan", "Feb" , "Mar", "Apr", "May", "Jun",

       "Jul", "Aug" };

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        OpenChart();
    }
   
 private void OpenChart()
    {
    / / Define the number of elements you want in the chart.
    int z[]={0,1,2,3,4,5,6,7};
   
   
       int x[]={10,18,32,21,48,60,53,80};
   

      // Create XY Series for X Series.
    XYSeries xSeries=new XYSeries("X Series");
   

    //  Adding data to the X Series.
    for(int i=0;i<z.length;i++)
    {
    xSeries.add(z[i],x[i]);
   
    }

        // Create a Dataset to hold the XSeries.
   
    XYMultipleSeriesDataset dataset=new XYMultipleSeriesDataset();
   
      // Add X series to the Dataset.  
dataset.addSeries(xSeries);
   
   
      // Create XYSeriesRenderer to customize XSeries

    XYSeriesRenderer Xrenderer=new XYSeriesRenderer();
    Xrenderer.setColor(Color.GREEN);
    Xrenderer.setPointStyle(PointStyle.DIAMOND);
    Xrenderer.setDisplayChartValues(true);
    Xrenderer.setLineWidth(2);
    Xrenderer.setFillPoints(true);
   
     // Create XYMultipleSeriesRenderer to customize the whole chart

    XYMultipleSeriesRenderer mRenderer=new XYMultipleSeriesRenderer();
   
    mRenderer.setChartTitle("X Vs Y Chart");
    mRenderer.setXTitle("X Values");
    mRenderer.setYTitle("Y Values");
    mRenderer.setZoomButtonsVisible(true);
    mRenderer.setXLabels(0);
    mRenderer.setPanEnabled(false);
   
    mRenderer.setShowGrid(true);
 
    mRenderer.setClickEnabled(true);
   
    for(int i=0;i<z.length;i++)
    {
    mRenderer.addXTextLabel(i, mMonth[i]);
    }
   
       // Adding the XSeriesRenderer to the MultipleRenderer. 
    mRenderer.addSeriesRenderer(Xrenderer);
 
   
    LinearLayout chart_container=(LinearLayout)findViewById(R.id.Chart_layout);

// Creating an intent to plot line chart using dataset and multipleRenderer
   
    mChart=(GraphicalView)ChartFactory.getLineChartView(getBaseContext(), dataset, mRenderer);
   
    //  Adding click event to the Line Chart.

    mChart.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

SeriesSelection series_selection=mChart.getCurrentSeriesAndPoint();

if(series_selection!=null)
{
int series_index=series_selection.getSeriesIndex();

String select_series="X Series";
if(series_index==0)
{
select_series="X Series";
}else
{
select_series="Y Series";
}

String month=mMonth[(int)series_selection.getXValue()];

int amount=(int)series_selection.getValue();

Toast.makeText(getBaseContext(), select_series+"in" + month+":"+amount, Toast.LENGTH_LONG).show();
}
}
});
   
// Add the graphical view mChart object into the Linear layout .
    chart_container.addView(mChart);
   
   
    }

}

Finally You will get a Line Chart that will look like this.





Hope you Enjoyed it & See you in the Next tutorial.

9 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. thx friend, it's really helpful, may allah give you hidaya to the truth

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Muchas gracias por tu ejemplo! Una duda amigo. Cuando cambio de orientación y ya hay un evento click... ¿Qué evento o método debo utilizar para que me guarde mi estado anterior? Saludos!

    ReplyDelete
  5. As intentaro hacar una dial graph con esa libreria??

    ReplyDelete
  6. hi

    what is error dataset and rendering should be not null and should have the same number series

    ReplyDelete
  7. how to make graph in android with data from database mysql ? thanks hope you help me

    ReplyDelete