- 首页 »
- 资源下载
- »
- Android培训中心
- »
- 技术文章
android图表引擎AchartEngine制作柱图
[来源] 达内 [编辑] 达内 [时间]2012-09-14
废话不多说 关于
android
图表制作引擎AchartEngine
的介绍我这里直接略去
大家想要了解它可以直接百度。
网上关于AChartEngine绘制柱状图的介绍非差稀少,而
AchartEngine它本身
Api
帮助文档写的非常的简略,给我们学习带来很大的不便。所以我在这里凭借个人的理解,以一个简单的柱状图的例子来解释
AchartEngine绘制柱图的一个过程,希望会对大家有所帮助。
首先简略的理解一下AchartEngine的API。
AchartEngine的提供的Api
非常的简单,其中最重要的两个概念就是数据设置器(dataset
)和所谓的描绘器(renderer
)。顾名思义,数据设置器就是为我们提供了一系列对图表进行值传入的方法,而描绘器为我们提供了修改图表外观的一些方法。
本例结合简单的SQLite数据库表来建立一张柱状图
以下是我们要用到的数据库表的信息:
其实待会我们要用到的 只有_name 和money 两个字段,大家只要关注这两个字段即可
首先 我们打开本地数据库 得到游标:
接下去我们要声明一个数据设置器 和一个描绘器
其中 getBarRenderer()函数是我们自定义的方法,用于初始化描绘器,其方法具体如下:
//描绘器设置 public
XYMultipleSeriesRenderer getBarRenderer() { XYMultipleSeriesRenderer renderer =
new XYMultipleSeriesRenderer(); //通过SimpleSeriesDenderer设置描绘器的颜色 SimpleSeriesRenderer r =
new SimpleSeriesRenderer(); r.setColor(); renderer.addSeriesRenderer(r); setChartSettings(renderer); //设置描绘器的其他属性 return renderer; } private
void setChartSettings(XYMultipleSeriesRenderer renderer) { renderer.setChartTitle( "个人收支表" ); //设置柱图名称 renderer.setXTitle(
"名单" ); //设置X轴名称 renderer.setYTitle(
"金额" ); //设置Y轴名称 renderer.setXAxisMin(0.5);
//设置X轴的最小值为0.5 renderer.setXAxisMax(5.5);
//设置X轴的最大值为5 renderer.setYAxisMin(0);
//设置Y轴的最小值为0 renderer.setYAxisMax(500);
//设置Y轴最大值为500 renderer.setDisplayChartValues(
true ); //设置是否在柱体上方显示值 renderer.setShowGrid(
true ); //设置是否在图表中显示网格 renderer.setXLabels(0);
//设置X轴显示的刻度标签的个数 } |
接下去我们再来看数据设置器
//数据设置 private
XYMultipleSeriesDataset getBarDataset(Cursor cur) { XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); CategorySeries series = new CategorySeries( "本月金额" ); //声明一个柱形图 //为柱形图添加值 while (cur.moveToNext()) series.add(cur.getDouble(cur.getColumnIndex(
"money" ))); dataset.addSeries(series.toXYSeries());
//添加该柱形图到数据设置列表 return
dataset; } |
现在我们一张简单图表就建立好了,但是我们会发现我们并没有用到_name这个字段,所以为了让X 轴上面的刻度标签显示为 _name 这个字段中的值,我们需要写这样一段代码:
cur.moveToFirst(); int count=1; do { renderer.addTextLabel(count,cur.getString(cur.getColumnIndex("_name))); count++; } while (cur.moveToNext) |
另外需要注意的是
在初始化描绘器的时候一定要加上renderer.setXLabels(0);
现在大功告成 ,我们再为这个Activity添加一个跳转图表的Intent就完成了
Intent intent = ChartFactory.getBarChartIntent ( this
, dataset, renderer, Type.DEFAULT ); |
效果如图: