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应用之PieChart(饼图)
(三)AChartEngine应用之BarChart(柱形图)
分享到:
相关推荐
官方的API并没有提供可以借鉴的动态更新饼图的方法,考虑到数据都是活动的,不可能总是用静态数据,所以我下面的demo就是模拟动态数据用饼图显示,但是肯定可以使用的,具体是通过定时器+Handler实现定时任务,通过...
针对安卓中的数据处理,进行简单的 数据显示,新手很好用的,后期可以做成比如测试软件,比如是屏幕帧数曲线图、cpu频率曲线图等等
构建动态柱形图,官方的API并没有提供可以借鉴的动态更新饼图的方法,考虑到数据都是活动的,不可能总是用静态数据,具体是通过定时器+Handler实现定时任务,通过Handler更新主线程UI,在更新之前要把之前的数据清除...
ChartEngine支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、气泡式图表、环形图、高低交替图等。 以上每种图表都可以包含多个序列, 可以将X轴以水平或垂直的形式显示,也支持很多自定义的特性。...
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 柱形图 曲线图 引擎 开源项目
android 绘制折线图(AChartEngine)Linechart 动态更新横轴为获取的当前时间
构建饼图的步骤主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:<activity android:name="org.achartengine.GraphicalActivity" />
Android高级应用源码-里面有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色.zip
使用AchartEngine在android手机上,同时显示多个统计图的例子。有两种方法!
有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色
android绘图 画饼状图 achartengine开源项目 文件包含achartengine-1.1.0.jar、achartengine-1.1.0-demo-source.zip、achartengine-1.1.0-javadocs.zip
基于AChartEngine柱形图实现的实时数据更新并刷新柱形图表示,以及一键将当前图标保存为jpg、png的格式图片。
• combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart(组合图) • cubic line chart (立方折线图) 官网下载地址: http://code.google.com/p/achartengine/downloads/list
Android图表引擎AChartEngine实现动态柱状图,可以实时传入数据实时刷新图表
本实例是采用AChartEngine进行绘制折线图的一个例子,采用随机数作为采样点,同步参考博客http://blog.csdn.net/danming60520/article/details/14127639
类似于股票期货这种
AChartEngine是为android应用而设计的绘图工具库。目前该库的最新稳定版本是0.7,支持绘制以下类型的图表: ?line chart ?area chart ?scatter chart ?time chart ?bar chart ?pie chart ?bubble chart ?doughnut ...
里面有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色 .zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。