Android作图折线图


        Android绘制折线图<br />

  参考:

  1、 使用Android 绘图工具库 AChartEngine

  2、 绘制折线图的代码解析

关于工具库

  AChartEngine是为 android 应用而设计的绘图工具库。目前该库的最新稳定版本是 0.7 ,支持绘制以下类型的图表 :

  · line chart

  · area chart

  · scatter chart

  · time chart

  · bar chart

  · pie chart

  · bubble chart

  · doughnut chart

  · range (high-low) bar chart

  · dial chart / gauge

  · combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart

  · cubic line chart

  以上每种图表可以包含多个序列, 可以将 X 轴以水平或垂直的形式显示,也支持很多自定义的特性 . 图表可以作为 Viewl 构建,也可以作为 Intent 构建 —— 这样可以被用于启动一个活动( Activity )

关于折线图绘制

  折线图的效果:

  

  代码解释:

  //每条曲线的名称

  String[] titles = new String[]{ "First" , "Second" };

  List x = new ArrayList (); //点集的x坐标

  List y = new ArrayList (); //点集的y坐标

  x.add( new double []{1,3,5,7,9,11}) ;

  x.add( new double []{0,2,4,6,8,10}) ;

  y.add( new double []{3,14,5,30,20,25}) ;

  y.add( new double []{18,9,21,15,10,6}) ;

  曲线的名称和坐标点都以定义

  

  以下的解释参照上图

  步骤一:折线图的坐标集

  首先应该创建 XYSeries对象 : 用于提供绘制的点集合的数据

  XYSeries series = new XYSeries(titles[i]); // 根据每条线的名称创建

  将所有的坐标加入这个集合

  series .add (xV[k], yV[k]);

  XYMultipleSeriesDataset对象 用于 保存点集数据 ,包括每条曲线的X,Y坐标

  // 用于数据的存放

  XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

  dataset .addSeries (series);

  步骤二:折线图的样式集

  定义每条曲线的颜色

  int [] colors = new int [] {Color. BLUE ,Color. GREEN };

  定义每条曲线的点的形状

  PointStyle [] styles =

  new PointStyle []{ PointStyle . CIRCLE , PointStyle . DIAMOND };

  曲线图的格式,包括颜色,值的范围,点和线的形状等等 都封装在 XYSeriesRender对象中,再将XYSeriesRender对象封装在 XYMultipleSeriesRenderer 对象中

  XYSeriesRenderer r = new XYSeriesRenderer();

  r.setColor(colors[i]);

  r.setPointStyle(styles[i]);

  r.setFillPoints(fill);

  XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

  renderer.addSeriesRenderer(r);

  设置折线图名称,坐标轴的名称,坐标轴的起点重点,坐标轴的颜色,坐标轴上数字的颜色

  setChartSettings(renderer, "Line Chart Demo" , "X" , "Y" , - 1 , 12, 0, 35 , Color. WHITE , Color. WHITE );

  步骤三:显示折线图

  View chart = ChartFactory. getLineChartView ( this , dataset, renderer);

  setContentView(chart);

  源码见附件

移动开发 Android 程序开发

夜鷲千羽衣 10 years, 3 months ago

  也遇到楼上的问题,请教楼上如何解决的啊?

胖子ymd answered 10 years, 3 months ago

  我运行了,怎么报错啊,报错如下:
04-24 23:04:13.292: E/AndroidRuntime(12530): java.lang.NoClassDefFoundError: org.achartengine.model.XYMultipleSeriesDataset

雪风KYO answered 10 years, 3 months ago

r4ez8 answered 10 years, 3 months ago

Your Answer