`
zhenping
  • 浏览: 83630 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

AChartEngine应用之BarChart(柱形图)

 
阅读更多

AChartEngine应用之BarChart(柱形图)

接着上文,构建柱形图的步骤和构建饼图的步骤一样,主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:<activityandroid:name="org.achartengine.GraphicalActivity" />

1.设置XYMultipleSeriesRenderer主要描绘器

XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);// 柱形图颜色设置

setChartSettings(renderer, "柱形图示例", "月份", "数量", 0.5, 12.5, 0, 2400,

Color.GRAY, Color.LTGRAY);// 设置柱形图标题,横轴(X轴)、纵轴(Y轴)、最小的伸所刻度、最大的伸所刻度

renderer.getSeriesRendererAt(0).setDisplayChartValues(true);// 在第0条柱形图上显示数据

renderer.getSeriesRendererAt(1).setDisplayChartValues(true);// 在第1条柱形图上显示数据

renderer.setXLabels(12);

renderer.setYLabels(10);

renderer.setXLabelsAlign(Align.LEFT);// 数据从左到右显示

renderer.setYLabelsAlign(Align.LEFT);

renderer.setPanEnabled(true, false);

renderer.setZoomEnabled(true);

renderer.setZoomButtonsVisible(true);// 显示放大缩小功能按钮

renderer.setZoomRate(1.1f);

renderer.setBarSpacing(0.5f);// 柱形图间隔

2.构建数据源XYMultipleSeriesDataset

protected XYMultipleSeriesDataset buildBarDataset(String[] titles,

List<double[]> values) {//柱形图的数据源和饼图差不多,也是由一些键值对组成

XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

int length = titles.length;

for (int i = 0; i < length; 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 dataset;

}

3.通过ChartFactory获取柱形图

mChartView = ChartFactory.getBarChartView(getApplicationContext(),

buildBarDataset(titles, values), renderer, Type.DEFAULT);

renderer.setClickEnabled(true);

//renderer.set

mLinear.addView(mChartView, new LayoutParams(

LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

运行效果图:


code

package com.qiuzhping.achart;

import java.util.ArrayList;
import java.util.List;

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class BarChartBuilder extends Activity {

	private GraphicalView mChartView;

	public void back(View v) {
		Log.i("qiuzhping", "back onClick");
		Intent intent = new Intent();
		intent.setClass(BarChartBuilder.this, MainActivity.class);
		startActivity(intent);
		BarChartBuilder.this.finish();
	}

	protected void setChartSettings(XYMultipleSeriesRenderer renderer,
			String title, String xTitle, String yTitle, double xMin,
			double xMax, double yMin, double yMax, int axesColor,
			int labelsColor) {
		renderer.setChartTitle(title);
		renderer.setXTitle(xTitle);
		renderer.setYTitle(yTitle);
		renderer.setXAxisMin(xMin);
		renderer.setXAxisMax(xMax);
		renderer.setYAxisMin(yMin);
		renderer.setYAxisMax(yMax);
		renderer.setAxesColor(axesColor);
		renderer.setLabelsColor(labelsColor);
	}

	protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
		XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
		renderer.setAxisTitleTextSize(16);
		renderer.setChartTitleTextSize(20);
		renderer.setLabelsTextSize(15);
		renderer.setLegendTextSize(15);
		int length = colors.length;
		for (int i = 0; i < length; i++) {
			SimpleSeriesRenderer r = new SimpleSeriesRenderer();
			r.setColor(colors[i]);
			renderer.addSeriesRenderer(r);
		}
		return renderer;
	}

	protected XYMultipleSeriesDataset buildBarDataset(String[] titles,
			List<double[]> values) {//柱形图的数据源和饼图差不多,也是由一些键值对组成
		XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
		int length = titles.length;
		for (int i = 0; i < length; 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 dataset;
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.xy_chart);
		LinearLayout mLinear = (LinearLayout) findViewById(R.id.chart);
		mLinear.setBackgroundColor(Color.BLACK);

		String[] titles = new String[] { "2012", "2013" };
		List<double[]> values = new ArrayList<double[]>();
		values.add(new double[] { 1423, 1230, 1424, 1524, 1590, 1920, 2203,
				2120, 1950, 1550, 1260, 1400 });
		values.add(new double[] { 523, 730, 924, 1054, 790, 920, 1200, 1100,
				950, 1500, 1100, 1500 });
		int[] colors = new int[] { Color.RED, Color.BLUE };
		XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);// 柱形图颜色设置
		setChartSettings(renderer, "柱形图示例", "月份", "数量", 0.5, 12.5, 0, 2400,
				Color.GRAY, Color.LTGRAY);// 设置柱形图标题,横轴(X轴)、纵轴(Y轴)、最小的伸所刻度、最大的伸所刻度
		renderer.getSeriesRendererAt(0).setDisplayChartValues(true);// 在第0条柱形图上显示数据
		renderer.getSeriesRendererAt(1).setDisplayChartValues(true);// 在第1条柱形图上显示数据
		renderer.setXLabels(12);
		renderer.setYLabels(10);
		renderer.setXLabelsAlign(Align.LEFT);// 数据从左到右显示
		renderer.setYLabelsAlign(Align.LEFT);
		renderer.setPanEnabled(true, false);
		renderer.setZoomEnabled(true);
		renderer.setZoomButtonsVisible(true);// 显示放大缩小功能按钮
		renderer.setZoomRate(1.1f);
		renderer.setBarSpacing(0.5f);// 柱形图间隔

		if (mChartView == null) {// 构建柱形图
			mChartView = ChartFactory.getBarChartView(getApplicationContext(),
					buildBarDataset(titles, values), renderer, Type.DEFAULT);
			renderer.setClickEnabled(true);
			//renderer.set
			mLinear.addView(mChartView, new LayoutParams(
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
		} else
			mChartView.repaint();
	}
}

对应的完整项目:http://download.csdn.net/detail/qiu_11/6854803

未完待续。。。。。

AChartEngine应用系列文章

(一)AChartEngine简介

(二)AChartEngine应用之PieChart(饼图)

(三)AChartEngine应用之BarChart(柱形图)

(四)AChartEngine应用之PieChart(动态饼图,允许产生动态数据并显示)

(五)AChartEngine应用之LineChart(模拟生命特征值图)

(六)AChartEngine应用之LineChart(模拟三角函数sin,cos)

(七)AChartEngine高级应用CombinedXYChart(组合统计图)






分享到:
评论

相关推荐

    AchartEngine 画曲线图,柱形图

    AchartEngine是一款强大的图表库,特别适用于Android应用开发,它能帮助开发者轻松地创建各种类型的图表,如曲线图和柱形图。对于那些刚开始接触数据可视化或者需要在Android应用中展示数据的新手开发者来说,...

    安卓实现AChartEngine+动态饼图+柱形图

    官方的API并没有提供可以借鉴的动态更新饼图的方法,考虑到数据都是活动的,不可能总是用静态数据,所以我下面的demo就是模拟动态数据用饼图显示,但是肯定可以使用的,具体是通过定时器+Handler实现定时任务,通过...

    安卓实现achartengine+动态饼图+动态柱形图

    构建动态柱形图,官方的API并没有提供可以借鉴的动态更新饼图的方法,考虑到数据都是活动的,不可能总是用静态数据,具体是通过定时器+Handler实现定时任务,通过Handler更新主线程UI,在更新之前要把之前的数据清除...

    安卓实现AChartEngine-饼图+柱形图

    ChartEngine支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、气泡式图表、环形图、高低交替图等。 以上每种图表都可以包含多个序列, 可以将X轴以水平或垂直的形式显示,也支持很多自定义的特性。...

    achartengine

    import org.achartengine.chart.BarChart; import org.achartengine.chart.BarChart.Type; import org.achartengine.chart.BubbleChart; import org.achartengine.chart.CombinedXYChart; import org.achartengine....

    AchartEngine显示多个柱形图例子,有两种方法哦!

    在这个例子中,我们将探讨如何使用AchartEngine在一个应用程序中同时显示多个柱形图,提供了两种不同的实现方法。这对于数据分析和可视化来说非常有用,能够帮助用户更直观地理解复杂的数据。 方法一:组合多个图表...

    achartengine 利用随机数产生的动态线性图和柱形图

    总结来说,AChartEngine是一个功能强大的工具,可以帮助开发者在Android应用中轻松创建和展示动态的线性图和柱形图。通过生成随机数,我们可以模拟类似股票期货市场的实时数据,为用户提供直观的数据分析视图。同时...

    achartengine-1.2.0

    Achartengine 折线图 制图 achartengine 柱形图 曲线图 引擎 开源项目

    有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色

    这里提到的"AChartEngine"是一个开源的Android图表库,它为开发者提供了创建各种图表的能力,包括曲线图、折线图、双曲线图、柱形图和饼图。这些图表类型在数据展示和分析中都有广泛的应用。 1. **曲线图**:曲线图...

    基于AChartEngine的实时柱形图表及保存为png图片

    在Android应用开发中,AChartEngine是一个非常实用的开源库,它允许开发者轻松地创建各种图表,包括柱形图、线形图、饼图等。本项目主要关注的是利用AChartEngine来实现实时更新的柱形图表,并能将当前显示的图表...

    AChartEngine应用之PieChart(饼图)

    构建饼图的步骤主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:&lt;activity android:name="org.achartengine.GraphicalActivity" /&gt;

    Android高级应用源码-里面有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色

    AChartEngine是一个开源的Android图表库,它提供了多种类型的图表,包括线性图(LineChart)、散点图(ScatterChart)、条形图(BarChart)、饼图(PieChart)和更多。这个库易于使用且功能强大,适合各种项目中集成...

    achartengine绘制动态柱状图

    AChartEngine是一个强大的开源图表库,适用于Android应用开发,它提供了多种类型的图表,包括柱状图、线形图、饼图等。在这个场景中,我们关注的是如何使用AChartEngine来绘制动态柱状图。动态柱状图在数据可视化中...

    里面有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色.zip

    这个压缩包提供了一系列基于AChartEngine库实现的图表,包括曲线图、折线图、双曲线图、柱形图和饼图。AChartEngine是一个轻量级的图表库,适合用于快速开发Android应用中的数据展示功能。 首先,我们要了解...

    安卓图表报表相关-里面有曲线图折线图双曲线图柱形图饼图在achartengine的基础上更改了一些颜色.zip

    标题中的“安卓图表报表相关-里面有曲线图折线图双曲线图柱形图饼图在achartengine的基础上更改了一些颜色.zip”表明这是一个关于Android应用程序开发的资源包,专注于图表和报表的展示。其中包含了多种类型的图表,...

    安卓图表框架achartengine-1.0.0

    • combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart(组合图) • cubic line chart (立方折线图) 官网下载地址: http://code.google.com/p/achartengine/downloads/list

    AChartEngine图表库之动态柱状图

    Android图表引擎AChartEngine实现动态柱状图,可以实时传入数据实时刷新图表

    AchartEngine柱形实例

    通过学习和实践这个AchartEngine柱形实例,开发者不仅可以掌握柱形图的创建,还能进一步了解Android数据可视化的原理和技巧,这对于开发出功能丰富、用户体验良好的应用程序至关重要。在实际开发中,结合实际数据,...

    AchartEngine图表库之动态折线图(多条)

    在Android应用开发中,视觉数据展示是至关重要的,AchartEngine是一个开源的图表库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,方便开发者轻松地在应用程序中展示复杂的数据。本篇文章将深入探讨如何...

    AChartEngine绘图实时曲线 绘制折线图

    本实例是采用AChartEngine进行绘制折线图的一个例子,采用随机数作为采样点,同步参考博客http://blog.csdn.net/danming60520/article/details/14127639

Global site tag (gtag.js) - Google Analytics