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;
    }
posted on 2012-12-18 11:43  lee0oo0  阅读(3736)  评论(0编辑  收藏  举报