`
xfjt297857539
  • 浏览: 152187 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用achartengine开发曲线图相关的Android应用程序(zhuan)

阅读更多

应用程序的开发过程中,经常会遇到和曲线图打交道的情况,相比自己写代码绘制,无疑的,使用一些美观高效的开源库是一个更好的选择。目前开源的曲线图绘制工作有很多,本文以achartengine为例,介绍在Android系统下开发曲线图相关程序的有关方法。

AChartEngine是专为Android系统设计的图形库,可以用于绘制多种图表,具体列表如下,且每张图上都支持多条曲线:

line chart ; area chart ; scatter chart ; time chart ; bar chart ;

pie chart ; bubble chart ; doughnut chart ; range (high-low) bar chart ;

下面主要介绍画line chart的方法:

几个主要的类:

XYMultipleSeriesRenderer renderer; //曲线图的格式,包括颜色,值的范围,点和线的形状等等
XYMultipleSeriesDataset dataset; //保存点集数据 ,包括每条曲线的X,Y坐标

对图表而言几个重要的变量:

String[] titles; //每条曲线的名称
List<double []> x; //点集的x坐标
List<double []> y; //点集的y坐标
int[] colors; //每条曲线的颜色
PointStyle[] styles; //每条曲线点的形状

XYMultipleSeriesRenderer中的一些重要的方法,由名称可以看出具体功能:

public void addSeriesRenderer(SimpleSeriesRenderer renderer)
public void removeSeriesRenderer(SimpleSeriesRenderer renderer)
public SimpleSeriesRenderer getSeriesRendererAt(int index)

public void setBackgroundColor(int color)
public void setAxesColor(int color)
public void setLabelsColor(int color)
public void setShowAxes(boolean showAxes)

public void setChartTitle(String title)
public void setChartTitleTextSize(float textSize)
public void setXTitle(String title)
public void setAxisTitleTextSize(float textSize)
public void setXAxisMin(double min)
public void setXAxisMax(double max)
public void setYTitle(String title)
public void setYAxisMin(double min)
public void setYAxisMax(double max)


XYMultipleSeriesDataset中的一些重要方法,由名称可看出具体功能:

public void addSeries(XYSeries series)
public void removeSeries(int index)
public void removeSeries(XYSeries series)


AChartEngine的事例代码中提供了一些管理XYMultipleSeriesDataset和XYMultipleSeriesRenderer的方式,通过buildRenderer,setChartSettings,buildDataset来实现,减少了分条目设置属性的麻烦,具体见代码中的函数。

下文代码在一张图中绘制了两条曲线,并在主窗体中显示出来:

package net.ispiders;

import java.util.ArrayList;
import java.util.List;

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.os.Bundle;
import android.view.View;

public class chartDemo extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] titles = new String[] { "First", "Second"};

        List x = new ArrayList();
        List y = new ArrayList();

        x.add(new double[] { 1, 3, 5, 7, 9, 11} );
        x.add(new double[] { 0, 2, 4, 6, 8, 10} );

        y.add(new double[] { 3, 14, 5, 30, 20, 25});
        y.add(new double[] { 18, 9, 21, 15, 10, 6});

        XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);

        int[] colors = new int[] { Color.BLUE, Color.GREEN};
        PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND};
        XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles, true);

        setChartSettings(renderer, "Line Chart Demo", "X", "Y", -1, 12, 0, 35 , Color.WHITE, Color.WHITE);

        View chart = ChartFactory.getLineChartView(this, dataset, renderer);

        setContentView(chart);
    }

    protected XYMultipleSeriesDataset buildDataset(String[] titles,
                                                   List xValues,
                                                   List yValues)
    {
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

        int length = titles.length;                  //有几条线
         for (int i = 0; i < length; i++)
        {
            XYSeries series = new XYSeries(titles[i]);    //根据每条线的名称创建
              double[] xV = xValues.get(i);                 //获取第i条线的数据
              double[] yV = yValues.get(i);
            int seriesLength = xV.length;                 //有几个点

              for (int k = 0; k < seriesLength; k++)        //每条线里有几个点
              {
                series.add(xV[k], yV[k]);
            }

            dataset.addSeries(series);
        }

        return dataset;
    }

    protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles, boolean fill)
    {
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        int length = colors.length;
        for (int i = 0; i < length; i++)
        {
            XYSeriesRenderer r = new XYSeriesRenderer();
            r.setColor(colors[i]);
            r.setPointStyle(styles[i]);
            r.setFillPoints(fill);
            renderer.addSeriesRenderer(r);
        }
        return renderer;
    }

    protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title,
                                String xTitle,String yTitle, double xMin,
                                double xMax, double yMin, double yMax,
                                int axesColor,int labelsColor)
    {
        renderer.setChartTitle(title);
        renderer.setXTitle(xTitle);
        renderer.setYTitle(yTitle);
        renderer.setXAxisMin(xMin);
        renderer.setXAxisMax(xMax);
        renderer.setYAxisMin(yMin);
        renderer.setYAxisMax(yMax);
        renderer.setAxesColor(axesColor);
        renderer.setLabelsColor(labelsColor);
    }
}
  • 大小: 29.5 KB
分享到:
评论
1 楼 cn23snyga 2012-02-16  
请教贵博,用ACE 绘制出的图表,可以捕捉到点击事件的坐标值吗?(注:是图表中的坐标,而不是屏幕的坐标,或者有好方法可以二者换算也可以)

相关推荐

    使用AChartEngine画动态曲线图

    在Android开发中,有时我们需要展示数据的变化趋势,这时动态曲线图是一种非常有效的视觉表现形式。AChartEngine是一个轻量级的库,专为Android平台设计,用于创建各种图表,包括线形图、饼图、柱状图等。在这个实例...

    Android报表库aChartEngine 横轴为时间曲线图表

    在Android应用开发中,数据可视化是一项重要的功能,能够帮助用户直观地理解复杂的数据信息。aChartEngine是一个强大的开源库,专门用于在Android平台上创建各种类型的图表,包括折线图、柱状图、饼图等。本文将深入...

    AchartEngine 画曲线图,柱形图

    AchartEngine是一款强大的图表库,特别适用于Android应用开发,它能帮助开发者轻松地创建各种类型的图表,如曲线图和柱形图。对于那些刚开始接触数据可视化或者需要在Android应用中展示数据的新手开发者来说,...

    android achartengine曲线图 最新版

    在Android应用开发中,`ACHartEngine`是一个强大的图表库,它允许开发者轻松地在应用程序中集成各种类型的图表,如折线图、柱状图、饼图等。本指南将详细解析如何使用`ACHartEngine`创建曲线图,并介绍其最新版的...

    Android使用AChartEngine制作动态心电图效果

    Android使用AChartEngine制作动态心电图效果

    基于achartengine双Y轴动态图表Android源码

    在Android应用开发中,视觉数据展示是至关重要的,特别是在数据密集型的应用中。`achartengine`是一个开源的图表库,允许开发者轻松地为Android应用添加各种图表,如折线图、柱状图、饼图等。这个项目,"基于...

    Android高级应用源码-里面有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色

    在Android开发中,数据可视化是不可或缺的一部分,尤其是在创建各种类型的图表时,如曲线图、折线图、双曲线图、柱形图和饼图。这些图表可以帮助用户直观地理解复杂的数据信息。本资源提供了一个基于AChartEngine库...

    android折线图(AChartEngine和ichartjs)

    本篇文章将详细探讨如何在Android应用中实现折线图,主要涉及两个库:AChartEngine和iChartJS。 首先,我们来看AChartEngine。AChartEngine是一个开源的Android图表库,它提供了丰富的图表类型,包括折线图、柱状图...

    使用AChartengine画折线图Demo

    在这个"使用AChartengine画折线图Demo"中,我们将深入探讨如何利用AChartEngine库在Android应用中绘制折线图,以展示动态数据或统计信息。 首先,我们需要在项目中集成AChartEngine库。这通常通过添加依赖或下载库...

    使用Achartengine实现Android折线图开发

    在Android应用开发中,数据可视化是一项重要的功能,它能让用户直观地理解复杂的数据。Achartengine是一个开源的图表库,适用于Android平台,可以方便地创建各种类型的图表,如折线图、柱状图、饼图等。本篇将详细...

    Android中使用AChartEngine 来绘图demo

    Android中使用AChartEngine 来绘图的demo,比google code上的demo简单易懂。相关文章请看: http://blog.csdn.net/suiyuansanren/article/details/19819437

    Android制作曲线、柱状图、饼形等图表—使用AChartEngine

    在Android应用开发中,视觉元素的呈现对于数据的展示和用户交互至关重要,特别是各种图表,如曲线图、柱状图和饼形图。AChartEngine是一个强大的开源库,专为Android设计,它允许开发者轻松地在应用程序中创建这些...

    achartengine实现柱状图

    &lt;Android开发代码库&gt;achartengine实现柱状图、圆饼图、线图等 http://write.blog.csdn.net/postlist &lt;Android开发代码库&gt;achartengine实现柱状图、圆饼图、线图等 http://write.blog.csdn.net/postlist &lt;Android...

    安卓图表报表相关-里面有曲线图折线图双曲线图柱形图饼图在achartengine的基础上更改了一些颜色.zip

    标题中的“安卓图表报表相关-里面有曲线图折线图双曲线图柱形图饼图在achartengine的基础上更改了一些颜色.zip”表明这是一个关于Android应用程序开发的资源包,专注于图表和报表的展示。其中包含了多种类型的图表,...

    Android应用源码之安卓画曲线图代码.zip

    在Android开发中,绘制曲线图是一项常见的任务,特别是在制作数据可视化应用、游戏或者任何需要图形表示的场景。这个"Android应用源码之安卓画曲线图代码.zip"压缩包很可能是包含了一个示例项目,用于展示如何在...

    有曲线图 折线图 双曲线图 柱形图 饼图,在achartengine 的基础上 更改了一些颜色

    这里提到的"AChartEngine"是一个开源的Android图表库,它为开发者提供了创建各种图表的能力,包括曲线图、折线图、双曲线图、柱形图和饼图。这些图表类型在数据展示和分析中都有广泛的应用。 1. **曲线图**:曲线图...

    Android柱状曲线等统计图AChartEngine

    在Android应用开发中,数据可视化是一个重要的环节,可以帮助用户更直观地理解复杂的数据。AChartEngine就是这样一款强大的图表库,它专为Android平台设计,允许开发者轻松创建各种类型的统计图表,如柱状图、曲线图...

    android 股票曲线图

    android比较不错的 achartengine 股票曲线图

    用Achartengine的平滑曲线和温度柱状图

    在这个特定的例子中,我们关注的是如何使用Achartengine来绘制平滑曲线和温度柱状图。 首先,我们要理解平滑曲线的生成。在Achartengine中,平滑曲线通常是通过样条插值或高斯滤波等方法实现的。样条插值是一种数学...

Global site tag (gtag.js) - Google Analytics