关闭

achartengine 绘制柱状图

440人阅读 评论(0) 收藏 举报
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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1985次
    • 积分:48
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章存档