基础知识:
CategorySeries
XYSeriesRenderer
XYMultipleSeriesDataset :构造数据
XYMultipleSeriesRenderer :构造渲染器
package com.zsy.chart.easy.demo.chart;
import org.achartengine.ChartFactory;
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.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint.Align;
/**
* @description:柱状图
* @author samy
* @date 2014年9月9日 下午6:27:55
*/
public class BarChart implements AChartAbstract {
public Intent getIntent(Context context) {
return ChartFactory.getBarChartIntent(context, getDataSet(), getRenderer(), Type.STACKED, "2012年公司利润");
}
/**
* @description:构造数据
* @author samy
* @date 2014年9月9日 下午6:36:30
*/
public XYMultipleSeriesDataset getDataSet() {
// 构造数据
XYMultipleSeriesDataset barDataset = new XYMultipleSeriesDataset();
CategorySeries barSeries = new CategorySeries("2012年");
barSeries.add(43.1);
barSeries.add(27.2);
barSeries.add(55.3);
barSeries.add(43.4);
barSeries.add(68.5);
barSeries.add(12.6);
barSeries.add(28.7);
barSeries.add(33.8);
barSeries.add(99.9);
barSeries.add(128.0);
barSeries.add(56.1);
barSeries.add(77.2);
barDataset.addSeries(barSeries.toXYSeries());
return barDataset;
}
/**
* @description:构造渲染器
* @author samy
* @date 2014年9月9日 下午6:36:41
*/
public XYMultipleSeriesRenderer getRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setChartTitle("拼外卖情况");// getString(R.string.steps_x_date)
renderer.setXTitle("商家");
renderer.setYTitle("拼外卖人数(个)");
renderer.setAxesColor(Color.WHITE);
renderer.setLabelsColor(Color.WHITE);
renderer.setAxisTitleTextSize(30);// XY轴标题字体大小
renderer.setLabelsTextSize(25);// XY轴线字体大小
renderer.setLegendTextSize(20);// 底部字体大小
renderer.setShowAxes(true);
renderer.setShowLabels(true);
renderer.setShowLegend(true);// 隐藏底部;
renderer.setMarginsColor(Color.RED);// 设置周围没表数据为白色
renderer.setMargins(new int[] { 20, 50, 80, 50 });// 表格相对来说的-》上,左,下,右;
renderer.setApplyBackgroundColor(true); // 设置背景颜色
renderer.setBackgroundColor(Color.GRAY);
renderer.setShowGrid(true);// 设置显示网格
renderer.setGridColor(Color.LTGRAY);// 网格颜色
renderer.setZoomButtonsVisible(false);// 设置渲染器显示缩放按钮
renderer.setZoomEnabled(false, false);// 设置渲染器允许放大缩小
// renderer.setZoomEnabled(false);
renderer.setAntialiasing(true);// 消除锯齿
renderer.setPanEnabled(true, false); // 允许左右拖动,但不允许上下拖动.
// renderer.setClickEnabled(true);//设置了这个会失去拉动效果;可否拉动
renderer.setInScroll(false);
r.setDisplayChartValues(true);//显示柱状上的数据;
renderer.setXAxisMin(1);// 设置X轴的最小数字和最大数字,由于我们的数据是从1开始,所以设置为0.5就可以在1之前让出一部分
// renderer.setXAxisMax(datas.length + 2);
renderer.setXAxisMax(12 + 2);
renderer.setYAxisMin(10);// 设置Y轴的最小数字和最大数字
renderer.setYAxisMax(150);
renderer.setXLabels(12); // X轴的近似坐标数;设置x轴标签数
renderer.setYLabels(5);// Y轴的近似坐标数;150/50=5显示每刻度为5等分;
// 设置x轴和y轴的标签对齐方式
renderer.setXLabelsAlign(Align.LEFT);// 刻度线与X轴坐标文字左侧对齐
renderer.setYLabelsAlign(Align.LEFT);// Y轴与Y轴坐标文字左对齐
renderer.setBarSpacing(0.5f); // 柱子间宽度
// 设置每条柱子的颜色
SimpleSeriesRenderer sr = new SimpleSeriesRenderer();
sr.setColor(Color.YELLOW);
renderer.addSeriesRenderer(sr);
// 设置每个柱子上是否显示数值
renderer.getSeriesRendererAt(0).setDisplayChartValues(true);
return renderer;
}
}