Android中使用achartengine生成圖表

jopen 10年前發布 | 22K 次閱讀 Android開發 移動開發 aChartEngine

achartengine是google的一個開源項目,可以在https://code.google.com/p/achartengine/ 下載技術文檔,jar包以及項目源代碼

demo下載:https://code.google.com/p/achartengine/downloads/list

Android中使用achartengine生成圖表

一、餅狀圖

新建工程,添加achartengine  jar包

PieChart.java

</div> </div>

    package com.meritit.footlottery.view;

import org.achartengine.ChartFactory;  
import org.achartengine.model.CategorySeries;  
import org.achartengine.renderer.DefaultRenderer;  
import org.achartengine.renderer.SimpleSeriesRenderer;  

import android.content.Context;  
import android.graphics.Color;  
import android.view.View;  

public class PieChart {  
    public View execute(Context context) {  
        int[] colors = new int[] { Color.RED, Color.YELLOW, Color.BLUE };  
        DefaultRenderer renderer = buildCategoryRenderer(colors);  
        CategorySeries categorySeries = new CategorySeries("Vehicles Chart");  
        categorySeries.add("勝 ", 30);  
        categorySeries.add("負", 20);  
        categorySeries.add("平", 60);  
        return ChartFactory  
                .getPieChartView(context, categorySeries, renderer);  
    }  

    protected DefaultRenderer buildCategoryRenderer(int[] colors) {  
        DefaultRenderer renderer = new DefaultRenderer();  
        for (int color : colors) {  
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();  
            r.setColor(color);  
            renderer.addSeriesRenderer(r);    
        }  
        //顯示標簽  
        renderer.setShowLabels(true);  
        //不顯示底部說明  
        renderer.setShowLegend(false);  
        //設置標簽字體大小  
        renderer.setLabelsTextSize(15);  
        renderer.setLabelsColor(Color.BLACK);  
        renderer.setZoomEnabled(false);  
        renderer.setPanEnabled(false);  
        return renderer;  
    }  
}  </pre><br />

使用方法

    //View pieChart = new PieChart().execute(this);  
    //chartArea.addView(pieChart);  
</div> </div> 獲得一個View對象,在需要添加的布局下面直接addView

二、柱狀圖

</div> </div>

    package com.meritit.footlottery.view;

import java.util.Random;  

import org.achartengine.ChartFactory;  
import org.achartengine.chart.BarChart.Type;  
import org.achartengine.model.CategorySeries;  
import org.achartengine.model.XYMultipleSeriesDataset;  
import org.achartengine.renderer.DefaultRenderer;  
import org.achartengine.renderer.SimpleSeriesRenderer;  
import org.achartengine.renderer.XYMultipleSeriesRenderer;  

import com.meritit.footlottery.R;  

import android.content.Context;  
import android.graphics.Color;  
import android.view.View;  

public class BarChart {  
    private Context context;  
    public View execute(Context context) {  
        this.context = context;  
        return ChartFactory  
                .getBarChartView(context, getBarDemoDataset(), getBarDemoRenderer(), Type.DEFAULT);  
    }  

    /**  
     * XYMultipleSeriesDataset 類型的對象,用于提供圖表需要表示的數據集,  
     * 這里我們用 getBarDemoDataset 來得到它。  
     */    
    private XYMultipleSeriesDataset getBarDemoDataset() {    
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();    
        final int nr = 10;    
        Random r = new Random();    
        for (int i = 0; i < 3; i++) {    
            CategorySeries series = new CategorySeries("球隊 " + (i + 1));    
            for (int k = 0; k < nr; k++) {    
                series.add(100 + r.nextInt() % 100);    
            }    
            dataset.addSeries(series.toXYSeries());    
        }    
        return dataset;    
    }   

    /**  
     * XYMultipleSeriesRenderer 類型的對象,用于提供圖表展現時的一些樣式,  
     * 這里我們用 getBarDemoRenderer 方法來得到它。  
     * getBarDemoRenderer 方法構建了一個 XYMultipleSeriesRenderer 用來設置2個系列各自的顏色  
     */    
    public XYMultipleSeriesRenderer getBarDemoRenderer() {    
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();    
        SimpleSeriesRenderer r = new SimpleSeriesRenderer();    
        r.setColor(Color.BLUE);    
        renderer.addSeriesRenderer(r);    
        r = new SimpleSeriesRenderer();    
        r.setColor(Color.GREEN);    
        renderer.addSeriesRenderer(r);  
        r = new SimpleSeriesRenderer();    
        r.setColor(Color.RED);    
        renderer.addSeriesRenderer(r);  
        renderer.setApplyBackgroundColor(true);  
        renderer.setBackgroundColor(Color.TRANSPARENT);  
        renderer.setMarginsColor(context.getResources().getColor(R.color.main_background_color));  
        renderer.setZoomEnabled(false, false);  
        renderer.setPanEnabled(false, false);  
        renderer.setLabelsTextSize(15);  
        renderer.setLabelsColor(Color.BLACK);  
        setChartSettings(renderer);    
        return renderer;    
    }   

    /**  
     * setChartSettings 方法設置了下坐標軸樣式。  
     */    
    private void setChartSettings(XYMultipleSeriesRenderer renderer) {    
        renderer.setChartTitle("戰績分析");    
        renderer.setXTitle("橫坐標");    
        renderer.setYTitle("縱坐標");    
        renderer.setXAxisMin(0.5);    
        renderer.setXAxisMax(10.5);    
        renderer.setYAxisMin(0);    
        renderer.setYAxisMax(210);    
    }    
}  </pre><p> </p>

上面代碼部分解釋:

renderer.setApplyBackgroundColor(true);  //設置背景使能,為true下面的設置背景才有效

renderer.setBackgroundColor(Color.TRANSPARENT);  //設置背景

renderer.setMarginsColor() //設置周圍區域顏色

renderer.setZoomEnabled(false, false);  //設置是否能放大

renderer.setPanEnabled(false, false);  //設置是否可以移動

renderer.setLabelsTextSize(15);  //設置標簽文字大小
renderer.setLabelsColor(Color.BLACK);;

來自:http://blog.csdn.net/dawanganban/article/details/17755449

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!