android实现柱状图,曲线图,饼状图,各类报表图


achartengine官网:http://code.google.com/p/achartengine/

当我们做报表,做数据统计分析时候,我们有时候需要用图形来简易的展示它们,比如柱状图,饼状图,折线图,曲线图,等等。

那么我们就可以使用开源的achartengine来帮我们完成它。

achartengine使用很简单方便,有详细的帮助文档,可以根据自己需求,设置不同的属性,完成我们需要的各种报表图形。柱状图,饼状图,折线图,曲线图都能实现,而且有很多的不同风格。

官网有详细的使用和帮助文档了,使用也很简单,有例子简要使用说明:


首先把官方的demo导入eclipse,看看效果,里面有各种各样的图:

到官网下载最新的zip包,下3个:

第一个里面是一个demo,第2个是帮助文档,第3个是开发用的包。

解压第一个,然后——导入demo,我导入后,项目使用的sdk是1.5版本的,项目提示有错误,修改错误:

点击项目,右键——properties——android——选择一个高点的sdk,我选的2.2,点击ok,错误消失,如果还没消失,点击project——clearn。运行,就可以看见demo效果了。


自己根据demo做了3个图,曲线图,饼状图,柱状图,里面有详细的注解,代码片段:


int[] colors = new int[] { Color.RED, Color.GRAY, Color.GREEN }; // 用于曲线设置曲线的颜色和曲线的名字颜色
        PointStyle[] styles = new PointStyle[] { PointStyle.SQUARE,
                PointStyle.DIAMOND, PointStyle.TRIANGLE }; // 曲线的样式,有多种
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); // 最主要的一个对象,用于设置曲线的很多参数配置
        renderer.setAxisTitleTextSize(20); // 设置表示x轴,Y轴信息文本的大小
        renderer.setChartTitleTextSize(20); // 曲线图说明文字的大小
        renderer.setLabelsTextSize(20); // x,y轴上面坐标文本的字体大小
        renderer.setLegendTextSize(20); // 设置下方表示曲线名字的文本字体大小
        renderer.setGridColor(Color.LTGRAY); // 设置网格边框的颜色
        renderer.setPointSize(6f); // 设置曲线上面小图形的大小
        renderer.setMargins(new int[] { 50, 50, 55, 10 }); // 数据分别为曲线图离屏幕的上左下右的间距
        renderer.setXLabels(12); // 网格x轴的大概条数
        renderer.setYLabels(20); // 网格Y轴的大概条数
        renderer.setShowGrid(true); // 是否显示网格
        renderer.setApplyBackgroundColor(true); // 是否可以设置背景颜色,默认为false
        // renderer.setMarginsColor(Color.GREEN); //设置外面背景色,坐标颜色也会随着变话,不知道什么情况
        renderer.setBackgroundColor(Color.WHITE); // 设置网格背景颜色,需要和上面属性一起用
        renderer.setYLabelsAlign(Align.RIGHT); // 以Y轴的哪个地方对其
        renderer.setZoomButtonsVisible(true); // 是否显示右下角的放大缩小还原按钮
        renderer.setPanLimits(new double[] { 1, 10, -10, 40 }); // 滚动後显示的数据,和这里设置一样则不滚动
                                                                // renderer.setXAxisMin(1);
                                                                // renderer.setXAxisMax(10);
        renderer.setZoomLimits(new double[] { 100, 50, 20, 5 }); // 点击放大缩小时候使用
        renderer.setChartTitle("未来3天 天气情况"); // 设置种上文本类荣
        renderer.setXTitle("时间"); // 设置x轴名字
        renderer.setYTitle("温度"); // y轴名字
        renderer.setXAxisMin(6); // x轴坐标最小值
        renderer.setXAxisMax(24); // x轴坐标最大值
        renderer.setYAxisMin(-10); // y轴最小值
        renderer.setYAxisMax(40); // y值最大值
        renderer.setLabelsColor(Color.RED);
        renderer.setPanEnabled(false);
        renderer.setZoomEnabled(false);
        renderer.setAxesColor(Color.BLACK); // x,y轴的颜色
        int length1 = colors.length;
        for (int i = 0; i < length1; i++) { // 设置颜色


代码片段2:

double[] values = new double[] { 12, 14, 11, 10, 19 }; // 每一块的百分比
        int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA,
                Color.YELLOW, Color.CYAN }; // 每一块的颜色
        DefaultRenderer renderer = new DefaultRenderer(); // 设置各项参数用
        renderer.setLabelsTextSize(15); // 图上说明文字的大小
        renderer.setLegendTextSize(25); // 图下面说明文字的大小
        renderer.setMargins(new int[] { 100, 30, 15, 40 }); // 图离上做下右的间距,貌似没用
        renderer.setZoomButtonsVisible(true); // 设置放大缩小按钮是否可见
        renderer.setPanEnabled(false); // 是否可以拖动
        renderer.setLabelsColor(Color.WHITE); // 图上说明文字的颜色
        renderer.setApplyBackgroundColor(true);
        renderer.setBackgroundColor(Color.GRAY); // 设置背景颜色,和上面renderer.setApplyBackgroundColor(true);
                                                    // 一起使用才有效
        renderer.setAxesColor(Color.RED);
        for (int color : colors) { // 渲染每块区域的颜色
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
            r.setColor(color);
            renderer.addSeriesRenderer(r);
        }
        CategorySeries series = new CategorySeries("饼状图"); // 画饼状图对象
        series.add("二月份", values[0]); // 设置其说明文字和所占的比例大小
        series.add("三月份", values[1]);
        series.add("四月份", values[2]);
        series.add("五月份", values[3]);
        series.add("六月份", values[4]);

        return ChartFactory.getPieChartIntent(context, series, renderer, "饼状态");


demo截图:

             


demo下载地址:http://download.csdn.net/detail/hhhccckkk/5366991



Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐