achartengine 绘制柱状图

来源:互联网 发布:天猫美工工资 编辑:程序博客网 时间:2024/05/22 17:46
package com.zdst_03.acharttest;import android.app.Activity;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.view.Window;import android.widget.LinearLayout;import org.achartengine.chart.AbstractChart;import org.achartengine.chart.BarChart;import org.achartengine.model.CategorySeries;import org.achartengine.model.XYMultipleSeriesDataset;import org.achartengine.renderer.SimpleSeriesRenderer;import org.achartengine.renderer.XYMultipleSeriesRenderer;import java.util.ArrayList;import java.util.List;public class AChartTestAct extends Activity {    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);//        setContentView(R.layout.activity_main);                LinearLayout linearLayout=new LinearLayout(this);        linearLayout.setOrientation(LinearLayout.VERTICAL);                //第一个柱状图展示        List<double[]> values = new ArrayList<>();        //两根柱子数据        values.add(new double[]{230, 180, 240, 444, 370, 250, 430, 200});        values.add(new double[]{200, 100, 210, 240, 270, 200, 323, 100});        //两根柱子的颜色        int[] colors = new int[]{0XFF61A0A8, 0xFFD4A156};        String[] titles = new String[]{"已检查", "未检查"};        MyGraphicView mView = new MyGraphicView(this, (AbstractChart)setBarChartData(values,colors,titles));        linearLayout.addView(mView);                //第二个柱状图展示        List<double[]> values2 = new ArrayList<>();        //两根柱子数据        values2.add(new double[]{230, 180, 240, 444, 370, 250, 430, 200});        values2.add(new double[]{200, 100, 210, 240, 270, 200, 323, 100});        //两根柱子的颜色        int[] colors2 = new int[]{0XFFD48265, 0xFF91C7AE};        String[] titles2 = new String[]{"已整改", "未整改"};        MyGraphicView mView1 = new MyGraphicView(this, (AbstractChart)setBarChartData(values2,colors2,titles2));        linearLayout.addView(mView1);        setContentView(linearLayout);//        Intent intent = ChartFactory.getBarChartIntent(this, dataset, renderer, BarChart.Type.STACKED);//        startActivity(intent);            }    BarChart setBarChartData(List<double[]> values,int[] colors,String[] titles){               String years[] = {"龙城街道", "坪地街道", "龙岗街道", "横岗街道", "平湖街道", "南湾街道", "布吉街道", "坂田街道"};        //设置坐标轴        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();        //设置坐标文字大小        renderer.setAxisTitleTextSize(16);        //设置标题文字大小        renderer.setChartTitleTextSize(10);        //坐标轴刻度文字大小        renderer.setLabelsTextSize(18);        //标注文字大小        renderer.setLegendTextSize(20);        //设置图表高度        renderer.setLegendHeight(100);        //设置图表距屏幕的距离 第一个值“右”,第二个值“上”第三个值“左”第四个值“下”        renderer.setMargins(new int[]{50, 50, 100, 40});        int length = colors.length;        for (int i = 0; i < length; i++) {            SimpleSeriesRenderer r = new SimpleSeriesRenderer();            r.setColor(colors[i]);            renderer.addSeriesRenderer(r);        }        // 设置是否在柱体上方显示值        renderer.setDisplayChartValues(false);        // 设置是否在图表中显示网格        renderer.setShowGrid(true);        //网格颜色        renderer.setGridColor(0x0C0D0D);        renderer.setXLabelsAlign(Paint.Align.RIGHT);        renderer.setYLabelsAlign(Paint.Align.LEFT);        // 设置X轴显示的刻度标签的个数        renderer.setXLabels(0);        //循环添加Xlabel其中显示的label放在years数组中        for (int i = 0; i < 8; i++) {            renderer.addTextLabel(i + 1, years[i]);        }        // 设置Y轴显示的刻度标签的个数        renderer.setYLabels(6);        //显示放大缩小按钮        renderer.setZoomButtonsVisible(false);        //放大缩小的倍数        renderer.setZoomRate(0.5f);        //柱子大小        renderer.setBarSpacing(10);        //柱子间宽度        renderer.setBarSpacing(2.0f);             //设置是否需要显示坐标轴        renderer.setShowAxes(true);        //设置图表外颜色        renderer.setApplyBackgroundColor(true);        renderer.setMarginsColor(Color.WHITE);        //设置图表的背景色        renderer.setLabelsColor(Color.BLACK);//        renderer.setChartTitle("只是测试柱子");//标题文字//        renderer.setXTitle("Y轴");        //        renderer.setYTitle("企业数");        // 允许左右拖动,但不允许上下拖动.        renderer.setPanEnabled(true, false);        // 设置X轴的最小值        renderer.setXAxisMin(0.5);        //设置点击事件        renderer.setClickEnabled(false);        // 设置X轴的最大值        renderer.setXAxisMax(6);        // 设置Y轴的最小值        renderer.setYAxisMin(0);        // 设置Y轴的最大值        renderer.setYAxisMax(500);        //坐标轴颜色        renderer.setAxesColor(Color.BLACK);        //坐标名称以及标题颜色//        renderer.setLabelsColor(Color.RED);        //Y轴坐标顺时针旋转度        renderer.setYLabelsAngle(5f);        //X轴坐标顺时针旋转度        renderer.setXLabelsAngle(0f);        //设置X轴坐标字体颜色        renderer.setXLabelsColor(Color.BLACK);        //设置Y轴坐标字体颜色        renderer.setYLabelsColor(0, Color.BLACK);        renderer.setLabelsTextSize(18);        renderer.setOrientation(XYMultipleSeriesRenderer.Orientation.VERTICAL);        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();//设置显示数据        int length2 = titles.length;        for (int i = 0; i < length2; i++) {            CategorySeries series = new CategorySeries(titles[i]);            double[] v = values.get(i);            int seriesLength = v.length;            for (int k = 0; k < seriesLength; k++) {                series.add(v[k]);            }            dataset.addSeries(series.toXYSeries());        }        return new BarChart(dataset, renderer, BarChart.Type.STACKED);    }    

}

package com.zdst_03.acharttest;import android.content.Context;import org.achartengine.GraphicalView;import org.achartengine.chart.AbstractChart;/** * Created by ZTSD-03 on 2016/5/30. */public class MyGraphicView extends GraphicalView {            public MyGraphicView(Context context, AbstractChart chart) {        super(context, chart);    }        @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);                int widthSpecMode=MeasureSpec.getMode(widthMeasureSpec);        int widthSpecSize=MeasureSpec.getSize(widthMeasureSpec);        int heightSpecMode=MeasureSpec.getMode(heightMeasureSpec);        int heighSpecSize=MeasureSpec.getSize(heightMeasureSpec);        if(widthSpecMode==MeasureSpec.AT_MOST&&heightSpecMode==MeasureSpec.AT_MOST){            setMeasuredDimension(600,600);        }        else if(widthSpecMode==MeasureSpec.AT_MOST){            setMeasuredDimension(600,heighSpecSize);        }        else if(heightSpecMode==MeasureSpec.AT_MOST){            setMeasuredDimension(widthSpecSize,600);        }            }}



最后在manifest配置achart

<activity android:name="org.achartengine.GraphicalActivity"></activity>


0 1