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的布局。

 <LinearLayout
        android:id="@+id/chart_ll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="10dp"
        android:orientation="horizontal" >
 </LinearLayout>

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

// 折线图

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布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/chart_ll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:orientation="horizontal" >
    </LinearLayout>

</RelativeLayout>
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值