折线 曲线图的实现,图表
框架,图表2016-06-01
这里主要说的是hellocharts框架
最新的开源项目地址 https://github.com/lecho/hellocharts-android/releases
1.自己做的一个折线图
项目的源码http://www.oschina.net/code/snippet_2702417_56390
Axis axisX = new Axis(axisValues); // X轴,axisValues自己传入的x轴上的坐标 data.setAxisXBottom(axisX); chartView.setLineChartData(data); // chartView.setViewportCalculationEnabled(false); //设置了当前的视图的 范围(y轴是整个范围,x轴为1/3的视图,所以此时能够在x轴方向上滑动) chartView.getChartComputator().setCurrentViewport(0, maxTop, numberOfPoints/3, -6);
Axis axisY = new Axis().setHasLines(true);// 添加y轴的线 //自定义的坐标显示的格式,这里就是横坐标的数值之后加上".0%"字样 axisY.setFormatter(new SimpleValueFormatter(0, true, new char[] { 1, 2, 3 }, new char[] { '.','0','%' })); data.setAxisYLeft(axisY); //data.setBaseValue(Float.NEGATIVE_INFINITY); resetViewportY(chartView);
饼图每个模块的点击监听 //饼图的点击监听 piechartView.setOnValueTouchListener(new PieChartOnValueTouchListener() { @Override public void onValueTouched(int paramInt, ArcValue paramArcValue) { // TODO Auto-generated method stub paramArcValue.getValue();//这个模块所占的百分比 } @Override public void onNothingTouched() { // TODO Auto-generated method stub } });
List<AxisValue> values = new ArrayList<AxisValue>(); for( Float i = -3.5f; i < 4.0f; i+= 0.5f){//以0.5的跨度增长 AxisValue value = new AxisValue(i,(i.toString()+"%").toCharArray()); values.add(value); } //自定义y轴坐标 axisY.setValues(values); axisY.setMaxLabelChars(5);
//坐标轴 Axis axisX = new Axis(); //X轴 axisX.setHasTiltedLabels(true); //X坐标轴字体是斜的显示还是直的,true是斜的显示 axisX.setTextColor(Color.WHITE); //设置字体颜色 //axisX.setName("date"); //表格名称 axisX.setTextSize(10);//设置字体大小 axisX.setMaxLabelChars(8); //最多几个X轴坐标,意思就是你的缩放让X轴上数据的个数7<=x<=mAxisXValues.length axisX.setValues(mAxisXValues); //填充X轴的坐标名称 data.setAxisXBottom(axisX); //x 轴在底部 //data.setAxisXTop(axisX); //x 轴在顶部 axisX.setHasLines(true); //x 轴分割线 // Y轴是根据数据的大小自动设置Y轴上限(在下面我会给出固定Y轴数据个数的解决方案) Axis axisY = new Axis(); //Y轴 axisY.setName("");//y轴标注 axisY.setTextSize(10);//设置字体大小 data.setAxisYLeft(axisY); //Y轴设置在左边 //data.setAxisYRight(axisY); //y轴设置在右边 //设置行为属性,支持缩放、滑动以及平移 lineChart.setInteractive(true); lineChart.setZoomType(ZoomType.HORIZONTAL); lineChart.setMaxZoom((float) 2);//最大方法比例 lineChart.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
axisX.setFormatter(new SimpleValueFormatter(0, false, null, ":00".toCharArray()));