Android中使用achartengine生成图表

今天在做项目的时候用到了图表功能,记录下来微笑

achartengine是google的一个开源项目,可以在https://code.google.com/p/achartengine/ 下载技术文档,jar包以及项目源代码

demo下载:https://code.google.com/p/achartengine/downloads/list

一、饼状图

新建工程,添加achartengine  jar包

PieChart.java

 

[java][/java] view plaincopyprint?

  1. package com.meritit.footlottery.view;
  2. import org.achartengine.ChartFactory;
  3. import org.achartengine.model.CategorySeries;
  4. import org.achartengine.renderer.DefaultRenderer;
  5. import org.achartengine.renderer.SimpleSeriesRenderer;
  6. import android.content.Context;
  7. import android.graphics.Color;
  8. import android.view.View;
  9. public class PieChart {
  10.     public View execute(Context context) {
  11.         int[] colors = new int[] { Color.RED, Color.YELLOW, Color.BLUE };
  12.         DefaultRenderer renderer = buildCategoryRenderer(colors);
  13.         CategorySeries categorySeries = new CategorySeries(“Vehicles Chart”);
  14.         categorySeries.add(“胜 “, 30);
  15.         categorySeries.add(“负”, 20);
  16.         categorySeries.add(“平”, 60);
  17.         return ChartFactory
  18.                 .getPieChartView(context, categorySeries, renderer);
  19.     }
  20.     protected DefaultRenderer buildCategoryRenderer(int[] colors) {
  21.         DefaultRenderer renderer = new DefaultRenderer();
  22.         for (int color : colors) {
  23.             SimpleSeriesRenderer r = new SimpleSeriesRenderer();
  24.             r.setColor(color);
  25.             renderer.addSeriesRenderer(r);
  26.         }
  27.         //显示标签
  28.         renderer.setShowLabels(true);
  29.         //不显示底部说明
  30.         renderer.setShowLegend(false);
  31.         //设置标签字体大小
  32.         renderer.setLabelsTextSize(15);
  33.         renderer.setLabelsColor(Color.BLACK);
  34.         renderer.setZoomEnabled(false);
  35.         renderer.setPanEnabled(false);
  36.         return renderer;
  37.     }
  38. }

使用方法

 

 

[java][/java] view plaincopyprint?

  1. //View pieChart = new PieChart().execute(this);
  2. //chartArea.addView(pieChart);

获得一个View对象,在需要添加的布局下面直接addView

 

二、柱状图

 

[java][/java] view plaincopyprint?

  1. package com.meritit.footlottery.view;
  2. import java.util.Random;
  3. import org.achartengine.ChartFactory;
  4. import org.achartengine.chart.BarChart.Type;
  5. import org.achartengine.model.CategorySeries;
  6. import org.achartengine.model.XYMultipleSeriesDataset;
  7. import org.achartengine.renderer.DefaultRenderer;
  8. import org.achartengine.renderer.SimpleSeriesRenderer;
  9. import org.achartengine.renderer.XYMultipleSeriesRenderer;
  10. import com.meritit.footlottery.R;
  11. import android.content.Context;
  12. import android.graphics.Color;
  13. import android.view.View;
  14. public class BarChart {
  15.     private Context context;
  16.     public View execute(Context context) {
  17.         this.context = context;
  18.         return ChartFactory
  19.                 .getBarChartView(context, getBarDemoDataset(), getBarDemoRenderer(), Type.DEFAULT);
  20.     }
  21.     /**
  22.      * XYMultipleSeriesDataset 类型的对象,用于提供图表需要表示的数据集,
  23.      * 这里我们用 getBarDemoDataset 来得到它。
  24.      */
  25.     private XYMultipleSeriesDataset getBarDemoDataset() {
  26.         XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
  27.         final int nr = 10;
  28.         Random r = new Random();
  29.         for (int i = 0; i < 3; i++) {
  30.             CategorySeries series = new CategorySeries(“球队 ” + (i + 1));
  31.             for (int k = 0; k < nr; k++) {
  32.                 series.add(100 + r.nextInt() % 100);
  33.             }
  34.             dataset.addSeries(series.toXYSeries());
  35.         }
  36.         return dataset;
  37.     }
  38.     /**
  39.      * XYMultipleSeriesRenderer 类型的对象,用于提供图表展现时的一些样式,
  40.      * 这里我们用 getBarDemoRenderer 方法来得到它。
  41.      * getBarDemoRenderer 方法构建了一个 XYMultipleSeriesRenderer 用来设置2个系列各自的颜色
  42.      */
  43.     public XYMultipleSeriesRenderer getBarDemoRenderer() {
  44.         XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
  45.         SimpleSeriesRenderer r = new SimpleSeriesRenderer();
  46.         r.setColor(Color.BLUE);
  47.         renderer.addSeriesRenderer(r);
  48.         r = new SimpleSeriesRenderer();
  49.         r.setColor(Color.GREEN);
  50.         renderer.addSeriesRenderer(r);
  51.         r = new SimpleSeriesRenderer();
  52.         r.setColor(Color.RED);
  53.         renderer.addSeriesRenderer(r);
  54.         renderer.setApplyBackgroundColor(true);
  55.         renderer.setBackgroundColor(Color.TRANSPARENT);
  56.         renderer.setMarginsColor(context.getResources().getColor(R.color.main_background_color));
  57.         renderer.setZoomEnabled(false, false);
  58.         renderer.setPanEnabled(false, false);
  59.         renderer.setLabelsTextSize(15);
  60.         renderer.setLabelsColor(Color.BLACK);
  61.         setChartSettings(renderer);
  62.         return renderer;
  63.     }
  64.     /**
  65.      * setChartSettings 方法设置了下坐标轴样式。
  66.      */
  67.     private void setChartSettings(XYMultipleSeriesRenderer renderer) {
  68.         renderer.setChartTitle(“战绩分析”);
  69.         renderer.setXTitle(“横坐标”);
  70.         renderer.setYTitle(“纵坐标”);
  71.         renderer.setXAxisMin(0.5);
  72.         renderer.setXAxisMax(10.5);
  73.         renderer.setYAxisMin(0);
  74.         renderer.setYAxisMax(210);
  75.     }
  76. }

 

 

上面代码部分解释:

renderer.setApplyBackgroundColor(true);  //设置背景使能,为true下面的设置背景才有效

renderer.setBackgroundColor(Color.TRANSPARENT);  //设置背景

renderer.setMarginsColor() //设置周围区域颜色

renderer.setZoomEnabled(false, false);  //设置是否能放大

renderer.setPanEnabled(false, false);  //设置是否可以移动

renderer.setLabelsTextSize(15);  //设置标签文字大小
renderer.setLabelsColor(Color.BLACK);;

标签