AChartEngine是为Android应用而设计的绘图工具库。可用于绘制多种图表。ChartEngine支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、气泡式图表、环形图、高低交替图等。
以上每种图表都可以包含多个序列, 可以将X轴以水平或垂直的形式显示,也支持很多自定义的特性。另外,图表可以作为View构建,也可以作为Intent构建这样可以被用于启动一个活动(Activity)。
AChartEngine和JFreeChart都是采用Java编写的开放图表制作类库,前者是应用在android上,后者也能主要应用在JAVA SE 或者 JAVA EE上。AChartEngine是谷歌开发的开源项目。
资源下载:
1、 http://code.google.com/p/achartengine/downloads/list
2、 http://download.csdn.net/detail/a953210725/7722567
*****************************************************************************************************************************************************************************************
折线图相关主要类介绍
1、XYSeries:该类表示一条折线的点集,也就是折线上的点的坐标。
2、XYMultipleSeriesDataset:该类是XYSeries的集合,因为一张图上可能存在多条折线。
3、XYSeriesRenderer:该类表示一条折线的风格,即颜色、粗细、节点等等。
4、XYMultipleSeriesRenderer:该类是XYSeriesRenderer的集合,因为一张图上可能存在多条折线。另外整个图表的风格也需要通过该类来实现。
5、ChartFactory:该类用数据集XYMultipleSeriesDataset对象与风格集XYMultipleSeriesRenderer对象来画图并将图加载到GraphicalView中。
其中画图包括两种方式:
getLineChartIntent():直接新建一个Activity全屏显示生成的图表;
getLineChartView() :生成一个View,用户可以自行设置它的显示。
一个普通折线实现如下图所示:
*****************************************************************************************************************************************************************************************
实现一个最简单的静态折线图
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 用于存放每条折线的点数据
XYSeries line1, line2;
// 用于存放所有需要绘制的XYSeries
XYMultipleSeriesDataset mDataset;
// 用于存放每条折线的风格
XYSeriesRenderer renderer1, renderer2;
// 用于存放所有需要绘制的折线的风格
XYMultipleSeriesRenderer mXYMultipleSeriesRenderer;
GraphicalView chart;
// 初始化,必须保证XYMultipleSeriesDataset对象中的XYSeries数量和
// XYMultipleSeriesRenderer对象中的XYSeriesRenderer数量一样多
line1 = new XYSeries("折线1");
line2 = new XYSeries("折线2");
renderer1 = new XYSeriesRenderer();
renderer2 = new XYSeriesRenderer();
mDataset = new XYMultipleSeriesDataset();
mXYMultipleSeriesRenderer = new XYMultipleSeriesRenderer();
// 为两个XYSeries对象分别填充数据
Random r = new Random();
for (int k = 0; k < 10; k++) {
// 填x,y值
line1.add(k, 20 + r.nextInt() % 100);
}
for (int k = 0; k < 10; k++) {
// 填x,y值
line2.add(k, 20 + r.nextInt() % 100);
}
// 为两个XYSeriesRenderer对象分别填充数据
renderer1.setColor(Color.RED);
renderer2.setColor(Color.BLUE);
// 将XYSeries对象和XYSeriesRenderer对象分别添加到XYMultipleSeriesDataset对象和XYMultipleSeriesRenderer对象中。
mDataset.addSeries(line1);
mDataset.addSeries(line2);
mXYMultipleSeriesRenderer.addSeriesRenderer(renderer1);
mXYMultipleSeriesRenderer.addSeriesRenderer(renderer2);
//通过该函数获取到一个View 对象
chart = ChartFactory.getLineChartView(this, mDataset, mXYMultipleSeriesRenderer);
//将该View 对象添加到layout中。
layout.addView(chart, new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
}
实现效果如下图所示:
*****************************************************************************************************************************************************************************************
动态折线图
上面实现了一个最简单的静态折线图,那我们有时需要实现一个动态的折线图,类似于windows任务管理器。其原理比较简单。
大致步骤和实现静态折线图一样,只是并没有直接为XYSeries对象一次性添加所有点坐标。而是动态的为XYSeries对象添加,并且每次添加完成后,刷新即可。
具体步骤就不详述了,可以参考下面的Demo,里面实现了一个静态折线图和两种不同风格的动态折线图。
Demo:http://download.csdn.net/detail/a953210725/7722593
*****************************************************************************************************************************************************************************************
参考
1、简单使用achartengine绘制折线图:http://www.open-open.com/lib/view/open1396359314653.html
2、AChartEngine :http://download.csdn.net/detail/qiu_11/6851167