利用Achartengine制作折线图

<p>最近在学安卓开发,需要在Activity中显示一个折线图,Achartengine是一款很好的制图工具,可以用来绘制折线图,柱状图、圆饼图等。原理很简单。经过两天的摸索算是基本掌握了一些使用方法,现把自己的心得总结一下。小弟初次写博客,写的不好的话,请各位批评指正。</p><p>先上效果图吧</p><p><img src="http://img.blog.csdn.net/20150103154002775?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpbmcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>代码如下</p><div>
</div>
import org.achartengine.ChartFactory;
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 android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.activity_main);
        
       
        double x [] = {1,2,3,4,5,6,7};
        double y [] = {3.9,8.4,7.8,4.1,8.7,6.1,3.8};
        // XYMultipleSeriesRenderer构造显示渲染用途
        //XYMultipleSeriesRenderer类型的对象,用于提供图表展现时的一些样式
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        renderer.setChartTitle("血糖变化趋势图");
      //设置图表的X轴的当前方向
        renderer.setOrientation(XYMultipleSeriesRenderer.Orientation.HORIZONTAL);             
        renderer.setXAxisMin(0);
        renderer.setXAxisMax(7);
        renderer.setYAxisMin(2);
        renderer.setYAxisMax(16);
        renderer.setXTitle("最近7次测量值");//设置为X轴的标题
		renderer.setYTitle("血糖水平");//设置y轴的标题
        renderer.setXLabels(8);//设置x轴显示12个点,根据setChartSettings的最大值和最小值自动计算点的间隔  
        renderer.setYLabels(15);//设置y轴显示15个点,根据setChartSettings的最大值和最小值自动计算点的间隔  
        renderer.setShowGrid(true);//是否显示网格  
        renderer.setXLabelsAlign(Align.CENTER);//刻度线与刻度标注之间的相对位置关系  
        renderer.setLabelsTextSize(15);//设置标签的文字大小(坐标轴值得大小)
        renderer.setYLabelsAlign(Align.RIGHT);//刻度线与刻度标注之间的相对位置关系  
        renderer.setApplyBackgroundColor(true);
        renderer.setMarginsColor(this.getResources().getColor(R.color.back));
       
       //XYSeriesRenderer 对点的绘制进行设置
        XYSeriesRenderer r = new XYSeriesRenderer();
        r.setColor(Color.BLUE);
        r.setPointStyle(PointStyle.CIRCLE);//设置点的样式
        r.setFillPoints(true);//填充点(显示的点是空心还是实心)
        r.setDisplayChartValues(true);//将点的值显示出来
        r.setChartValuesTextAlign(Align.RIGHT);
        r.setChartValuesSpacing(10);//显示的点的值与图的距离
        r.setChartValuesTextSize(15);//点的值的文字大小
        r.setDisplayChartValuesDistance(30);
        
      //表格加载数据样式
        renderer.addSeriesRenderer(r);
        
        //XYMultipleSeriesDataset进行显示数据XYMultipleSeriesDataset类型的对象,用于提供图表需要表示的数据集
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();        
        XYSeries series = new XYSeries("全天血糖变化");
        for(int i=0;i<x.length;i++){
         series.add(x[i], y[i]);
        }
     // 将数据加入图表,将需要绘制的点放入dataset中
        dataset.addSeries(series);
        
        View chart = ChartFactory.getLineChartView(this, dataset, renderer);
        chart.setBackgroundColor(this.getResources().getColor(R.color.back));
        this.setContentView(chart);
    }
 
}


总结如下:1、需要在工程目录下libs文件夹下添加achartengine-1.1.0.jar 文件以及在配置文件中添加 <activity android:name="org.achartengine.GraphicalActivity" />语句。

可以到官网下载需要的jar文件。http://code.google.com/p/achartengine/downloads/list

2、achartengine几个重要方法,掌握这几个方法就可以清除整个折线图的设计架构了。

    2.1

// XYMultipleSeriesRenderer构造显示渲染用途
        //XYMultipleSeriesRenderer类型的对象,用于提供图表展现时的一些样式
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 
用来显示底层的表格
  2.2 //XYSeriesRenderer 对点的绘制进行设置
        XYSeriesRenderer r = new XYSeriesRenderer();
这个用来设置在表上数据的显示形式,
  2.3<pre name="code" class="java">   2.3//表格加载数据样式
        renderer.addSeriesRenderer(r);这句话很重要,是将二者融为一体的方法。
2.4<pre name="code" class="java"> //XYMultipleSeriesDataset进行显示数据XYMultipleSeriesDataset类型的对象,用于提供图表需要表示的数据集
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
这句话是用来往折线图上加载数据的,通常是for循环来实现。
2.5<pre name="code" class="java"> XYSeries series = new XYSeries("全天血糖变化");
        for(int i=0;i<x.length;i++){
         series.add(x[i], y[i]);
        }
这段代码就是载入xy的数据

 
 
2.6<pre name="code" class="java"> // 将数据加入图表,将需要绘制的点放入dataset中
        dataset.addSeries(series);
这句话类似2.3的作用,加载数据
 
 
achartengine基本上就是这些,掌握这几种方法就很容易了,其他柱状图、饼状图等就可以举一反三了。完整代码在这里下载http://download.csdn.net/detail/haing1/8322509
 
 
 
 
 
 


你可能感兴趣的:(安卓)