achartengine地址:https://code.google.com/p/achartengine/e.google.com/achartenginejava
數據模型:android
XYSeries: 最經常使用的數據結構,主要包括一系列的double型(x,y)點對及一個名稱(title)。api
XYValueSeries:包括一系列的(x,y,value)點對及一個名稱(title)。數據結構
XYMultipleSeriesDataset:包含一系列XYSeries,是最終的數據結構dom
TimeSeries:與XYSeries相似,x變爲Date型,能夠轉化爲XYSeries。ide
CategorySeries:與XYSeries相似,x變爲string型,能夠轉化爲XYSeries。this
MultipleCategorySeries:一系列CategorySeries。google
不一樣的數據模型用於不一樣的圖表顯示。XYSeries能夠用於折線圖、直方圖。CategorySeries能夠用於圓餅圖。每種數據模型都提供了豐富的操做接口,用於插入刪除數據等多種操做。咱們能夠根據須要將數據存爲合適的數據模型。spa
繪製器聲明瞭繪製圖表的類型。主要包括如下幾種。.net
SimpleSeriesRenderer、XYSeriesRenderer用於設置每張圖中每個序列的繪製方法。而DefaultRenderer和XYMultipleSeriesRenderer用於設置整張圖的繪製格式。它們之間的關係相似於XYSeries 與XYMultipleSeriesDataset之間的關係。
要畫一張圖,咱們須要設置好須要繪製的數據及繪製的方法。肯定好data model及renderer後,再調用合適的繪製方法繪製圖形。庫提供了兩種繪製圖形的方法,一種是get***Intent( )(如getLineChartIntent())直接新建一個Activity全屏顯示生成的圖表,另外一種是get***View( )(如getLineChartView())生成一個View,用戶能夠自行設置它的顯示。
主要經過設置幾個對象
一、XYSeries對象:用於存儲一條線的數據信息;
二、XYMultipleSeriesDataset對象:即數據集,可添加多個XYSeries對象,由於一個折線圖中可能有多條線。
三、XYSeriesRenderer對象:主要是用來設置一條線條的風格,顏色啊,粗細之類的。
四、XYMultipleSeriesRenderer對象:主要用來定義一個圖的總體風格,設置xTitle,yTitle,chartName等等總體性的風格,
可添加多個XYSeriesRenderer對象,由於一個圖中能夠有多條折線。
設置完那些對象以後,可經過 org.achartengine.ChartFactory調用數據集XYMultipleSeriesDataset對象
與XYMultipleSeriesRenderer對象來畫圖並將圖加載到GraphicalView中,
ChartFactory有多種api,經過這些api調用來決定是畫折線圖仍是柱狀圖。
繪製的基礎
不少,使用這個引擎的同窗,大多,會被它提供的例子的給嚇到,由於,太多參數了!到最後,都不知道看到那裏去了,其實,仔細研究,這個引擎的使用是很是簡單…()
首先,咱們整理一下思路,通常繪製一個圖表須要:以下圖所示
從圖中,咱們能夠看出,繪製一個圖表咱們其實,咱們只須要理解三個概念
1,ChartFactory ,傳入XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,而後,咱們只需用getXXXChartIntent(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,)方法就能夠進行圖表的顯示
2,XYMutilpleSeriesRenderer 用於進行繪製的設置,添加的XYSeriesRender對象,用於定義繪製的點集合設置,注意數量要和XYMutilpleSeriesDataset,添加的XYseries一致!!!
3,XYMutilpleSeriesDataset 用於數據的存放,添加的XYseries對象,用於提供繪製的點集合的數據
如下爲一個小例子:
public class ShowExamActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 1, 構造顯示用渲染圖 XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); // 2,進行顯示 XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); // 2.1, 構建數據 Random r = new Random(); for (int i = 0; i < 2; i++) { XYSeries series = new XYSeries("test" + (i + 1)); // 填充數據 for (int k = 0; k < 10; k++) { // 填x,y值 series.add(k, 20 + r.nextInt() % 100); } // 須要繪製的點放進dataset中 dataset.addSeries(series); } // 3, 對點的繪製進行設置 XYSeriesRenderer xyRenderer = new XYSeriesRenderer(); // 3.1設置顏色 xyRenderer.setColor(Color.BLUE); // 3.2設置點的樣式 xyRenderer.setPointStyle(PointStyle.SQUARE); // 3.3, 將要繪製的點添加到座標繪製中 renderer.addSeriesRenderer(xyRenderer); // 3.4,重複 1~3的步驟繪製第二個系列點 xyRenderer = new XYSeriesRenderer(); xyRenderer.setColor(Color.RED); xyRenderer.setPointStyle(PointStyle.CIRCLE); renderer.addSeriesRenderer(xyRenderer); // Intent intent = new LinChart().execute(this); Intent intent = ChartFactory .getLineChartIntent(this, dataset, renderer); startActivity(intent); } }
這裏有一點要注意,咱們是用內置的activity進行咱們的圖表的顯示:因此,咱們要在AndroiManifest裏面添加一句
<activity android:name="org.achartengine.GraphicalActivity" />
效果: