`
zhenping
  • 浏览: 83247 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

AChartEngine应用之LineChart(模拟三角函数sin,cos)

 
阅读更多

AChartEngine应用之LineChart(模拟三角函数sin,cos)

用AChartEngine模拟sin,cos三角函数,这是高中的时候画过的函数图,现在通过代码来画就是不一样,我现在是测试了sin,cos其他的不知道AChartEngine能不能画。画这些函数的时候最好要弄多一些点,设置每个点的跨度不宜太大了,因为这些三角函数图还是由一系列的点组成,点太少可能导致不圆滑,构建LineChart图的步骤主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:<activityandroid:name="org.achartengine.GraphicalActivity" />

1.设置XYMultipleSeriesRenderer

XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

renderer.setAxisTitleTextSize(16);

renderer.setChartTitleTextSize(20);

renderer.setLabelsTextSize(15);

renderer.setLegendTextSize(15);

renderer.setPointSize(5f);

renderer.setMargins(new int[] { 20, 30, 15, 20 });// 上,左,下,右

renderer.setXLabelsAlign(Align.RIGHT);

renderer.setXLabels(0);// 设置X轴显示的刻度标签的个数

renderer.setZoomEnabled(false);

renderer.setPanEnabled(false, false);// 不允许左右拖动,不允许上下拖动.

2.构建数据源CategorySeries

int step = 2;// 设置每个点的跨度,不宜太大了,因为这些三角函数图还是由一

系列的点组成,

点太少可能导致不圆滑

int count = 360 / step + 1;// 需要产生的点数

List<double[]> x = new ArrayList<double[]>();// X轴数据集

List<double[]> y = new ArrayList<double[]>();// Y轴数据集

x.add(new double[count]);

x.add(new double[count]);

double[] sinValues = new double[count];

double[] cosValues = new double[count];

y.add(sinValues);// 添加sin

y.add(cosValues);// 添加cos

for (int i = 0; i < count; i++) {// 产生点

int angle = i * step;

x.get(0)[i] = angle;

x.get(1)[i] = angle;

double rAngle = Math.toRadians(angle);

sinValues[i] = Math.sin(rAngle);// 获取相应的sin值

cosValues[i] = Math.cos(rAngle);// 获取相应的cos值

}态

3.通过ChartFactory.getLineChartView生成曲线图

mChartView = ChartFactory.getLineChartView(getApplicationContext(),

buildDataset(titles, x, y), renderer);

mLinear.addView(mChartView, new LayoutParams(LayoutParams.FILL_P

ARENT,

LayoutParams.FILL_PARENT));

效果图:


Code:

package com.qiuzhping.achart;

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

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
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.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

/**
 * @项目名称:Trigonometric
 * @类名称:Trigonometric
 * @作者:Qiuzhping
 * @时间:2014-1-18上午7:40:37
 * @作用 :用AChartEngine模拟sin,cos三角函数,这是高中的时候划过的函数图,现在通过代码来画就是不一样,我现在是测试了sin,cos
 *     其他的不知道AChartEngine能不能画。
 */
public class Trigonometric extends Activity {
	private LinearLayout mLinear;// 布局
	private int step = 2;// 设置每个点的跨度,不宜太大了,因为这些三角函数图还是由一系列的点组成,点太少可能导致不圆滑
	private int count = 360 / step + 1;// 需要产生的点数
	private List<double[]> x = new ArrayList<double[]>();// X轴数据集
	private List<double[]> y = new ArrayList<double[]>();// Y轴数据集
	private String[] titles;// 显示标题
	private int[] colors;// 颜色
	private PointStyle[] styles;// 图表样式
	private XYMultipleSeriesRenderer renderer;// 住描绘器
	private GraphicalView mChartView;// 显示在屏幕上的对象

	public void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,
			List<double[]> xValues, List<double[]> yValues, int scale) {// 设置点集
		int length = titles.length;
		for (int i = 0; i < length; i++) {
			XYSeries series = new XYSeries(titles[i], scale);
			double[] xV = xValues.get(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);
		}
	}

	protected XYMultipleSeriesDataset buildDataset(String[] titles,
			List<double[]> xValues, List<double[]> yValues) {// 设置数据集
		XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
		addXYSeries(dataset, titles, xValues, yValues, 0);
		return dataset;
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.xy_chart);
		mLinear = (LinearLayout) findViewById(R.id.chart);// 获取布局
		mLinear.setBackgroundColor(Color.BLACK);// 设置背景色

		titles = new String[] { "sin", "cos" };

		x.add(new double[count]);
		x.add(new double[count]);
		double[] sinValues = new double[count];
		double[] cosValues = new double[count];
		y.add(sinValues);// 添加sin
		y.add(cosValues);// 添加cos
		for (int i = 0; i < count; i++) {// 产生点
			int angle = i * step;
			x.get(0)[i] = angle;
			x.get(1)[i] = angle;
			double rAngle = Math.toRadians(angle);
			sinValues[i] = Math.sin(rAngle);// 获取相应的sin值
			cosValues[i] = Math.cos(rAngle);// 获取相应的cos值
		}
		colors = new int[] { Color.BLUE, Color.RED };// 设置颜色

		styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT };// 设置样式
		renderer = buildRenderer(colors, styles);
		setChartSettings(renderer, " ", "X轴(单位:度)", "Y轴(sinχ、cosχ)", 0, 360,
				-1, 1, Color.GRAY, Color.LTGRAY);

		renderer.setXLabelsAlign(Align.RIGHT);
		renderer.setXLabels(0);// 设置X轴显示的刻度标签的个数
		renderer.setZoomEnabled(false);
		renderer.setPanEnabled(false, false);// 不允许左右拖动,不允许上下拖动.
		// renderer.setShowLegend(false);
		for (int i = 0; i < 8; i++) {// 自定义显示X轴
			renderer.addXTextLabel((i + 1) * 45, "" + (i + 1) * 45);
		}
		mChartView = ChartFactory.getLineChartView(getApplicationContext(),
				buildDataset(titles, x, y), renderer);
		mLinear.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
				LayoutParams.FILL_PARENT));
	}

	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);// X轴标题
		renderer.setYTitle(yTitle);// Y轴标题
		renderer.setXAxisMin(xMin);// X最小值
		renderer.setXAxisMax(xMax);// X最大值
		renderer.setYAxisMin(yMin);// Y最小值
		renderer.setYAxisMax(yMax);// Y最小值
		renderer.setAxesColor(axesColor);// X轴颜色
		renderer.setLabelsColor(labelsColor);// Y轴颜色
	}

	protected void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors,
			PointStyle[] styles) {// 设置描绘器属性
		renderer.setAxisTitleTextSize(16);
		renderer.setChartTitleTextSize(20);
		renderer.setLabelsTextSize(15);
		renderer.setLegendTextSize(15);
		renderer.setPointSize(5f);
		renderer.setMargins(new int[] { 20, 30, 15, 20 });// 上,左,下,右
		int length = colors.length;
		for (int i = 0; i < length; i++) {
			XYSeriesRenderer r = new XYSeriesRenderer();
			r.setColor(colors[i]);
			r.setPointStyle(styles[i]);
			renderer.addSeriesRenderer(r);
		}
	}

	protected XYMultipleSeriesRenderer buildRenderer(int[] colors,
			PointStyle[] styles) {// 图表描绘器
		XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
		setRenderer(renderer, colors, styles);
		return renderer;
	}
}
有兴趣的童鞋可以继续研究。。。

对应的完整项目:http://download.csdn.net/detail/qiu_11/6860637

未完待续.....

AChartEngine应用系列文章

(一)AChartEngine简介

(二)AChartEngine应用之PieChart(饼图)

(三)AChartEngine应用之BarChart(柱形图)

(四)AChartEngine应用之PieChart(动态饼图,允许产生动态数据并显示)

(五)AChartEngine应用之LineChart(模拟生命特征值图)

(六)AChartEngine应用之LineChart(模拟三角函数sin,cos)

(七)AChartEngine高级应用CombinedXYChart(组合统计图)






分享到:
评论

相关推荐

    AChartEngine+模拟正弦sin、余弦cos函数

    用AChartEngine模拟sin,cos三角函数,这是高中的时候画过的函数图,现在通过代码来画就是不一样,我现在是测试了sin,cos其他的不知道AChartEngine能不能画。画这些函数的时候最好要弄多一些点,设置每个点的跨度不宜...

    android 绘制折线图(AChartEngine)Linechart 动态更新横轴为获取的当前时间

    在Android开发中,有时我们需要展示数据的动态变化,比如实时监测的数据流或模拟股票市场走势。在这种场景下,使用图表库来绘制折线图是非常有用的。`AChartEngine`是一个强大的开源库,专为Android设计,它允许...

    achartengine

    import org.achartengine.chart.LineChart; import org.achartengine.chart.PieChart; import org.achartengine.chart.RangeBarChart; import org.achartengine.chart.ScatterChart; import org.achartengine.chart....

    Android 实时动态折线图Linechart

    `AChartEngine`是Android平台上一个流行的数据可视化库,它提供了多种图表类型,包括折线图(Line Chart)、条形图(Bar Chart)、饼图(Pie Chart)等。在这里,我们将主要关注如何利用`AChartEngine`来创建动态...

    AChartEngine应用之PieChart(饼图)

    构建饼图的步骤主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:&lt;activity android:name="org.achartengine.GraphicalActivity" /&gt;

    achartengine-1.0.0.jar.rar_Achartengine1.0.0_achartengine jar_ac

    AChartEngine是为android应用而设计的绘图工具库。目前该库的最新稳定版本是0.7,支持绘制以下类型的图表: ?line chart ?area chart ?scatter chart ?time chart ?bar chart ?pie chart ?bubble chart ?doughnut ...

    安卓图表框架achartengine-1.0.0

    • line chart (折线图) • area chart (面积图;分区图,对比图) • scatter chart ( 散点图) • time chart (时间图;进度表) • bar chart (条形图;柱状图) • pie chart ( 饼图) • bubble chart (气泡图) • ...

    Achartengine

    Achartengine 提供了一组API,通过这些API可以创建多种图表类型,如柱状图(Bar Chart)、折线图(Line Chart)、饼图(Pie Chart)、散点图(Scatter Chart)以及甘特图(Gantt Chart)等。这些图表可用于显示时间...

    AChartEngine

    AChartEngine是为Android应用而设计的绘图工具库。可用于绘制多种图表,目前该绘图工具库的最新最新版本的是achartengine-1.1.0.jar。ChartEngine支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、...

    Android图表--achartengine

    AChartEngine is a charting library for Android applications It currently supports the following chart types: line chart area chart scatter chart time chart bar chart pie chart bubble chart doughnut ...

    Achartengine0.6-Demo

    在Android应用开发中,AChartEngine提供了一种简单且灵活的方式来展示数据,尤其适用于数据分析、可视化报告或者监控应用。 标题"Achartengine0.6-Demo"表明这是一个关于AChartEngine 0.6版本的示例项目,它展示了...

    Android Line Chart and Data View Demo

    本项目“Android Line Chart and Data View Demo”利用了achartengine库,该库是一个轻量级的图表绘制工具,适合于Android应用程序中的数据可视化。 首先,我们要理解achartengine库。它提供了多种图表类型,包括...

    android-chart_line.rar_Android 折线_android_line chart android

    "android-chart_line.rar" 是一个专门针对Android平台的折线图库,它允许开发者在应用程序中创建和展示动态、交互式的折线图。这个压缩包提供了一个简化的示例,帮助开发者快速上手使用Android折线图功能。 折线图...

    Achartengine Demo

    1. **图表类型**:Achartengine支持多种图表类型,包括折线图(LineChart)、饼图(PieChart)和条形图(BarChart)。这些图表可以用来展示数据的变化趋势、分布情况或者比例关系。 2. **数据源**:在绘制图表之前...

    achartengine-1.2.0.jar

    例如,一个健身应用可以使用AChartEngine展示用户的运动步数趋势图,或者一个股票应用可以展示股价的折线图。 五、进阶功能 除了基础功能外,achartengine还提供了一些进阶特性,如: 1. 图表交互:用户可以通过...

    achartengine引擎的中文注释图表.zip

    achartengine引擎的中文注释图表是一个有大量中文注释版的AChartEngine图标引擎源码,AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型:range (high-low) bar chart (范围条形图)、dial ...

    android achartengine 最新demo

    1. 折线图(Line Chart):折线图是最常见的图表之一,用于显示趋势或变化。`ACHartEngine`通过`org.achartengine.chart.LineChart`类来创建折线图,你可以设置线的颜色、宽度,以及数据点的形状和大小。 2. 柱状图...

    Android例子源码基于achartengine引擎的中文注释图表

    AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型:range (high-low) bar chart (范围条形图)、dial chart / gauge (拨号盘/压力表)、combined (any combination of line, cubic line, ...

Global site tag (gtag.js) - Google Analytics