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应用之PieChart(饼图)
(三)AChartEngine应用之BarChart(柱形图)
(四)AChartEngine应用之PieChart(动态饼图,允许产生动态数据并显示)
(五)AChartEngine应用之LineChart(模拟生命特征值图)
(六)AChartEngine应用之LineChart(模拟三角函数sin,cos)
(七)AChartEngine高级应用CombinedXYChart(组合统计图)
分享到:
相关推荐
用AChartEngine模拟sin,cos三角函数,这是高中的时候画过的函数图,现在通过代码来画就是不一样,我现在是测试了sin,cos其他的不知道AChartEngine能不能画。画这些函数的时候最好要弄多一些点,设置每个点的跨度不宜...
android 绘制折线图(AChartEngine)Linechart 动态更新横轴为获取的当前时间
import org.achartengine.chart.LineChart; import org.achartengine.chart.PieChart; import org.achartengine.chart.RangeBarChart; import org.achartengine.chart.ScatterChart; import org.achartengine.chart....
实现了折线图的实时动态更新,可以自定义X轴坐标,可是设置Y坐标的最大值和最小值,android 绘制折线图(AChartEngine)Linechart 动态更新横轴为获取的当前时间
构建饼图的步骤主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:<activity android:name="org.achartengine.GraphicalActivity" />
android绘图 画饼状图 achartengine开源项目 文件包含achartengine-1.1.0.jar、achartengine-1.1.0-demo-source.zip、achartengine-1.1.0-javadocs.zip
AChartEngine是为android应用而设计的绘图工具库。目前该库的最新稳定版本是0.7,支持绘制以下类型的图表: ?line chart ?area chart ?scatter chart ?time chart ?bar chart ?pie chart ?bubble chart ?doughnut ...
• line chart (折线图) • area chart (面积图;分区图,对比图) • scatter chart ( 散点图) • time chart (时间图;进度表) • bar chart (条形图;柱状图) • pie chart ( 饼图) • bubble chart (气泡图) • ...
AChartEngine是为Android应用而设计的绘图工具库。可用于绘制多种图表,目前该绘图工具库的最新最新版本的是achartengine-1.1.0.jar。ChartEngine支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、...
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 ...
achartengine引擎的中文注释图表是一个有大量中文注释版的AChartEngine图标引擎源码,AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型:range (high-low) bar chart (范围条形图)、dial ...
AChartEngine 是一个安卓系统上制作图表的框架,目前它支持如下的图表类型:range (high-low) bar chart (范围条形图)、dial chart / gauge (拨号盘/压力表)、combined (any combination of line, cubic line, ...
achartengine1.1.0.jar、achartengine1.2.0.jar,Android 绘图工具库,图标控件。支持绘制以下类型的图表:line chart、area chart、scatter chart、time chart、bar chart、pie chart、bubble chart
使用AChartEngine图表库实现动态饼图,可以实时传入数据并刷新饼图
AChartEngine 是一个安卓系统上制作图表的框架,使用简单,功能强大,目前它支持如下的图表类型:line chart (折线图),area chart (面积图;分区图,对比图),scatter chart ( 散点图),time chart (时间图;进度表),bar...
这个是AChartEngine图表的高级应用。 构建CombinedXYChart图的步骤主要分为以下三步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加:<activity android:name="org.achartengine.GraphicalActivity" /...
AChartEngine最新jar包
本次代码用于利用achartengine绘制折线图,分析了achartengine得主要结构方法,适用于初学者参考学习