‘壹’ 如何在android画分析图(例如 柱状图、趋势图、饼图)
目前android上图标引擎并不少见,像aChartEngine就能很好的完成绘图:
aChartEngine支持:1、linechart(折线图)2、areachart(面积图;分区图,对比图)3、scatterchart(散点图)4、timechart(时间图;进度表)5、barchart(条形图;柱状图)6、piechart(饼图)7、bubblechart(气泡图)8、doughnutchart(圆环图)9、range(high-low)barchart(范围条形图)10、dialchart/gauge(拨号盘/压力表)11、combined(anycombinationofline,cubicline,scatter,bar,rangebar,bubble)chart(组合图)12、cubiclinechart(立方折线图)
上述所有支持的图表类型,都可以包含多个系列,都支持水平(默认)或垂直方式展示图表,并且支持许多其他的自定义功能。所有图表都可以建立为一个view,也可以建立为一个用于启动activity的intent.
下面是一个饼状图的源码事例:
package org.achartengine.chartdemo.demo.chart;
import org.achartengine.ChartFactory;
import org.achartengine.renderer.DefaultRenderer;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
public class BudgetPieChart extends AbstractDemoChart {
public String getName() {
return "Budget chart";
}
public String getDesc() {
return "The budget per project for this year (pie chart)";
}
public Intent execute(Context context) {
double[] values = new double[] { 12, 14, 11, 10, 19 };//饼图分层5块,每块代表的数值
int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLOW, Color.CYAN };//每块饼图的颜色
DefaultRenderer renderer = buildCategoryRenderer(colors);
renderer.setZoomButtonsVisible(true);//设置显示放大缩小按钮
renderer.setZoomEnabled(true);//设置允许放大缩小.
renderer.setChartTitleTextSize(20);//设置图表标题的文字大小
return ChartFactory.getPieChartIntent(context, buildCategoryDataset("Project budget", values),
renderer, "Budget");//构建Intent, buildCategoryDataset是调用AbstraDemoChart的构建方法.
}
}
‘贰’ android中数据的折线图怎么实现
推荐你几个相关开源项目,可以根据需要自己选择,自己画还是比较麻烦的:MPAndroidChart强大的图表绘制工具,支持折线图、面积图、散点图、时间图、柱状图、条图、饼图、气泡图、圆环图、范围(高至低)条形图、网状图及各种图的结合;支持图的拖拽缩放;支持Android2.2以上,支持横纵轴缩放,多指缩放,展现动画、高亮、保存到sdcard、从文件读取图表achartengine强大的图表绘制工具,支持折线图、面积图、散点图、时间图、柱状图、条图、饼图、气泡图、圆环图、范围(高至低)条形图、拨号图/表、立方线图及各种图的结合GraphView绘制图表和曲线图的View,可用于Android上的曲形图、柱状图、波浪图展示HoloGraphLibrary绘制线状图、柱状图、饼状图XCL-ChartsXCL-Charts基于原生的Canvas来绘制各种图表,在设计时,尽量在保证开发效率的同时,给使用者提供足够多的定制化能力。因此使用简便,同时具有相当灵活的定制能力。目前支持3D/非3D柱形图(BarChart)、3D/非3D饼图(PieChart)、堆积图(StackedBarChart)、面积图(AreaChart)、折线图(LineChart)、曲线图(SplineChart)、环形图(DountChart)、南丁格尔玫瑰图(RoseChart)、仪表盘(DialChart)、刻度盘(GaugeChart)、雷达图(RadarChart)、圆形图(CircleChart)等图表。其它特性还包括支持图表缩放、手势移动、动画显示效果、高密度柱形显示、图表分界定制线、多图表的混合显示及同数据源不同类型图表切换等。EazeGraphAndroid图表库,支持柱状图、分层柱状图、饼状图、线性图WilliamChart绘制图表的库,支持LineChartView、BarChartView和StackBarChartView三中图表类型,并且支持Android2.2及以上的系统。HelloChartsforAndroid支持折线图、柱状图、饼图、气泡图、组合图;支持预览、放大缩小,滚动,部分图表支持动画;支持Android2.2以上这些项目都可以在GitHub搜索到。
‘叁’ Android折线图,曲线图,柱状图,饼状图
ChartView是一个Android开源图表库。目前仅支持折线图,曲线图,柱状图,饼状图,以及折线图和曲线图点击之后的状态变化,可以选择是画一个图片还是一个背景框。
折线图和曲线图:
饼状图有内圆:
饼状图没有内圆:
其他同折线图
github地址: https://github.com/Veken/LineChartView
‘肆’ android折线图
packagecom.example.testcanvasdraw;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.os.Handler;importandroid.os.Message;importandroid.util.AttributeSet;importandroid.view.View;publicclassMyViewextendsView{privateintXPoint=60;privateintYPoint=260;privateintXScale=8;//刻度长度privateintYScale=40;privateintXLength=380;privateintYLength=240;privateintMaxDataSize=XLength/XScale;privateList<Integer>data=newArrayList<Integer>();privateString[]YLabel=newString[YLength/YScale];privateHandlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){if(msg.what==0x1234){MyView.this.invalidate();}};};publicMyView(Contextcontext,AttributeSetattrs){super(context,attrs);for(inti=0;i<YLabel.length;i++){YLabel[i]=(i+1)+"M/s";}newThread(newRunnable(){@Overridepublicvoidrun(){while(true){try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}if(data.size()>=MaxDataSize){data.remove(0);}data.add(newRandom().nextInt(4)+1);handler.sendEmptyMessage(0x1234);}}}).start();}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);Paintpaint=newPaint();paint.setStyle(Paint.Style.STROKE);paint.setAntiAlias(true);//去锯齿paint.setColor(Color.BLUE);//画Y轴canvas.drawLine(XPoint,YPoint-YLength,XPoint,YPoint,paint);//Y轴箭头canvas.drawLine(XPoint,YPoint-YLength,XPoint-3,YPoint-YLength+6,paint);//箭头canvas.drawLine(XPoint,YPoint-YLength,XPoint+3,YPoint-YLength+6,paint);//添加刻度和文字for(inti=0;i*YScale<YLength;i++){canvas.drawLine(XPoint,YPoint-i*YScale,XPoint+5,YPoint-i*YScale,paint);//刻度canvas.drawText(YLabel[i],XPoint-50,YPoint-i*YScale,paint);//文字}//画X轴canvas.drawLine(XPoint,YPoint,XPoint+XLength,YPoint,paint);System.out.println("Data.size="+data.size());if(data.size()>1){for(inti=1;i<data.size();i++){canvas.drawLine(XPoint+(i-1)*XScale,YPoint-data.get(i-1)*YScale,XPoint+i*XScale,YPoint-data.get(i)*YScale,paint);}}}}
上面绘制折线部分我们还有一种方式同样可以实现:
if(data.size()>1){Pathpath=newPath();path.moveTo(XPoint,YPoint-data.get(0)*YScale);for(inti=1;i<data.size();i++){path.lineTo(XPoint+i*XScale,YPoint-data.get(i)*YScale);}canvas.drawPath(path,paint);}
‘伍’ Android动态增加数据点的折线图,要怎么实现
首先打开数据源(即已经制作好的EXCEL表格)--选中表格的主体部分--单击图表向导按钮(显示比例左侧)--选择“标准类型”标签--在“图表类型”窗口中选择“折线图”--完成。如果修改数据源中的数据,图表形状随之改变。
‘陆’ android编程中遇到问题,如何用achartengine绘制X轴上数值有反复的折线图例如下图
1、onListItemClick方法
当点击“柱状图”菜单时,使用 ChartFactory.getLineChrtIntent获得Intdent:
Intent intent = ChartFactory.getLineChartIntent(this, getDataset(),getRenderer());
2、getDataset方法
使用随机数构建了2个系列中的点坐标x和y:
int x=r.nextInt()%10;// x:0-10之间的随机整数
inty=50+r.nextInt()%50;// y:50-100之间的随机整数
series.add(x,y);// 往系列中加入一个随机分布的点
由于使用随机数作为点的x、y坐标,所以形成的折线图是很不规律的
3、getRenderer方法
构建了XYMultipleSeriesRenderer,在其中加入了两个Series。注意,这里的Series要用XYSeriesRenderer ,而不能使用 SimpleSeriesRenderer。
‘柒’ Android怎么做数据折线图
HoloGraphLibrary
项目地址:https://github.com/Androguide/HoloGraphLibrary
简介:这是一个十分简单的图表控件,源码量在3千行左右。使用简单,项目自带sample作为使用指导。
MPAndroidChart
项目地址:https://github.com/PhilJay/MPAndroidChart
简介:与Holo相比要复杂和强大很多,代码量在4万行左右。不过带的例子有了很好的帮助,我们用起来不算难。饼图带很炫的加载动画,如果对界面要求高交互性好,推荐此控件。