使用achartengine 实现简单静态、动态折线图

  AChartEngine是为Android应用而设计的绘图工具库。可用于绘制多种图表。ChartEngine支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、气泡式图表、环形图、高低交替图等。

        以上每种图表都可以包含多个序列, 可以将X轴以水平或垂直的形式显示,也支持很多自定义的特性。另外,图表可以作为View构建,也可以作为Intent构建这样可以被用于启动一个活动(Activity)。

       AChartEngine和JFreeChart都是采用Java编写的开放图表制作类库,前者是应用在android上,后者也能主要应用在JAVA SE 或者 JAVA EE上。AChartEngine是谷歌开发的开源项目。

资源下载:

1、 http://code.google.com/p/achartengine/downloads/list

2、 http://download.csdn.net/detail/a953210725/7722567

*****************************************************************************************************************************************************************************************

 折线图相关主要类介绍

1、XYSeries:该类表示一条折线的点集,也就是折线上的点的坐标。

2、XYMultipleSeriesDataset:该类是XYSeries的集合,因为一张图上可能存在多条折线。

3、XYSeriesRenderer:该类表示一条折线的风格,即颜色、粗细、节点等等。

4、XYMultipleSeriesRenderer:该类是XYSeriesRenderer的集合,因为一张图上可能存在多条折线。另外整个图表的风格也需要通过该类来实现。

5、ChartFactory:该类用数据集XYMultipleSeriesDataset对象与风格集XYMultipleSeriesRenderer对象来画图并将图加载到GraphicalView中。

                  其中画图包括两种方式:

                                 getLineChartIntent():直接新建一个Activity全屏显示生成的图表;

                                 getLineChartView()    :生成一个View,用户可以自行设置它的显示。

一个普通折线实现如下图所示:

achartenginePicture1

*****************************************************************************************************************************************************************************************

实现一个最简单的静态折线图

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

        // 用于存放每条折线的点数据
        XYSeries line1, line2;
        // 用于存放所有需要绘制的XYSeries
        XYMultipleSeriesDataset mDataset;
        // 用于存放每条折线的风格
        XYSeriesRenderer renderer1, renderer2;
        // 用于存放所有需要绘制的折线的风格
        XYMultipleSeriesRenderer mXYMultipleSeriesRenderer;

        GraphicalView chart;

        // 初始化,必须保证XYMultipleSeriesDataset对象中的XYSeries数量和
        // XYMultipleSeriesRenderer对象中的XYSeriesRenderer数量一样多
        line1 = new XYSeries("折线1");
        line2 = new XYSeries("折线2");
        renderer1 = new XYSeriesRenderer();
        renderer2 = new XYSeriesRenderer();
        mDataset = new XYMultipleSeriesDataset();
        mXYMultipleSeriesRenderer = new XYMultipleSeriesRenderer();

        // 为两个XYSeries对象分别填充数据
        Random r = new Random();

        for (int k = 0; k < 10; k++) {
            // 填x,y值
            line1.add(k, 20 + r.nextInt() % 100);
        }
        for (int k = 0; k < 10; k++) {
            // 填x,y值
            line2.add(k, 20 + r.nextInt() % 100);
        }

        // 为两个XYSeriesRenderer对象分别填充数据
        renderer1.setColor(Color.RED);
        renderer2.setColor(Color.BLUE);

        // 将XYSeries对象和XYSeriesRenderer对象分别添加到XYMultipleSeriesDataset对象和XYMultipleSeriesRenderer对象中。
        mDataset.addSeries(line1);
        mDataset.addSeries(line2);
        mXYMultipleSeriesRenderer.addSeriesRenderer(renderer1);
        mXYMultipleSeriesRenderer.addSeriesRenderer(renderer2);
        
        //通过该函数获取到一个View 对象
        chart = ChartFactory.getLineChartView(this, mDataset, mXYMultipleSeriesRenderer);
        
        //将该View 对象添加到layout中。
        layout.addView(chart, new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT));

    }


实现效果如下图所示:

achartenginePicture2

*****************************************************************************************************************************************************************************************

动态折线图

       上面实现了一个最简单的静态折线图,那我们有时需要实现一个动态的折线图,类似于windows任务管理器。其原理比较简单。

大致步骤和实现静态折线图一样,只是并没有直接为XYSeries对象一次性添加所有点坐标。而是动态的为XYSeries对象添加,并且每次添加完成后,刷新即可

具体步骤就不详述了,可以参考下面的Demo,里面实现了一个静态折线图和两种不同风格的动态折线图。

Demo:http://download.csdn.net/detail/a953210725/7722593

*****************************************************************************************************************************************************************************************
参考

1、简单使用achartengine绘制折线图:http://www.open-open.com/lib/view/open1396359314653.html

2、AChartEngine :http://download.csdn.net/detail/qiu_11/6851167

猜你喜欢

转载自blog.csdn.net/a953210725/article/details/38414159