『壹』 如何在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萬行左右。不過帶的例子有了很好的幫助,我們用起來不算難。餅圖帶很炫的載入動畫,如果對界面要求高交互性好,推薦此控制項。