AchartEngine制作图表
2016-02-23 12:35
369 查看
最近公司项目运用到了关于图表这一块的知识,用到了Android AchartEngine,这是为Android应用而设计的绘图工具库,能够支持多种图表类型。
这里有比较详细的关于AchartEngine的介绍与使用http://blog.csdn.net/lk_blog/article/details/7645509
这里主要谈的是自己对AchartEngine的一些理解与使用心得。
1、认识AchartEngine
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/b6066278c014e2250056abe00e25e0a9)
如图所示,通过achartengine.ChartFactory调用数据集XYMultipleSeriesDataset对象与XYMultipleSeriesRenderer对象来设置好需要绘制的数据以及绘制的方法,然后调用绘制方法来绘制图表。AchartEngine提供了两种绘制图表的方法:
ChartFactory.getXXXChartIntent(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,):直接新建一个Activity全屏显示生成的图表。
ChartFactory.getXXXChartView(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,):生成一个GraphicalView,然后在需要的布局文件中Add进去即可。
ChartFactory有多种api,通过这些api调用来决定自己需要的图表。
1.XYMultipleSeriesRenderer对象:包含一系列XYSeriesRender,用来设置图表的整体风格,整体样式
2.XYMultipleSeriesDataset对象:包含一系列XYSeries,用于数据的存放,提供绘制的点集合的数据
3.XYSeriesRenderer对象:用来设置一条线条的风格,颜色啊,粗细之类的
4.XYSeries对象:用于存储一条线的数据信息
2、使用AchartEngine
首先将AchartEngine的第三讲jar包导入到自己的项目当中去,项目当中我用的是第二种方法来绘制图表。布局文件很简单,就是一个简单的线性布局,以后作为添加GraphicalView的布局。
然后就是在代码里面进行设置:
注解已经很详细,其实都是一些属性的设置,最后添加在对应的布局当中即可,效果图下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/3242c478ca49700e1c9c4a293ee066b6)
项目中运用到的是AchartEngine制作的柱状图,属性设置都差不多,效果图如下:
这里有比较详细的关于AchartEngine的介绍与使用http://blog.csdn.net/lk_blog/article/details/7645509
这里主要谈的是自己对AchartEngine的一些理解与使用心得。
1、认识AchartEngine
如图所示,通过achartengine.ChartFactory调用数据集XYMultipleSeriesDataset对象与XYMultipleSeriesRenderer对象来设置好需要绘制的数据以及绘制的方法,然后调用绘制方法来绘制图表。AchartEngine提供了两种绘制图表的方法:
ChartFactory.getXXXChartIntent(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,):直接新建一个Activity全屏显示生成的图表。
ChartFactory.getXXXChartView(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,):生成一个GraphicalView,然后在需要的布局文件中Add进去即可。
ChartFactory有多种api,通过这些api调用来决定自己需要的图表。
1.XYMultipleSeriesRenderer对象:包含一系列XYSeriesRender,用来设置图表的整体风格,整体样式
2.XYMultipleSeriesDataset对象:包含一系列XYSeries,用于数据的存放,提供绘制的点集合的数据
3.XYSeriesRenderer对象:用来设置一条线条的风格,颜色啊,粗细之类的
4.XYSeries对象:用于存储一条线的数据信息
2、使用AchartEngine
首先将AchartEngine的第三讲jar包导入到自己的项目当中去,项目当中我用的是第二种方法来绘制图表。布局文件很简单,就是一个简单的线性布局,以后作为添加GraphicalView的布局。
<LinearLayout android:id="@+id/sensors_data_chart_ll" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" android:orientation="horizontal" > </LinearLayout>
然后就是在代码里面进行设置:
private void initviews() { XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); // 构造数据 Random random = new Random(); XYSeries series = new XYSeries("折线一"); for (int i = 1; i < 10; i++) { series.add(i, random.nextInt(100)); } // 需要绘制的点放在dataset当中 dataset.addSeries(series); // 对点的绘制进行描述 XYSeriesRenderer xyRenderer = new XYSeriesRenderer(); // 设置颜色 xyRenderer.setColor(Color.BLUE); // 设置点的风格 xyRenderer.setPointStyle(PointStyle.CIRCLE); // 设置空心实心 xyRenderer.setFillPoints(true); // 设置XY轴名称 renderer.setXTitle("时间"); renderer.setYTitle("温度"); // 设置标题 renderer.setChartTitle("折线图"); // 设置Y轴最大值 renderer.setYAxisMax(100); renderer.setXAxisMax(10); renderer.setXAxisMin(0); renderer.setYAxisMin(0); // 设置XY轴颜色 renderer.setAxesColor(Color.BLACK); renderer.setLabelsColor(Color.BLACK); // 设置XY轴显示 renderer.setYLabels(10); renderer.setXLabels(10); // 设置 是否显示图例 renderer.setShowLegend(true); // 设置不显示放大缩小图标 renderer.setZoomEnabled(false); // 设置是否支持图表缩放 renderer.setPanEnabled(false, false); // 设置是否可点击 renderer.setClickEnabled(false); // 是否显示网格 renderer.setShowGrid(true); // 设置空白区的颜色 renderer.setMarginsColor(Color.WHITE); renderer.setBackgroundColor(getResources().getColor(R.color.white)); // 设置坐标轴文字颜色 renderer.setXLabelsColor(Color.BLACK); renderer.setYLabelsColor(0, Color.BLACK); // 刻度线与刻度标注之间的相对位置关系 renderer.setXLabelsAlign(Align.CENTER); // 刻度线与刻度标注之间的相对位置关系 renderer.setYLabelsAlign(Align.RIGHT); renderer.setZoomButtonsVisible(false);// 是否显示放大缩小按钮 renderer.setMargins(new int[] { 50, 50, 20, 20 });// 设置图表的外边框(上/左/下/右) renderer.setAxisTitleTextSize(20);// 设置轴标题文字的大小 renderer.setChartTitleTextSize(30);// 设置整个图表标题文字的大小 renderer.setLabelsTextSize(15);// 设置轴刻度文字的大小 renderer.setLegendTextSize(15);// 设置图例文字大小 renderer.setPointSize(5);// 设置点的大小(图上显示的点的大小和图例中点的大小都会被设置) // 将要绘制的点添加到坐标绘制中 renderer.addSeriesRenderer(xyRenderer); // 折线图 LinearLayout linearlayout = (LinearLayout) findViewById(R.id.sensors_data_chart_ll); GraphicalView view = ChartFactory.getLineChartView(this, dataset, renderer); linearlayout.addView(view, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); }
注解已经很详细,其实都是一些属性的设置,最后添加在对应的布局当中即可,效果图下:
项目中运用到的是AchartEngine制作的柱状图,属性设置都差不多,效果图如下:
相关文章推荐
- 程序员面试题精选100题(34)-数组中只出现一次的数字[算法]
- 初学STM32遇到的一些问题
- ios海哥开发笔记 (海哥原创,iOS 之NSCoding )
- MyEclipse 2014 搭建 Android 开发环境
- 禁用必应搜索结果页上的悬停英汉词典
- 构架、框架、设计模式之间的关系简述
- 前端一道面试题,考察变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- MySQL注释中的sql也可能执行
- 您好 Snackbar, 再见Toast
- ios海哥开发笔记 (海哥原创,C语言之堆栈入门——堆和栈的区别 )
- MySQL注释中的sql也可能执行
- java反射机制详解
- 安卓应用运行、卸载、清除数据、强制停止
- SmartBusinessDevFramework架构设计-3:考虑开源?
- 如何写出好的C代码
- iOS海哥开发笔记 (海哥原创,C语言之内存四区模型和函数调用模型)
- iOS软件安装图文教程(免证书)
- JAVA锁漫谈,最好的锁是无锁
- IOS系列——NStimer