AChartEngine超简单实例

AChartEngine超简单实例

其实无非就在做三件事

  • 1.添加数据进图标
  • 2.线或条等设置
  • 3.制作成什么表。仅此而已

package com.zsz.develop.mychart02;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;


import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;

import java.util.Random;

/**
 * Created by shengzhong on 2015/7/29.
 */
public class ShowExamActivity extends Activity{
private LinearLayout llChart;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.show_exam_activity);
    // 1, 构造显示用渲染图
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    // 2,进行显示
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    // 2.1, 构建数据
    Random r = new Random();
    for (int i = 0; i < 2; i++) {
        XYSeries series = new XYSeries("test" + (i + 1));
        // 填充数据
        for (int k = 0; k < 10; k++) {
            // 填x,y值
            series.add(k, 20 + r.nextInt() % 100);
        }
        // 需要绘制的点放进dataset中
        dataset.addSeries(series);
    }
    // 3, 对点的绘制进行设置
    XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
    // 3.1设置颜色
    xyRenderer.setColor(Color.BLUE);
    // 3.2设置点的样式
    xyRenderer.setPointStyle(PointStyle.SQUARE);
    // 3.3, 将要绘制的点添加到坐标绘制中
    renderer.addSeriesRenderer(xyRenderer);
    // 3.4,重复 1~3的步骤绘制第二个系列点
    xyRenderer = new XYSeriesRenderer();
    xyRenderer.setColor(Color.RED);
    xyRenderer.setPointStyle(PointStyle.CIRCLE);
    renderer.addSeriesRenderer(xyRenderer);
//        Intent intent = new LinChart().execute(this);
//        Intent intent = ChartFactory
//                .getLineChartIntent(this, dataset, renderer);
    GraphicalView graphicalView = ChartFactory.getLineChartView(this, dataset, renderer);
    llChart= (LinearLayout) findViewById(R.id.llChart);
    llChart.addView(graphicalView);
//                startActivity(intent);

}

}

详细配置。

上面的配置只配置了几个基础的,还要进行更多配置才能使得图标更加简单通熟易懂。

  • XYSeries: 最常用的数据结构,主要包括一系列的double型(x,y)点对及一个名称(title)。
  • XYValueSeries:包括一系列的(x,y,value)点对及一个名称(title)。
  • XYMultipleSeriesDataset:包含一系列XYSeries,是最终的数据结构
  • TimeSeries:与XYSeries类似,x变为Date型,可以转化为XYSeries。
  • CategorySeries:与XYSeries类似,x变为string型,可以转化为XYSeries。
  • MultipleCategorySeries:一系列CategorySeries。

  • XYSeriesRenderer,impleSeriesRenderer、用于设置每张图中每一个序列的绘制方法。- XYMultipleSeries,RendererDefaultRenderer用于设置整张图的绘制格式。

XYMultipleSeriesRenderer.setAxisTitleTextSize

详细配置

  • 1.修改背景色或设置背景图片:
    背景色设置需要设置两项:setMarginsColor(设置四边颜色)以及setBackgroundColor(设置中间背景色)
  • 设置背景图片:
    http://blog.csdn.net/kmyhy/article/details/6590294
    
  1. setAxisTitleTextSize(16);// 设置坐标轴标题文本大小
  2. setChartTitleTextSize(20); // 设置图表标题文本大小
  3. setLabelsTextSize(15); // 设置轴标签文本大小
  4. setLegendTextSize(15); // 设置图例文本大小
  5. renderer.setChartTitle( “个人收支表”);//设置柱图名称
  6. renderer.setXTitle( “名单” );//设置X轴名称
  7. renderer.setYTitle( “金额” );//设置Y轴名称
  8. renderer.setXAxisMin(0.5);//设置X轴的最小值为0.5
  9. renderer.setXAxisMax(5.5);//设置X轴的最大值为5
  10. renderer.setYAxisMin(0);//设置Y轴的最小值为0
  11. renderer.setYAxisMax(500);//设置Y轴最大值为500
  12. renderer.setDisplayChartValues(true);//设置是否在柱体上方显示值
  13. renderer.setShowGrid(true);//设置是否在图表中显示网格
  14. renderer.setXLabels(0);//设置X轴显示的刻度标签的个数
  15. 如果想要在X轴显示自定义的标签,那么首先要设置renderer.setXLabels(0); 如果不设置为0,那么所设置的Labels会与原X坐标轴labels重叠
    其次我们要renderer.addTextLabel()循环添加
    eg:for(int i=0;i<13;i++)
    {
    renderer.addTextLabel(i+1,years[i]); //循环添加Xlabel其中显示的label放在years数组中
    
    }
  16. renderer.setXLabelsAlign(Align.RIGHT);//设置刻度线与X轴之间的相对位置关系
  17. renderer.setYLabelsAlign(Align.RIGHT);//设置刻度线与Y轴之间的相对位置关系
  18. renderer.setZoomButtonsVisible(true);//设置可以缩放
  19. renderer.setPanLimits(newdouble[] { 0, 20, 0, 140 });//设置拉动的范围
  20. renderer.setZoomLimits(newdouble[] { 0.5, 20, 1, 150 });//设置缩放的范围
  21. renderer.setRange(newdouble[]{0d, 5d, 0d, 100d}); //设置chart的视图范围
  22. renderer.setFitLegend(true);// 调整合适的位置
  23. renderer.setClickEnabled(true)//设置是否可以滑动及放大缩小;
  24. Dataset和Render参数介绍:
    http://blog.csdn.net/lk_blog/article/details/7645661

  25. ChartView.repaint();是重新绘图的命令

  26. renderer.setMargins(new int[] { 70, 70, 100, 70 });//设置图表的外边框(上/左/下/右)