Android之關於圖表


首先需要下載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;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM