Android之關於圖表

來源:互聯網
上載者:User

首先需要下載Jar包:圖表jar.rar

線性圖:

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        // 1, 構造顯示用渲染圖XY        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));            // 填充資料,一條標題10個點            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);        // 開啟畫圖的Activity,需要在manifest中設定 <activity android:name="org.achartengine.GraphicalActivity" />        Intent intent = ChartFactory                .getLineChartIntent(this, dataset, renderer);        startActivity(intent);    }}

 

柱狀圖:

// 柱狀圖        XYMultipleSeriesRenderer renderer = getBarDemoRenderer();        Intent intent = ChartFactory.getBarChartIntent(this,                getBarDemoDataset(), renderer, Type.DEFAULT);        startActivity(intent);//設定柱狀圖的Series    private XYMultipleSeriesDataset getBarDemoDataset() {        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();        final int nr = 10;        Random r = new Random();        // 一共是3種不同的柱狀圖        for (int i = 0; i < SERIES_NR; i++) {            CategorySeries series = new CategorySeries("Demo series " + (i + 1));            // 設定每個的高度            for (int k = 0; k < nr; k++) {                series.add(100 + r.nextInt() % 100);            }            dataset.addSeries(series.toXYSeries());        }        return dataset;    }    //設定柱狀圖的Renderer,設定顏色    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.WHITE);        renderer.addSeriesRenderer(r);        setChartSettings(renderer);        return renderer;    }    //設定柱狀圖Renderer的屬性    private void setChartSettings(XYMultipleSeriesRenderer renderer) {        renderer.setChartTitle("Chart demo");        renderer.setXTitle("x values");        renderer.setYTitle("y values");        renderer.setXAxisMin(0);// 設定X軸的最小值為0.5        renderer.setXAxisMax(10.5);// 設定X軸的最大值為10.5        renderer.setYAxisMin(0);// 設定Y軸的最小值為0        renderer.setYAxisMax(210);// 設定Y軸最大值為210        renderer.setDisplayChartValues(true); // 設定是否在柱體上方顯示值        renderer.setShowGrid(true);// 設定是否在圖表中顯示網格        renderer.setXLabels(0);// 設定X軸顯示的刻度標籤的個數        for (int i = 1; i < 11; i++) {            // 設定x軸刻度的值            renderer.addTextLabel(i, "" + i);        }    }

餅狀圖:

// 餅狀圖            Intent intent = execute(MainActivity.this);            startActivity(intent);//設定餅狀圖    public Intent execute(Context context) {        double[] values = new double[] { 12, 14, 11, 10, 19 };        int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA,                Color.YELLOW, Color.CYAN };        DefaultRenderer renderer = buildCategoryRenderer(colors);        renderer.setZoomButtonsVisible(true);        renderer.setZoomEnabled(true);        // 設定餅狀圖的title字型大小        renderer.setChartTitleTextSize(20);        // 設定餅狀圖的title        renderer.setChartTitle("這是一個餅狀圖");        return ChartFactory.getPieChartIntent(context,                buildCategoryDataset("Project budget", values), renderer,                "Budget");    }    //設定餅狀圖的Renderer    protected DefaultRenderer buildCategoryRenderer(int[] colors) {        DefaultRenderer renderer = new DefaultRenderer();        renderer.setLabelsTextSize(15);        renderer.setLegendTextSize(15);        renderer.setMargins(new int[] { 20, 30, 15, 0 });        // 設定顏色        for (int color : colors) {            SimpleSeriesRenderer r = new SimpleSeriesRenderer();            r.setColor(color);            renderer.addSeriesRenderer(r);        }        return renderer;    }    //設定餅狀圖的Series    protected CategorySeries buildCategoryDataset(String title, double[] values) {        CategorySeries series = new CategorySeries(title);        int k = 0;        // 設定每份的大小        for (double value : values) {            series.add("Project " + ++k, value);        }        return series;    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.