1.简介

AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线 。关于里面类的具体使用,请下载响应的文档说明(主页上有)。
2.开发步骤
1)在工程中新建一个文件夹比如lib,用于存放ACE Libraries,把achartegine-0.5.0.jar包复制到lib里面。然后把这个jar的路径添加到项目的Build Path中。
2)修改AndroidManifest.xml
主要是加入一个<activity>:
< activity android:name = "org.achartengine.GraphicalActivity" />
3)绘制柱状图
public class main extends ListActivity {  
private static final int SERIES_NR = 2;  
/** Called when the activity is first created. */  
private ArrayList<Map<String,String>> maps = new ArrayList<Map<String,String>>();  
@Override  
public void onCreate(Bundle savedInstanceState) {  
super .onCreate(savedInstanceState);  
//        setContentView(R.layout.main);  
// 加入 ListItem “ 调度查询 ”  
HashMap<String,String> map= new HashMap<String,String>();  
map.put( "name" , " 柱状图 " );  
map.put( "desc" , " 显示柱状图 " );  
maps .add(map);  
// 构建 listView 的适配器  
SimpleAdapter adapter= new SimpleAdapter( this , maps ,  
android.R.layout. simple_list_item_2 , // SDK 库中提供的一个包含两个 TextView 的 layout  
new String[]{ "name" , "desc" }, // maps 中的两个 key  
new int []{android.R.id. text1 ,android.R.id. text2 } // 两个 TextView 的 id        
);  
this .setListAdapter(adapter);  
}  
// ListItem 监听器方法  
protected void onListItemClick(ListView l, View v, int position, long id) {  
super .onListItemClick(l, v, position, id);  
XYMultipleSeriesRenderer renderer = getBarDemoRenderer();  
Intent intent = ChartFactory.getBarChartIntent ( this , getBarDemoDataset(), renderer, Type. DEFAULT );  
startActivity(intent);  
}  
private XYMultipleSeriesDataset getBarDemoDataset() {  
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();  
final int nr = 10;  
Random r = new Random();  
for ( int i = 0; i < SERIES_NR ; i++) {  
CategorySeries series = new CategorySeries( "Demo series " + (i + 1));  
for ( int k = 0; k < nr; k++) {  
series.add(100 + r.nextInt() % 100);  
}  
dataset.addSeries(series.toXYSeries());  
}  
return dataset;  
}  
public XYMultipleSeriesRenderer getBarDemoRenderer() {  
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();  
SimpleSeriesRenderer r = new SimpleSeriesRenderer();  
r.setColor(Color. BLUE );  
renderer.addSeriesRenderer(r);  
r = new SimpleSeriesRenderer();  
r.setColor(Color. GREEN );  
renderer.addSeriesRenderer(r);  
setChartSettings(renderer);  
return renderer;  
}  
private void setChartSettings(XYMultipleSeriesRenderer renderer) {  
renderer.setChartTitle( "Chart demo" );  
renderer.setXTitle( "x values" );  
renderer.setYTitle( "y values" );  
renderer.setXAxisMin(0.5);  
renderer.setXAxisMax(10.5);  
renderer.setYAxisMin(0);  
renderer.setYAxisMax(210);  
}  
}  
代码解析:在 onListItemClick 方法中,当用户点击了“显示图表”之后,构造一个intent对象,然后用startActivity发送消息到前面AndroidManifest.xml申明的那个activity( 即 GraphicalActivity )。于是图表就显示出来了。关键是intent的构造方法 ChartFactory.getBarChartIntent。
ChartFactory提供了许多有用的工厂方法,如果你需要生成一个折线图,可以用它的 getLineChartIntent 方法。
getBarChartIntent 方法有点复杂,需要我们准备很多参数传入。其中一个是 XYMultipleSeriesDataset 类型的对象,用于提供图表需要表示的数据集,这里我们用     getBarDemoDataset 来得到它。另外一个是 XYMultipleSeriesRenderer 类型的对象,用于提供图表展现时的一些样式,这里我们用 getBarDemoRenderer 方法来得到它。
getLineChartIntent 方法很无聊,使用了一些随机数来作为图表数据。注意柱状图是支持多系列的,这里生成了两个系列的数据。
getBarDemoRenderer 方法构建了一个 XYMultipleSeriesRenderer 用来设置2个系列各自的颜色,然后调用 setChartSettings 方法设置了下坐标轴样式。
4)绘制曲线
import java.util.ArrayList;   
import java.util.List;  
import org.achartengine.ChartFactory;   
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.app.Activity;   
import android.graphics.Color;   
import android.os.Bundle;   
import android.view.View;  
public class chartDemo extends Activity {   
@Override   
public void onCreate(Bundle savedInstanceState) {   
super.onCreate(savedInstanceState);  
String[] titles = new String[] { "First", "Second"};  
List x = new ArrayList();   
List y = new ArrayList();  
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});  
XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);  
int[] colors = new int[] { Color.BLUE, Color.GREEN};   
PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND};   
XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles, true);  
setChartSettings(renderer, "Line Chart Demo", "X", "Y", -1, 12, 0, 35 , Color.WHITE, Color.WHITE);  
View chart = ChartFactory.getLineChartView(this, dataset, renderer);  
setContentView(chart);   
}  
protected XYMultipleSeriesDataset buildDataset(String[] titles,   
List xValues,   
List yValues)   
{   
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();  
int length = titles.length;                  //有几条线   
for (int i = 0; i < length; i++)   
{   
XYSeries series = new XYSeries(titles[i]);    //根据每条线的名称创建   
double[] xV = xValues.get(i);                 //获取第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);   
}  
return dataset;   
}  
protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles, boolean fill)   
{   
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();   
int length = colors.length;   
for (int i = 0; i < length; i++)   
{   
XYSeriesRenderer r = new XYSeriesRenderer();   
r.setColor(colors[i]);   
r.setPointStyle(styles[i]);   
r.setFillPoints(fill);   
renderer.addSeriesRenderer(r);   
}   
return renderer;   
}  
protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title,   
String xTitle,String yTitle, double xMin,   
double xMax, double yMin, double yMax,   
int axesColor,int labelsColor)   
{   
renderer.setChartTitle(title);   
renderer.setXTitle(xTitle);   
renderer.setYTitle(yTitle);   
renderer.setXAxisMin(xMin);   
renderer.setXAxisMax(xMax);   
renderer.setYAxisMin(yMin);   
renderer.setYAxisMax(yMax);   
renderer.setAxesColor(axesColor);   
renderer.setLabelsColor(labelsColor);   
}   
}  

Android之使用AchartEngineActivity引擎绘制柱状图、曲线图相关推荐

  1. Python数据分析三剑客学习笔记Day6——matplotlib包的使用:数据可视化,简单绘制柱状图、曲线图、饼图、频率分布直方图

    本文是视频Python数据分析三剑客 数学建模基础 numpy.pandas.matplotlib的学习笔记. -------------------------------------------- ...

  2. android心率曲线绘制,【图解鸿蒙】使用绘图组件Canvas绘制心率曲线图

    一.运行效果 在页面中显示页面标题.心率曲线图.心率最大值及其图标.心率最小值及其图标.心率在每分钟内的平均次数.如下图所示: 二.实现思路 在页面的生命周期事件函数onInit()中,随机生成若干个 ...

  3. 超详细的Python matplotlib 绘制柱状图

    复习回顾 Python 为数据展示提供了大量优秀的功能包,其中 matplotlib 模块可以方便绘制制作折线图.柱状图.散点图等高质量的数据包. 关于 matplotlib 模块,我们前期已经对ma ...

  4. .net之生成图表的控件(柱状图,曲线图,饼状图) [转]

    可以生成柱状图,曲线图,饼状图,只要你给他一个datatable,在这声明一下 using System; using System.Web.UI; using System.Data; using  ...

  5. R语言绘制ROC曲线图

    受试者工作特征曲线(ROC曲线),最初作为一种分析方法在二战时用于评价雷达性能(鉴别敌方,友方以及噪音),目前广泛应用于医学诊断.生物信息学.数据挖掘和机器学习等研究中. ROC曲线可用于评价生物标记 ...

  6. R语言绘制生存曲线图

    R语言绘制生存曲线图 KMunicate是支持按照Morris等人的KMunicate研究推荐的方式生成Kaplan-Meier图. 1958年,Edward L. Kaplan 和Paul Meie ...

  7. Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图、垂直条形图、分组条形图、堆叠条形图

    Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图.垂直条形图.分组条形图.堆叠条形图 目录

  8. plotly基于dataframe数据绘制柱状图(bar plot)

    plotly基于dataframe数据绘制柱状图(bar plot) # 构建仿真pandas数据: # 绘制条形图: import plotly as py # 导入plotly库并命名为py im ...

  9. cufflinks基于dataframe数据绘制柱状图(bar plot)、堆叠柱状图(stacked bar plot)

    cufflinks基于dataframe数据绘制柱状图(bar plot).堆叠柱状图(stacked bar plot) # bar plot # from chart_studio import ...

最新文章

  1. asp.net webform html,ASP.NET WebForm页面内容输出方式
  2. 【好程序员笔记分享】——UIView与CALayer详解
  3. 1. Visio Web 形状 - 无法与 Web 服务器建立连接。请稍后重新进行搜索。处理方式...
  4. tkinter 菜单添加事件_Python+tkinter设置Label字体、字号、样式、对齐方式、鼠标形状、响应鼠标事件...
  5. js百度地图小车html,H5页面引用百度地图绘制车辆历史轨迹
  6. 区域卫生数据用于临床疗效分析的可用性研究
  7. JavaScript的new关键字执行过程(1)
  8. js选中文字兼容性解决
  9. centos7下使用git提交代码
  10. 20200115每日一句
  11. JavaScript(6):回调函数
  12. jwt token注销_JWT 管理用户登录时,都需要把 token 存数据库里,判断用户登出时删除吗?...
  13. C++:[编程题]买帽子
  14. 计算机运行黑屏显示器正常,主机正常运行显示器黑屏怎么办_主机正常运行显示器黑屏的处理办法...
  15. 集合的基本运算及文氏图
  16. ReCap 360 photo照片建模技术的又一个例子
  17. YYText-显示富文本
  18. 自定义Paging分页
  19. 步态剪影_如何拍摄好剪影照片
  20. 酷狗社招面试 java_酷狗面试经验

热门文章

  1. idea系列主题推荐:material theme ui(Dracula)
  2. Linux sed删除文件注释行并删除空行
  3. HBuilderX 自述文件
  4. hbase读写流程及缓存机制
  5. sbt1.4.4配置国内镜像源实操教程(无痛入门)
  6. 【完整代码】Scala akka入门示例
  7. Scala集合实现WordCount单词统计代码
  8. Redis的两种持久化机制RDB和AOF
  9. spring boot整合freemarker及freemarker基础语法超详细讲解
  10. vue项目获取下拉框选中id_vue treeselect获取当前选中项的label实例