Android 绘制折线和柱状图

AchartEngine制作图表–>折线图,柱状图:

下载achartengine-1.1.0.jar

http://download.csdn.net/detail/csdnadcode/7771691
http://download.csdn.net/detail/u011247387/8013717

Android AchartEngine,这是为Android应用而设计的绘图工具库,能够支持多种图表类型。

1、认识AchartEngine:

AchartEngine提供了两种绘制图表的方法:

ChartFactory.getXXXChartIntent(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,)

直接新建一个Activity全屏显示生成的图表。

ChartFactory.getXXXChartView(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,)

生成一个GraphicalView,然后在需要的布局文件中Add进去即可。

ChartFactory有多种api,通过这些api调用来决定自己需要的图表:

1、XYMultipleSeriesRenderer对象:包含一系列XYSeriesRender,用来设置图表的整体风格,整体样式
2、XYMultipleSeriesDataset对象:包含一系列XYSeries,用于数据的存放,提供绘制的点集合的数据
3、XYSeriesRenderer对象:用来设置一条线条的风格,颜色啊,粗细之类的
4、XYSeries对象:用于存储一条线的数据信息

2、使用AchartEngine

首先,将AchartEngine的第三讲jar包导入到自己的项目当中去,项目当中我用的是第二种方法来绘制图表。布局文件很简单,就是一个简单的线性布局,以后作为添加GraphicalView的布局。

 
 

然后,就是在代码里面进行设置:

// 折线图

private void initviews() {

    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    // 构造数据
    Random random = new Random();
    XYSeries series = new XYSeries("折线一");
    for (int i = 1; i < 10; i++) {
        series.add(i, random.nextInt(100));
    }
    // 需要绘制的点放在dataset当中
    dataset.addSeries(series);
    // 对点的绘制进行描述
    XYSeriesRenderer xyRenderer = new XYSeriesRenderer();

    // 设置颜色
    xyRenderer.setColor(Color.BLUE);
    // 设置点的风格
    // xyRenderer.setPointStyle(PointStyle.X);
    // xyRenderer.setPointStyle(PointStyle.TRIANGLE);
    // xyRenderer.setPointStyle(PointStyle.SQUARE);
    // xyRenderer.setPointStyle(PointStyle.POINT);
    // xyRenderer.setPointStyle(PointStyle.DIAMOND);
    xyRenderer.setPointStyle(PointStyle.CIRCLE);
    // 设置空心实心
    xyRenderer.setFillPoints(true);
    // 设置XY轴名称
    renderer.setXTitle("时间");
    renderer.setYTitle("温度");
    // 设置标题
    renderer.setChartTitle("折线图");
    // 设置Y轴最大值
    renderer.setYAxisMax(100);
    renderer.setXAxisMax(10);
    renderer.setXAxisMin(0);
    renderer.setYAxisMin(0);
    // 设置XY轴颜色
    renderer.setAxesColor(Color.BLACK);
    renderer.setLabelsColor(Color.BLACK);
    // 设置XY轴显示
    renderer.setYLabels(10);
    renderer.setXLabels(10);
    // 设置 是否显示图例
    renderer.setShowLegend(true);
    // 设置不显示放大缩小图标
    renderer.setZoomEnabled(false);
    // 设置是否支持图表缩放
    renderer.setPanEnabled(false, false);
    // 设置是否可点击
    renderer.setClickEnabled(false);
    // 是否显示网格
    renderer.setShowGrid(true);
    // 设置空白区的颜色
    renderer.setMarginsColor(Color.WHITE);
    renderer.setBackgroundColor(getResources().getColor(R.color.white));
    // 设置坐标轴文字颜色
    renderer.setXLabelsColor(Color.BLACK);
    renderer.setYLabelsColor(0, Color.BLACK);
    // 刻度线与刻度标注之间的相对位置关系
    renderer.setXLabelsAlign(Align.CENTER);
    // 刻度线与刻度标注之间的相对位置关系
    renderer.setYLabelsAlign(Align.RIGHT);
    renderer.setZoomButtonsVisible(false);// 是否显示放大缩小按钮
    renderer.setMargins(new int[] { 50, 50, 20, 20 });// 设置图表的外边框(上/左/下/右)
    renderer.setAxisTitleTextSize(20);// 设置轴标题文字的大小
    renderer.setChartTitleTextSize(30);// 设置整个图表标题文字的大小
    renderer.setLabelsTextSize(15);// 设置轴刻度文字的大小
    renderer.setLegendTextSize(15);// 设置图例文字大小
    renderer.setPointSize(5);// 设置点的大小(图上显示的点的大小和图例中点的大小都会被设置)
//      renderer.setBarSpacing(0.5f);//柱子间宽度  
    // 将要绘制的点添加到坐标绘制中
    renderer.addSeriesRenderer(xyRenderer);
    // 折线图
    LinearLayout linearlayout = (LinearLayout) findViewById(R.id.chart_ll);
//      GraphicalView view = ChartFactory.getBarChartView(this, dataset, renderer,Type.STACKED);
    GraphicalView view = ChartFactory.getLineChartView(this, dataset, renderer);
    linearlayout.addView(view, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

}

在MainActivity调用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initviews();

}

activity_main布局:



    
    


4、换柱状图,替换最后设置的样式:

GraphicalView view = ChartFactory.getBarChartView(this, dataset, renderer,Type.STACKED);

添加柱体之间的距离,其他需要的直接修改属性设置:

renderer.setBarSpacing(0.5f);//柱子间宽度  

参考资料:

http://blog.csdn.net/tyk0910/article/details/50037701

安卓图表引擎AChartEngine(一) - 简介
http://blog.csdn.net/lk_blog/article/details/7645509

安卓图表引擎AChartEngine(二) - 示例源码概述和分析
http://blog.csdn.net/lk_blog/article/details/7642751

安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图
http://blog.csdn.net/lk_blog/article/details/7645668

安卓图表引擎AChartEngine(四) - 源码示例嵌入Acitivity中的折线图
http://blog.csdn.net/lk_blog/article/details/7645665

安卓图表引擎AChartEngine(五) - Render和Dataset参数介绍
http://blog.csdn.net/lk_blog/article/details/7645661

安卓图表引擎AChartEngine(六) - 框架源码结构图
http://blog.csdn.net/lk_blog/article/details/7645671

你可能感兴趣的:(Android常用)