zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android中使用achartengine生成图表的具体方法

Android 使用 生成 图表 具体方法
2023-06-13 09:15:15 时间

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

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

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

一、饼状图

新建工程,添加achartengine jar包

PieChart.java

复制代码代码如下:


packagecom.meritit.footlottery.view;

importorg.achartengine.ChartFactory;
importorg.achartengine.model.CategorySeries;
importorg.achartengine.renderer.DefaultRenderer;
importorg.achartengine.renderer.SimpleSeriesRenderer;

importandroid.content.Context;
importandroid.graphics.Color;
importandroid.view.View;

publicclassPieChart{
 publicViewexecute(Contextcontext){
  int[]colors=newint[]{Color.RED,Color.YELLOW,Color.BLUE};
  DefaultRendererrenderer=buildCategoryRenderer(colors);
  CategorySeriescategorySeries=newCategorySeries("VehiclesChart");
  categorySeries.add("胜",30);
  categorySeries.add("负",20);
  categorySeries.add("平",60);
  returnChartFactory
    .getPieChartView(context,categorySeries,renderer);
 }

 protectedDefaultRendererbuildCategoryRenderer(int[]colors){
  DefaultRendererrenderer=newDefaultRenderer();
  for(intcolor:colors){
   SimpleSeriesRendererr=newSimpleSeriesRenderer();
   r.setColor(color);
   renderer.addSeriesRenderer(r); 
  }
  //显示标签
  renderer.setShowLabels(true);
  //不显示底部说明
  renderer.setShowLegend(false);
  //设置标签字体大小
  renderer.setLabelsTextSize(15);
  renderer.setLabelsColor(Color.BLACK);
  renderer.setZoomEnabled(false);
  renderer.setPanEnabled(false);
  returnrenderer;
 }
}

使用方法

复制代码代码如下:

//ViewpieChart=newPieChart().execute(this);
//chartArea.addView(pieChart);

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

二、柱状图

复制代码代码如下:
packagecom.meritit.footlottery.view;

importjava.util.Random;

importorg.achartengine.ChartFactory;
importorg.achartengine.chart.BarChart.Type;
importorg.achartengine.model.CategorySeries;
importorg.achartengine.model.XYMultipleSeriesDataset;
importorg.achartengine.renderer.DefaultRenderer;
importorg.achartengine.renderer.SimpleSeriesRenderer;
importorg.achartengine.renderer.XYMultipleSeriesRenderer;

importcom.meritit.footlottery.R;

importandroid.content.Context;
importandroid.graphics.Color;
importandroid.view.View;

publicclassBarChart{
 privateContextcontext;
 publicViewexecute(Contextcontext){
  this.context=context;
  returnChartFactory
    .getBarChartView(context,getBarDemoDataset(),getBarDemoRenderer(),Type.DEFAULT);
 }

   /**
    *XYMultipleSeriesDataset类型的对象,用于提供图表需要表示的数据集,
    *这里我们用getBarDemoDataset来得到它。
    */ 
   privateXYMultipleSeriesDatasetgetBarDemoDataset(){ 
       XYMultipleSeriesDatasetdataset=newXYMultipleSeriesDataset(); 
       finalintnr=10; 
       Randomr=newRandom(); 
       for(inti=0;i<3;i++){ 
           CategorySeriesseries=newCategorySeries("球队"+(i+1)); 
           for(intk=0;k<nr;k++){ 
               series.add(100+r.nextInt()%100); 
           } 
           dataset.addSeries(series.toXYSeries()); 
       } 
       returndataset; 
   }

   /**
    *XYMultipleSeriesRenderer类型的对象,用于提供图表展现时的一些样式,
    *这里我们用getBarDemoRenderer方法来得到它。
    *getBarDemoRenderer方法构建了一个XYMultipleSeriesRenderer用来设置2个系列各自的颜色
    */ 
   publicXYMultipleSeriesRenderergetBarDemoRenderer(){ 
       XYMultipleSeriesRendererrenderer=newXYMultipleSeriesRenderer(); 
       SimpleSeriesRendererr=newSimpleSeriesRenderer(); 
       r.setColor(Color.BLUE); 
       renderer.addSeriesRenderer(r); 
       r=newSimpleSeriesRenderer(); 
       r.setColor(Color.GREEN); 
       renderer.addSeriesRenderer(r);
       r=newSimpleSeriesRenderer(); 
       r.setColor(Color.RED); 
       renderer.addSeriesRenderer(r);
       renderer.setApplyBackgroundColor(true);
       renderer.setBackgroundColor(Color.TRANSPARENT);
       renderer.setMarginsColor(context.getResources().getColor(R.color.main_background_color));
       renderer.setZoomEnabled(false,false);
       renderer.setPanEnabled(false,false);
       renderer.setLabelsTextSize(15);
  renderer.setLabelsColor(Color.BLACK);
       setChartSettings(renderer); 
       returnrenderer; 
   }

   /**
    *setChartSettings方法设置了下坐标轴样式。
    */ 
   privatevoidsetChartSettings(XYMultipleSeriesRendererrenderer){ 
       renderer.setChartTitle("战绩分析"); 
       renderer.setXTitle("横坐标"); 
       renderer.setYTitle("纵坐标"); 
       renderer.setXAxisMin(0.5); 
       renderer.setXAxisMax(10.5); 
       renderer.setYAxisMin(0); 
       renderer.setYAxisMax(210); 
   } 
}

上面代码部分解释:
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);