Android 图表开源库 GraphView

这几天有个画图表的需求,搜索了一下,画图表的第三方库有ChartView、PhotoView、HoloGraphLibrary、cropper、achartengine和GraphView。
最后用的是GraphView。GraphView最新版是4.0以上的,GraphView 3.X版本和4.X版本差别很大,网上找到的博客都是基于3.X版本,所以写个基于4.0版本的博客记录一下方便以后查阅。
下载地址:GraphView
效果

    LinearLayout llContainer = (LinearLayout) findViewById(R.id.llContainer);
        GraphView graphView = new GraphView(this);


//数据源:坐标集,BarGraphSeries是柱状图,LineGraphSeries是折线图
    LineGraphSeries<DataPoint> series = new LineGraphSeries<>(new DataPoint[]{new 
    DataPoint(0,0.6),new DataPoint(1,0.3),new DataPoint(2,0.6),new 
    DataPoint(3,0.3),new DataPoint(4,1.2),new DataPoint(5,0.6),new DataPoint(6,0.9)});

        //设置XY轴的下标签
        StaticLabelsFormatter formatter = new StaticLabelsFormatter(graphView);
        formatter.setHorizontalLabels(new String[]{"2015", "1月", "2月", "3月", "4月"});
        formatter.setVerticalLabels(new String[]{"0.3", "0.6", "0.9", "1.2以上"});
        graphView.getGridLabelRenderer().setLabelFormatter(formatter);

    //    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(900,500);
    //    graphView.setLayoutParams(params);
    //
    //
    //设置X轴的最大最小值
        graphView.getViewport().setXAxisBoundsManual(true);
        graphView.getViewport().setMinX(4);
        graphView.getViewport().setMaxX(8);
    //
    //        //设置Y轴的最大最小值
        graphView.getViewport().setYAxisBoundsManual(true);
        graphView.getViewport().setMinY(0);
        graphView.getViewport().setMaxY(1.2);
        //设置是否可以左右滑动。true时当坐标超出显示界限时可以左右滑动
        graphView.getViewport().setScrollable(true);

        //单元格的线,GridLabelRenderer.GridStyle.HORIZONTAL只显示水平线, 
        // GridLabelRenderer.GridStyle.VERTICAL只显示竖线,
        //GridLabelRenderer.GridStyle.NONE不显示格线      
        graphView.getGridLabelRenderer().setGridStyle(GridLabelRenderer.GridStyle.HORIZONTAL);
        graphView.getGridLabelRenderer().setHighlightZeroLines(false);

//设置标签格式化,isValueX为true时是X轴标签,false时是Y轴标签
      graphView.getGridLabelRenderer().setLabelFormatter(new DefaultLabelFormatter() {
            @Override
            public String formatLabel(double value, boolean isValueX) {
                if (!isValueX) {
                        return super.formatLabel(value, isValueX);
                } else {
                    if (value == 7) {
                        return 2015.7 + "";
                    } else {
                    return super.formatLabel(value, isValueX) + "月";
                    }
                }
            }
        });

        //是否画出小圆圈
        series.setDrawDataPoints(true);
        //设置折线颜色
        series.setColor(Color.RED);
        //把坐标集添加到坐标轴
        graphView.addSeries(series);
        llContainer.addView(graphView);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值