Hello

In last Post  we check how to hide buttons in layout In this post i want to show you how to create bar chart in android using Achartengine . Achartengine is  charting software library for Android applications. Mobile phones, tablets and other gadgets running Android will probably benefit of this charting library.

you can check more for Achartengine            http://www.achartengine.org/content/demo.html

and all the source code available here  for  Achartengine    http://www.achartengine.org/download/


This is the tested code for bar graph it is the best graph I like it very much here is code...


package com.tapt.combinedtest; 
import java.util.ArrayList;
import java.util.List;
 
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart;
import org.achartengine.chart.LineChart;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
 
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RelativeLayout;
 
 
public class CombinedTrial extends Activity {
 
     
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
         
           
final GraphicalView gv =createIntent();
 
 
 
        RelativeLayout rl=(RelativeLayout)findViewById(R.id.graph);
        rl.addView(gv);
        
 
         
         
    }
     
    
    public GraphicalView createIntent() {
        String[] titles = new String[] { "Target"};
         
        double[] y1 =new double[] { 20,30,10,40,50,20,10,30,30,40,45,25};
        double barview = 12;int maxvalue=60;
         
        String[] x1=new String[] {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
         
         
        List<double[]> x = new ArrayList<double[]>();
        for (int i = 0; i < titles.length; i++) {
          x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
        }
         
         
        if(maxvalue==0){
             
            maxvalue=10000;
        }
         
 
         
        //Line Portion//
        //======================================================================
         
        List<double[]> values = new ArrayList<double[]>();
        values.add(new double[] { 20,20,20,20,20,20,20,20,20,20,20,20});
 
        //=======================================================================
         
         
         
        int[] colors = new int[] { Color.GREEN};
        PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE};
        XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);
        renderer.setPointSize(0);
        int length = renderer.getSeriesRendererCount();
 
        for (int i = 0; i < length; i++) {
          XYSeriesRenderer r = (XYSeriesRenderer) renderer.getSeriesRendererAt(i);
          r.setLineWidth(5);
          r.setFillPoints(true);
        }
        setChartSettings(renderer, "Sales Reports", "", "Amount (Rs)", 0.5, barview, 0, maxvalue,
            Color.LTGRAY, Color.LTGRAY,x1);
 
        renderer.setXLabels(0);
        renderer.setYLabels(10);
        renderer.setShowGrid(true);
        renderer.setXLabelsAlign(Align.RIGHT);
        renderer.setYLabelsAlign(Align.RIGHT);
        renderer.setZoomButtonsVisible(false);
         
        renderer.setClickEnabled(true);
 
         
         
         
 
        XYSeries waterSeries = new XYSeries("Sales");
        waterSeries.add(1, y1[0]);
        waterSeries.add(2, y1[1]);
        waterSeries.add(3, y1[2]);
        waterSeries.add(4, y1[3]);
        waterSeries.add(5, y1[4]);
        waterSeries.add(6, y1[5]);
        waterSeries.add(7, y1[6]);
        waterSeries.add(8, y1[7]);
        waterSeries.add(9, y1[8]);
        waterSeries.add(10, y1[9]);
        waterSeries.add(11, y1[10]);
        waterSeries.add(12, y1[11]);
        renderer.setBarSpacing(0.5);
        XYSeriesRenderer waterRenderer = new XYSeriesRenderer();
        waterRenderer.setColor(Color.argb(250, 0, 210, 250));
 
        XYMultipleSeriesDataset dataset = buildDataset(titles, x, values);
        dataset.addSeries(0, waterSeries);
        renderer.addSeriesRenderer(0, waterRenderer);
        waterRenderer.setDisplayChartValues(true);
        waterRenderer.setChartValuesTextSize(10);
 
        String[] types = new String[] { BarChart.TYPE, LineChart.TYPE};
        final GraphicalView grfv = ChartFactory.getCombinedXYChartView(this, dataset, renderer, types);
         
 
         
         
         
         
        return grfv;
      }
     
     
     
     
    protected static XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles) {
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        setRenderer(renderer, colors, styles);
        return renderer;
      }
     
    protected static void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors, PointStyle[] styles) {
        renderer.setAxisTitleTextSize(16);
        renderer.setChartTitleTextSize(20);
        renderer.setLabelsTextSize(12);
        renderer.setLegendTextSize(15);
        renderer.setPointSize(5f);
        renderer.setMargins(new int[] { 35, 65, 10, 15 });
        int length = colors.length;
        for (int i = 0; i < length; i++) {
          XYSeriesRenderer r = new XYSeriesRenderer();
          r.setColor(colors[i]);
          r.setPointStyle(styles[i]);
          renderer.addSeriesRenderer(r);
         
        }
      }
     
    protected static void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,
              String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,
              int labelsColor,String[] x1) {
            renderer.setChartTitle(title);
            renderer.isClickEnabled();
            renderer.setXTitle(xTitle);
            renderer.setYTitle(yTitle);
            renderer.setXAxisMin(xMin);
            renderer.setXAxisMax(xMax);
            renderer.setYAxisMin(yMin);
            renderer.setYAxisMax(yMax);
            renderer.setAxesColor(axesColor);
            renderer.setLabelsColor(labelsColor);
            renderer.setXLabelsAngle(-90);
             
 for(int i=1;i<=((x1.length));i++){
                 
                 
                renderer.addXTextLabel(i, x1[(i-1)]);  
                 
                 
            }
             
             
          }  
     
     
     
    protected static XYMultipleSeriesDataset buildDataset(String[] titles, List<double[]> xValues,
              List<double[]> yValues) {
            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
            addXYSeries(dataset, titles, xValues, yValues, 0);
            return dataset;
          }
     
     
    public static void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles, List<double[]> xValues,
              List<double[]> yValues, int scale) {
            int length = titles.length;
            for (int i = 0; i < length; i++) {
              XYSeries series = new XYSeries(titles[i], scale);
              double[] xV = xValues.get(i);
              double[] yV = yValues.get(i);
              int seriesLength = xV.length;
              for (int k = 0; k < seriesLength; k++) {
                series.add(xV[k], yV[k]);
              }
              dataset.addSeries(series);
            }
          }
       
}

No comments:

Post a Comment

Pages