AChartEngine應用之PieChart(餅圖)

來源:互聯網
上載者:User

AChartEngine應用之PieChart(餅圖)

構建餅圖的步驟主要分為以下三步,還需要在項目中引入AChartEngine依賴jar包,在Manifest中添加:<activityandroid:name="org.achartengine.GraphicalActivity" />

1.     設定DefaultRenderer

DefaultRenderer mRenderer = new DefaultRenderer();// PieChart的主要描繪器

mRenderer.setZoomButtonsVisible(true);// 顯示放大縮小功能按鈕

mRenderer.setStartAngle(180);// 設定為水平開始

mRenderer.setDisplayValues(true);// 顯示資料

mRenderer.setFitLegend(true);// 設定是否顯示圖例

mRenderer.setLegendTextSize(10);// 設定圖例字型大小

mRenderer.setLegendHeight(10);// 設定圖例高度

mRenderer.setChartTitle("餅圖樣本");// 設定餅表徵圖題

mRenderer.setChartTitleTextSize(14);// 設定餅表徵圖題大小

 

2.     構建資料來源CategorySeries

for (int i = 0; i < data.length; i++)

                            VALUE += data[i];

                   for (int i = 0; i < data.length; i++) {

                            mSeries.add("樣本 " + (i + 1), data[i] / VALUE);// 設定種類名稱和對應的數值,前面是(key,value)鍵值對

                            SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();

                            if (i < COLORS.length) {

                                     renderer.setColor(COLORS[i]);// 設定描繪器的顏色

                            } else {

                                     renderer.setColor(getRandomColor());// 設定描繪器的顏色

                            }

                            renderer.setChartValuesFormat(NumberFormat.getPercentInstance());// 設定百分比

                            mRenderer.setChartTitleTextSize(14);// 設定餅表徵圖題大小

                            mRenderer.addSeriesRenderer(renderer);// 將最新的描繪器添加到DefaultRenderer中

}

 

3.     通過ChartFactory擷取餅圖

mChartView = ChartFactory.getPieChartView(getApplicationContext(),

                                               mSeries, mRenderer);// 構建mChartView

                            mRenderer.setClickEnabled(true);// 允許點擊事件

                            mChartView.setOnClickListener(new View.OnClickListener() {// 具體內容

}

 運行:


code

package com.qiuzhping.achart;import java.text.NumberFormat;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.GraphicalView;import org.achartengine.model.CategorySeries;import org.achartengine.model.SeriesSelection;import org.achartengine.renderer.DefaultRenderer;import org.achartengine.renderer.SimpleSeriesRenderer;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.LinearLayout;import android.widget.Toast;/** * @項目名稱:AChart * @類名稱:PieChartBuilder * @作者:Qiuzhping * @時間:2014-1-15下午11:20:48 * @作用 :構建餅圖,併產生與使用者互動,點擊對應的地區能正確顯示資訊 */public class PieChartBuilder extends Activity {private static int[] COLORS = new int[] { Color.RED, Color.GREEN,Color.BLUE, Color.MAGENTA, Color.CYAN, Color.YELLOW, Color.DKGRAY };double data[] = new double[] { 20, 30, 40, 50, 60, 70, 80, 90, 100 };private CategorySeries mSeries = new CategorySeries("");// PieChart的DataSet// 其實就是一些索引值對,跟Map使用方法差不多private DefaultRenderer mRenderer = new DefaultRenderer();// PieChart的主要描繪器private GraphicalView mChartView;// 用來顯示PieChart 需要在設定檔Manifest中添加// <activity// android:name="org.achartengine.GraphicalActivity"// />private LinearLayout mLinear;private static double VALUE = 0;// 總數@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.xy_chart);mLinear = (LinearLayout) findViewById(R.id.chart);mLinear.setBackgroundColor(Color.BLACK);mRenderer.setZoomButtonsVisible(true);// 顯示放大縮小功能按鈕mRenderer.setStartAngle(180);// 設定為水平開始mRenderer.setDisplayValues(true);// 顯示資料mRenderer.setFitLegend(true);// 設定是否顯示圖例mRenderer.setLegendTextSize(10);// 設定圖例字型大小mRenderer.setLegendHeight(10);// 設定圖例高度mRenderer.setChartTitle("餅圖樣本");// 設定餅表徵圖題for (int i = 0; i < data.length; i++)VALUE += data[i];for (int i = 0; i < data.length; i++) {mSeries.add("樣本 " + (i + 1), data[i] / VALUE);// 設定種類名稱和對應的數值,前面是(key,value)索引值對SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();if (i < COLORS.length) {renderer.setColor(COLORS[i]);// 設定描繪器的顏色} else {renderer.setColor(getRandomColor());// 設定描繪器的顏色}renderer.setChartValuesFormat(NumberFormat.getPercentInstance());// 設定百分比mRenderer.setChartTitleTextSize(14);// 設定餅表徵圖題大小mRenderer.addSeriesRenderer(renderer);// 將最新的描繪器添加到DefaultRenderer中}if (mChartView == null) {// 為空白需要從ChartFactory擷取PieChartViewmChartView = ChartFactory.getPieChartView(getApplicationContext(),mSeries, mRenderer);// 構建mChartViewmRenderer.setClickEnabled(true);// 允許點擊事件mChartView.setOnClickListener(new View.OnClickListener() {// 具體內容@Overridepublic void onClick(View v) {SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();// 擷取當前的類別和指標if (seriesSelection == null) {Toast.makeText(getApplicationContext(),"您未選擇資料", Toast.LENGTH_SHORT).show();} else {for (int i = 0; i < mSeries.getItemCount(); i++) {mRenderer.getSeriesRendererAt(i).setHighlighted(i == seriesSelection.getPointIndex());}mChartView.repaint();Toast.makeText(getApplicationContext(),"您選擇的是第"+ (seriesSelection.getPointIndex() + 1)+ " 項 "+ " 百分比為  "+ NumberFormat.getPercentInstance().format(seriesSelection.getValue()),Toast.LENGTH_SHORT).show();}}});mLinear.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));} else {mChartView.repaint();}}private int getRandomColor() {// 分別產生RBG數值Random random = new Random();int R = random.nextInt(255);int G = random.nextInt(255);int B = random.nextInt(255);return Color.rgb(R, G, B);}}


對應的項目源碼:http://download.csdn.net/detail/qiu_11/6853469

待續.......




CombinedXYChart(組合統計圖)





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.