应用程序的开发过程中,经常会遇到和曲线图打交道的情况,相比自己写代码绘制,无疑的,使用一些美观高效的开源库是一个更好的选择。目前开源的曲线图绘制工作有很多,本文以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);
}
}
分享到:
相关推荐
在Android开发中,有时我们需要展示数据的变化趋势,这时动态曲线图是一种非常有效的视觉表现形式。AChartEngine是一个轻量级的库,专为Android平台设计,用于创建各种图表,包括线形图、饼图、柱状图等。在这个实例...
在Android应用开发中,数据可视化是一项重要的功能,能够帮助用户直观地理解复杂的数据信息。aChartEngine是一个强大的开源库,专门用于在Android平台上创建各种类型的图表,包括折线图、柱状图、饼图等。本文将深入...
在Android应用开发中,`ACHartEngine`是一个强大的图表库,它允许开发者轻松地在应用程序中集成各种类型的图表,如折线图、柱状图、饼图等。本指南将详细解析如何使用`ACHartEngine`创建曲线图,并介绍其最新版的...
AchartEngine是一款强大的图表库,特别适用于Android应用开发,它能帮助开发者轻松地创建各种类型的图表,如曲线图和柱形图。对于那些刚开始接触数据可视化或者需要在Android应用中展示数据的新手开发者来说,...
在Android开发中,数据可视化是不可或缺的一部分,尤其是在创建各种类型的图表时,如曲线图、折线图、双曲线图、柱形图和饼图。这些图表可以帮助用户直观地理解复杂的数据信息。本资源提供了一个基于AChartEngine库...
在Android应用开发中,视觉元素的呈现对于数据的展示和用户交互至关重要,特别是各种图表,如曲线图、柱状图和饼形图。AChartEngine是一个强大的开源库,专为Android设计,它允许开发者轻松地在应用程序中创建这些...
在Android应用开发中,数据可视化是一个重要的环节,可以帮助用户更直观地理解复杂的数据。AChartEngine就是这样一款强大的图表库,它专为Android平台设计,允许开发者轻松创建各种类型的统计图表,如柱状图、曲线图...
在Android应用开发中,视觉数据展示是至关重要的,特别是在数据密集型的应用中。`achartengine`是一个开源的图表库,允许开发者轻松地为Android应用添加各种图表,如折线图、柱状图、饼图等。这个项目,"基于...
android比较不错的 achartengine 股票曲线图
2. **绘图库**:Android SDK本身并不直接提供绘制曲线图的功能,但可以利用第三方库,如MPAndroidChart、AChartEngine等,或者自己实现绘图逻辑。如果选择自定义实现,你需要了解`Canvas`类和相关的绘图方法,如`...
在Android应用开发中,数据可视化是一项重要的功能,它可以帮助用户直观地理解复杂的数据。本教程主要涉及使用AChartEngine库创建条形图、饼图和曲线图的详细实例,非常适合开发者快速集成到自己的项目中。 首先,...
在Android开发中,AChartEngine是一个非常实用的开源图表库,它可以帮助开发者轻松地在应用程序中展示各种类型的图表,如折线图、柱状图、饼图等。本篇文章将详细探讨如何使用AChartEngine创建折线图,并通过源码...
标题中的“安卓图表报表相关-里面有曲线图折线图双曲线图柱形图饼图在achartengine的基础上更改了一些颜色.zip”表明这是一个关于Android应用程序开发的资源包,专注于图表和报表的展示。其中包含了多种类型的图表,...
在Android开发中,绘制曲线图是一项常见的任务,特别是在制作数据可视化应用、游戏或者任何需要图形表示的场景。这个"Android应用源码之安卓画曲线图代码.zip"压缩包很可能是包含了一个示例项目,用于展示如何在...
Achartengine是一个轻量级的图表库,适用于Android应用,它支持多种图表类型,包括线形图、饼图、条形图等。在Android手机传感器实时数据展示的场景中,线形图是最常见的选择,因为它能直观地显示数据随时间变化的...
Achartengine是一个强大的开源Java库,它允许开发者轻松地在Android平台上创建各种图表,包括折线图、柱状图、饼图等。...掌握这些知识和技巧,对于开发涉及数据可视化的Android应用来说是十分重要的。
这里提到的"AChartEngine"是一个开源的Android图表库,它为开发者提供了创建各种图表的能力,包括曲线图、折线图、双曲线图、柱形图和饼图。这些图表类型在数据展示和分析中都有广泛的应用。 1. **曲线图**:曲线图...
利用achartengine实现的实时曲线图,其中有两种实现方式(含四种表现方式),使用时请先将android-support-v7-appcompat导入,然后导入RealTimeChart,导入完成后,修改Library引用,方法如下:右击RealTimeChart...
在Android开发中,有时我们需要展示数据,而曲线图或折线图是一种直观且常见的方法,尤其在统计、分析和监控等场景中。本教程将详细讲解如何在Android应用中实现曲线图的绘制,主要利用XYMultipleSeriesRenderer库来...