1.为什么选择aChartEngine给大家讲呢?
因为在android平台上难免会遇到一些图表的处理,aChartEngine是个易学易用的图表库并且功能强大。
2.AChartEngine能做什么?
在我们想绘制一些曲线的时候AChartEngine的功能就体现了出来,我们不用在绘制表格,坐标等等信息,这里也包含放大和缩小。借用AChartEngine的调用接口提高我们的开发速度。它是一个图表库,所以它的功能和图表是分不开的,它主要功能是用图表的方式来显示数据,适用于数据分析,报表显示,当然图表能表达的其他功能它都应该有。下面是常见的图表效果可以在code google上查看:https://code.google.com/p/achartengine/
3.我们怎么用AchartEngine?
3.1 aChartEngine内部类与类的关系结构
XYMultipleSeriesDataset
数据集,用来绘制N条曲线,一条曲线是seriesdata或CategorySeries,同时一条曲线初始化完毕后,可添加到数据集中。
XYMultipleSeriesRenderer 描绘集,一条曲线对应一种描绘方法,同时一条曲线的描绘类是XYSeriesRenderer,可添加到描绘集。
GraphicalView mChartView 填充位置
3.2 具体功能使用
1. 修改背景色或设置背景图片
背景色设置需要设置两项:setMarginsColor(设置四边颜色)以及setBackgroundColor(设置中间背景色)
设置背景图片。
2. setAxisTitleTextSize(16);// 设置坐标轴标题文本大小
3. setChartTitleTextSize(20); // 设置图表标题文本大小
4. setLabelsTextSize(15); // 设置轴标签文本大小
5. setLegendTextSize(15); // 设置图例文本大小
6. renderer.setChartTitle( "个人收支表");//设置柱图名称
7. renderer.setXTitle( "名单" );//设置X轴名称
8. renderer.setYTitle( "金额" );//设置Y轴名称
9. renderer.setXAxisMin(0.5);//设置X轴的最小值为0.5
10. renderer.setXAxisMax(5.5);//设置X轴的最大值为5
11. renderer.setYAxisMin(0);//设置Y轴的最小值为0
12. renderer.setYAxisMax(500);//设置Y轴最大值为500
13. renderer.setDisplayChartValues(true);//设置是否在柱体上方显示值
14. renderer.setShowGrid(true);//设置是否在图表中显示网格
15. renderer.setXLabels(0);//设置X轴显示的刻度标签的个数
16. 如果想要在X轴显示自定义的标签,那么首先要设置renderer.setXLabels(0);其次我们要renderer.addTextLabel()循环添加
17. renderer.setXLabelsAlign(Align.RIGHT);//设置刻度线与X轴之间的相对位置关系
18. renderer.setYLabelsAlign(Align.RIGHT);//设置刻度线与Y轴之间的相对位置关系
19. renderer.setZoomButtonsVisible(true);//设置可以缩放
20. renderer.setPanLimits(newdouble[] { 0, 20, 0, 140 });//设置拉动的范围
21. renderer.setZoomLimits(newdouble[] { 0.5, 20, 1, 150 });//设置缩放的范围
22. renderer.setRange(newdouble[]{0d, 5d, 0d, 100d}); //设置chart的视图范围
23. renderer.setFitLegend(true);// 调整合适的位置
24. renderer.setClickEnabled(true)//设置是否可以滑动及放大缩小;
25. Dataset和Render参数介绍:参考手册
26.ChartView.repaint();是重新绘图的命令
27.关于AChartEngine的点击事件,双击事件,滑动事件均可以用自定义事件解决,但是需要注意的是先设置renderer.setClickEnabled(false);
28.若是添加图形后变形,可以设置 renderer.setInScroll(true);解决,来自于@gupengno1
29.renderer.setGridColor();//设置网格颜色
30.renderer.setAxesColor();//设置坐标轴颜色
2 保证render的数目与dataSet的数目对应即可
参照:
/***************************************************************
* 绘图初始化
*/
private static void renderInit(){
mRenderer.setChartTitle( "温湿度" );
mRenderer.setXTitle( "日期" );
mRenderer.setYTitle( "温湿度值" );
mRenderer.setShowGrid(true);
mRenderer.setAxisTitleTextSize(16);
mRenderer.setLabelsTextSize(15);
mRenderer.setLegendTextSize(15);
mRenderer.setPointSize(5f);
mRenderer.setYAxisMin(0);
mRenderer.setYAxisMax(100);
XYSeriesRenderer r = new XYSeriesRenderer();
r = new XYSeriesRenderer();
r.setPointStyle(PointStyle.CIRCLE);
r.setColor(Color.GREEN);
r.setFillPoints(true);
mRenderer.addSeriesRenderer(r);
mRenderer.setAxesColor(Color.DKGRAY);
mRenderer.setLabelsColor(Color.LTGRAY);
mRenderer.setFitLegend(true);
}
public static void layoutInit(LinearLayout layout){
renderInit();
//LinearLayout layout = (LinearLayout) findViewById(R.id.env_layout_figure);
String seriesTitle = "Series " + (mDataset.getSeriesCount() + 1);
// create a new series of data
CategorySeries series = new CategorySeries(seriesTitle);
series.add(55);
series.add(33);
series.add(52);
series.add(35);
series.add(78);
mDataset.addSeries(series.toXYSeries());
mChartView = ChartFactory.getLineChartView(gContext, mDataset, mRenderer);
// enable the chart click events
layout.addView(mChartView, new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
}