zoukankan      html  css  js  c++  java
  • Android中图表AChartEngine学习使用与例子

    很多时候项目中我们需要对一些统计数据进行绘制表格,更多直观查看报表分析结果。基本有以下几种方法:

    1:可以进行android  api进行draw这样的话,效率比较低

    2:使用开源绘表引擎,这样效率比较高.下面就介绍一种。

    AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。

    该项目地址位于: http://code.google.com/p/achartengine/

    你可以选择合适的版本下载,每个版本都有一个jar包、实例源代码和java doc提供下载。当前最新版本为1.1.0。

      

    上面是两幅用该引擎绘制出来的图标例子.

    如上图所示:可以有demo源代码,文档和jar包,根据所需进行下载:

    下面稍微演示一下生成一个树状图:

    1:新建项目,把jar引入进去

    2:在Androidmanifest.xml文件中进行配置文件

     <activity android:name="org.achartengine.GraphicalActivity" />

    因为接下来要考这个Activity进行显示图表

    3:下面创建一个AChart接口 

    1. public interface AChartAbstract {  
    2.       
    3.     /** 
    4.      * 获取一个当前类型图标的Intent实例 
    5.      */  
    6.     public Intent getIntent(Context context);  
    7. }  

    4:创建BarChart.java进行准备数据源和引擎设置

      

    1. public class BarChart implements AChartAbstract {  
    2.   
    3.     public Intent getIntent(Context context) {  
    4.         Intent mIntent=ChartFactory.getBarChartIntent(context, getDataSet(), getRenderer(), Type.STACKED, "当月开票金额树状图");  
    5.         return mIntent;  
    6.     }  
    7.   
    8.     /** 
    9.      * 构造数据 
    10.      * @return 
    11.      */  
    12.     public XYMultipleSeriesDataset getDataSet() {  
    13.         // 构造数据  
    14.         XYMultipleSeriesDataset barDataset = new XYMultipleSeriesDataset();  
    15.         CategorySeries barSeries = new CategorySeries("2014年3月");  
    16.         barSeries.add(865.5969);  
    17.         barSeries.add(2492.6479);  
    18.         barSeries.add(891.0137);  
    19.         barSeries.add(0.0);  
    20.         barSeries.add(691.0568);  
    21.         barDataset.addSeries(barSeries.toXYSeries());  
    22.         return barDataset;  
    23.     }  
    24.   
    25.     /** 
    26.      * 构造渲染器 
    27.      * @return 
    28.      */  
    29.     public XYMultipleSeriesRenderer getRenderer() {  
    30.         XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();  
    31. //      renderer.setChartTitle("当月开票");  
    32. //      // 设置标题的字体大小  
    33. //      renderer.setChartTitleTextSize(16);  
    34.         renderer.setXTitle("事业部");  
    35.         renderer.setYTitle("单位(万元)");  
    36.         renderer.setAxesColor(Color.WHITE);  
    37.         renderer.setLabelsColor(Color.WHITE);  
    38.         // 设置X轴的最小数字和最大数字  
    39.         renderer.setXAxisMin(0.5);  
    40.         renderer.setXAxisMax(5.5);  
    41.         // 设置Y轴的最小数字和最大数字  
    42.         renderer.setYAxisMin(0);  
    43.         renderer.setYAxisMax(3000);  
    44.         renderer.addXTextLabel(1, "电网");  
    45.         renderer.addXTextLabel(2, "通信");  
    46.         renderer.addXTextLabel(3, "宽带");  
    47.         renderer.addXTextLabel(4, "专网");  
    48.         renderer.addXTextLabel(5, "轨交");  
    49.         renderer.setZoomButtonsVisible(true);  
    50.         // 设置渲染器允许放大缩小  
    51.         renderer.setZoomEnabled(true);  
    52.         // 消除锯齿  
    53.         renderer.setAntialiasing(true);  
    54.         // 设置背景颜色  
    55.         renderer.setApplyBackgroundColor(true);  
    56.         renderer.setBackgroundColor(Color.GRAY);  
    57.         // 设置每条柱子的颜色  
    58.         SimpleSeriesRenderer sr = new SimpleSeriesRenderer();  
    59.         sr.setColor(Color.YELLOW);  
    60.         renderer.addSeriesRenderer(sr);  
    61.         // 设置每个柱子上是否显示数值  
    62.         renderer.getSeriesRendererAt(0).setDisplayChartValues(true);  
    63.         // X轴的近似坐标数  (这样不显示横坐标)  
    64.         renderer.setXLabels(0);  
    65.         // Y轴的近似坐标数  
    66.         renderer.setYLabels(6);  
    67.         // 刻度线与X轴坐标文字左侧对齐  
    68.         renderer.setXLabelsAlign(Align.LEFT);  
    69.         // Y轴与Y轴坐标文字左对齐  
    70.         renderer.setYLabelsAlign(Align.LEFT);  
    71.         // 允许左右拖动,但不允许上下拖动.  
    72.         renderer.setPanEnabled(true, false);  
    73.         // 柱子间宽度  
    74.         renderer.setBarSpacing(0.5f);  
    75.         // 设置X,Y轴单位的字体大小  
    76.         renderer.setAxisTitleTextSize(20);  
    77.         return renderer;  
    78.     }  


    最后主函数直接

      

    1. Intent lineIntent = new BarChart().getIntent(this);  
    2.             startActivity(lineIntent);  

    直接启动Androidmanifest.xml已经配置的activity就可以显示树状图了。


    上面的注释已经写的比较清楚了。基本是可以明白的。更多图表的例子可以在http://code.google.com/p/achartengine/中下载demo

  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/jiayonghua/p/5118093.html
Copyright © 2011-2022 走看看