achartengine 绘制柱状图

原创 2016年06月01日 09:27:20
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>


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用AChartEngine画柱状图

AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。 该项目地址位于: ht...
  • kmyhy
  • kmyhy
  • 2011年04月14日 17:09
  • 29674

使用Achartengine做平滑曲线图和温度显示柱状图

详细注解代码里面有,就不一一说明了,说下需要注意的事项: renderer.setPanEnabled(true, false);// 设置横坐标可以滑动,纵坐标不可以 renderer.setZ...

AChartEngine应用之BarChart(柱形图)

接着上文,构建柱形图的步骤和构建饼图的步骤一样,主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加: 1. 设置XYMultipleSeriesRend...
  • qiu_11
  • qiu_11
  • 2014年01月16日 12:48
  • 3346

使用achartengine 画图表时属性设置

使用achartengine 做图表时需要设置很多属性,以下是对一些属性的归纳: mRenderer.setXLabelsPadding(20);//设置X轴下标签与X...

【Android】achartengine的柱状图和饼状图的使用

本文介绍了android中如何使用achartengine绘制饼图和柱状图,请分别尝试饼图和柱状图。 代码中的注释解释了图标中的各种设置的使用方法。 一.achartengine库的下载,...

android Achartengine绘制柱状图

下面我简要介绍一下achartengine.jar的使用: 一、Series 和 Renderer 其中series是数据序列,也就是你要在图标中进行显示的图标中的数据。 rende...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

achartengine多柱状图(自定义X轴显示参数)

achartengine多柱状图显示,以及自定义X轴显示参数

Android开发学习之路--图表实现(achartengine/MPAndroidChart)之初体验

已经有一段时间没有更新博客了,在上周离开工作了4年的公司,从此不再安安稳稳地工作了,更多的是接受挑战和实现自身价值的提高。离开了嵌入式linux,从此拥抱移动互联网,也许有点为时已晚,但是相信通过努力...

AChartEngine (一) 事件处理 添加坐标/标签 点击效果

由于项目需要,需要对图表中的label设置点击事件,可是google给的包没有实现这功能。看来得靠自己了! 慢慢看源码吧~ 关于AChartEnging的事件,使用这个组件时大致有一下几个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:achartengine 绘制柱状图
举报原因:
原因补充:

(最多只允许输入30个字)