zoukankan      html  css  js  c++  java
  • android图表引擎AchartEngine制作柱图

    废话不多说 关于android图表制作引擎AchartEngine的介绍我这里直接略去 大家想要了解它可以直接百度。

    网上关于
    AChartEngine绘制柱状图的介绍非差稀少,而AchartEngine它本身Api帮助文档写的非常的简略,给我们学习带来很大的不便。所以我在这里凭借个人的理解,以一个简单的柱状图的例子来解释AchartEngine绘制柱图的一个过程,希望会对大家有所帮助。

     

    首先简略的理解一下AchartEngineAPI

    AchartEngine
    的提供的Api非常的简单,其中最重要的两个概念就是数据设置器(dataset)和所谓的描绘器(renderer)。顾名思义,数据设置器就是为我们提供了一系列对图表进行值传入的方法,而描绘器为我们提供了修改图表外观的一些方法。

     

    本例结合简单的SQLite数据库表来建立一张柱状图

     

    以下是我们要用到的数据库表的信息:

    其实待会我们要用到的 只有_namemoney两个字段,大家只要关注这两个字段即可

    首先 我们打开本地数据库 得到游标:

    接下去我们要声明一个数据设置器 和一个描绘器

    其中getBarRenderer()函数是我们自定义的方法,用于初始化描绘器,其方法具体如下:

    //描绘器设置
     
        public XYMultipleSeriesRenderer getBarRenderer() {
     
            XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
     
                        
     
    //通过SimpleSeriesDenderer设置描绘器的颜色
     
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
     
            r.setColor(Color.RED);
     
            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 );
     
    

    效果如图:

  • 相关阅读:
    03《高效程序员的45个习惯》阅读笔记2
    02《高效程序员的45个习惯》阅读笔记1
    关于“foreach循环”中遇到的几个问题总结
    pageContext.request.contextPath} JSP取得绝对路径
    读书笔记1
    java中字节数组byte[]和字符(字符串)之间的转换
    本学期阅读计划
    问题账户需求分析
    准备食物
    【bzoj4551】【NOIP2016模拟7.11】树
  • 原文地址:https://www.cnblogs.com/tijing/p/2682854.html
Copyright © 2011-2022 走看看