有很多种实现的方法,我就把我写的一个例子直接拿出来吧= ,嘿嘿其实也是当时参考别人的(自己的图。多点的是上半部分的,下面的那个是跟X轴对应点数的)
import java.util.ArrayList;
import java.util.List;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.view.View;
public class WS_zhexian extends AbstractDemoChart {
public String getName() {
return "TestAChart";
}
public String getDesc() {
return "Test";
}
public GraphicalView CreateView(Context context){
String[] titles = new String[] { "COD达标率 ", "氨氮达标率"};
// x轴的值
List<double[]> x = new ArrayList<double[]>();
for (int i = 0; i < titles.length; i++) {
x.add(new double[] {1,2,3,4,5,6,7,8,9}); //从X周的 0算起来 总共有几个点
}
// y轴的值
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] { 10.3, 12.5, 13.8, 24.5, 30.4, 40.4, 50.4, 55.5, 60.6});
values.add(new double[] { 10, 15.6, 20.5, 18.6, 25.7, 30.6, 44.5, 55.5 ,64.8});
int[] colors = new int[] { Color.BLUE, Color.GREEN};
PointStyle[] styles = new PointStyle[] { PointStyle.POINT,PointStyle.POINT };
XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++) {
((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);
}
renderer.setBackgroundColor(Color.WHITE);
renderer.setApplyBackgroundColor(true);
renderer.setFitLegend(true);
// 图表与屏幕四边的间距颜色
renderer.setMarginsColor(Color.argb(0, 0xF3, 0xF3, 0xF3));
renderer.setChartTitleTextSize(30);
renderer.setAxisTitleTextSize(10);
// renderer.setLegendHeight(50);
renderer.setLegendTextSize(10); // 图例文字的大小--下面分类的字体大小
renderer.setMargins(new int[] { 50, 50, 20, 30 }); // 图离上做下右的间距,貌似没用
// x、y轴上刻度颜色
renderer.setXLabelsColor(Color.BLACK);
renderer.setYLabelsColor(0, Color.BLACK);
setChartSettings(renderer, "", "","", 1, 9 , 0, 90, Color.BLACK, Color.BLACK);
// 轴上数字的数量
renderer.setXLabels(0);
renderer.setYLabels(9);
/**
* 本项目 - 传入 第一个点 为 X轴的0坐标 为上一天的点数,所以不能为0 , 第2个点位当天点数
*/
renderer.addXTextLabel(2, "6月1号");
renderer.addXTextLabel(3, "6月2号");
renderer.addXTextLabel(4, "6月3号");
renderer.addXTextLabel(5, "6月4号");
renderer.addXTextLabel(6, "6月5号");
renderer.addXTextLabel(7, "6月6号");
renderer.addXTextLabel(8, "6月7号");
renderer.addXTextLabel(9, "6月8号");
renderer.setShowGrid(true); // 是否显示网格
renderer.setXLabelsAlign( Align.RIGHT);
renderer.setYLabelsAlign(Align.RIGHT);
renderer.setPanEnabled(false); //图表是否可以移动
renderer.setZoomEnabled(true); //图表是否可以缩放
renderer.setLegendHeight(100); // 图标文字距离底边的高度
renderer.setZoomButtonsVisible(false); // 设置放大缩小按钮是否可见
GraphicalView view= ChartFactory.getLineChartView(context, buildDataset(titles, x, values), renderer);
return view; //返回View对象
}
@Override
public Intent execute(Context context) {
// TODO Auto-generated method stub
return null;
}
}
也可以返回 intent对象
Intent intent = ChartFactory.getLineChartIntent(context, buildDataset(titles, x, values), renderer, "Average temperature");
intent = new zhexian_AChart_quandian().execute(this); startActivity(intent);
//-------------------------------------------------------------------------------------------------------------- // ------------------ 调用这个类的方法后 会返回1个 View对象,这样你就可以把这个View放到你自己的布局中啦,比如:--- //---------------------------------------------------------------------------------------------------------------- LinearLayout line1 = (LinearLayout) findViewById(R.id.zhexian); GraphicalView lineView1 = new AAMy_zhexian().CreateView(this); line1.addView(lineView1, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
下面的是 跟X轴多点的 ,是效果图的上半部分。
import java.util.ArrayList; import java.util.List; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.PointStyle; import org.achartengine.chart.BarChart.Type; import org.achartengine.renderer.SimpleSeriesRenderer; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.Paint.Align; import android.view.View;// 这个是 一天记录 2个数据的 所以8天就 - 16个点(当时要求第一个点 从中间开始 晕- -,当然可以自己设置从 0.0开始) public class AAMy_zhexian extends AbstractDemoChart { public String getName() { return "TestAChart"; } public String getDesc() { return "*************TestAChart***************"; }public GraphicalView CreateView(Context context){ // 每个item的title String[] titles = new String[] { "COD达标率 ", "氨氮达标率", "污染物排放浓度 COD", "Skiathos" }; // x轴的值 List<double[]> x = new ArrayList<double[]>(); for (int i = 0; i < titles.length; i++) { x.add(new double[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}); //从X周的 0算起来 总共有几个点 } // y轴的值 List<double[]> values = new ArrayList<double[]>(); values.add(new double[] { 12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4,26.1,12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4,26.1}); values.add(new double[] { 10, 10, 12, 15, 20, 24, 26, 26 , 10, 10, 12, 15, 20, 24, 26, 26}); values.add(new double[] { 5, 5.3, 8, 12, 17, 22, 24.2, 24 ,5, 5.3, 8, 12, 17, 22, 24.2, 24 }); values.add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25 , 9, 10, 11, 15, 19, 23, 26, 25}); int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.CYAN, Color.YELLOW }; // 点的样式 DIAMOND正方形 TRIANGLE 三角形 SQUARE 圆形 PointStyle[] styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT, PointStyle.POINT, PointStyle.POINT }; //Renderer 就是渲染器,设置图表显示的一些特征,比如图表的大小,标题,坐标轴的颜色,背景颜色等 XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles); int length = renderer.getSeriesRendererCount(); // 点是空心还是实心 for (int i = 0; i < length; i++) { ((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true); } // 图表部分的背景颜色 //renderer.setBackgroundColor(Color.parseColor("#f3f3f3")); renderer.setBackgroundColor(Color.WHITE); renderer.setApplyBackgroundColor(true); //设置显示点上的值 // renderer.setDisplayChartValues(true); // renderer.setChartValuesTextSize(18); renderer.setFitLegend(true);//调整合适的位置 // 图表与屏幕四边的间距颜色 renderer.setMarginsColor(Color.argb(0, 0xF3, 0xF3, 0xF3)); renderer.setChartTitleTextSize(30); renderer.setAxisTitleTextSize(10); // renderer.setLegendHeight(50); renderer.setLegendTextSize(10); // 图例文字的大小--下面分类的字体大小 renderer.setMargins(new int[] { 50, 50, 20, 30 }); // 图离上做下右的间距,貌似没用 // x、y轴上刻度颜色 renderer.setXLabelsColor(Color.BLACK); renderer.setYLabelsColor(0, Color.BLACK); // 最后两个参数代表轴的颜色和轴标签的颜色 1-9 X是 1到9 0-90 Y 0到90 // setChartSettings(renderer, "图标上方的文字", "图标下方的文字", // "图标左侧的文字", 0.0, 16, 0, 90, Color.BLACK, Color.BLACK); setChartSettings(renderer, "", "","", 0.0, 16, 0, 90, Color.BLACK, Color.BLACK); // 轴上数字的数量 renderer.setXLabels(0); renderer.setYLabels(9); // 自定义横轴 X的标识 renderer.addXTextLabel(2, "6月1号"); renderer.addXTextLabel(4, "6月2号"); renderer.addXTextLabel(6, "6月3号"); renderer.addXTextLabel(8, "6月4号"); renderer.addXTextLabel(10, "6月5号"); renderer.addXTextLabel(12, "6月6号"); renderer.addXTextLabel(14, "6月7号"); renderer.addXTextLabel(16, "6月8号"); // renderer.setBarSpacing(1); // 是否显示网格 // renderer.setPanLimits(new double[] { -10, 20, -10, 40 }); //设置拖动时X轴Y轴允许的最大值最小值. // renderer.setZoomLimits(new double[] { -10, 20, -10, 40 });//设置放大缩小时X轴Y轴允许的最大最小值. renderer.setShowGrid(true); // x或y轴上数字的方向,相反的。 renderer.setXLabelsAlign( Align.RIGHT); renderer.setYLabelsAlign(Align.RIGHT); renderer.setPanEnabled(false); //图表是否可以移动 renderer.setZoomEnabled(true); //图表是否可以缩放 renderer.setLegendHeight(100); // 图标文字距离底边的高度 //renderer.setZoomEnabled(true, false); 拖动的时候 Y轴不动 //renderer.setPanEnabled(true, false); 拖动的时候 X轴不动 renderer.setZoomButtonsVisible(false); // 设置放大缩小按钮是否可见 // renderer.setPanLimits(new double[] { -10, 20, -10, 40 }); // renderer.setZoomLimits(new double[] { -10, 20, -10, 40 }); /** 1、ChartFactory 传入Renderer,Dataset的参数, 然后用getXXXChartIntent(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset)方法进行图表的显示 2、XYMutilpleSeriesRenderer 用于进行绘制的设置,添加的Renderer对象,用于定义绘制的点集合设置,注意数量要和Dataset添加的XYseries一致!!! */ //Intent intent = ChartFactory.getLineChartIntent(context, // buildDataset(titles, x, values), renderer, // "Average temperature"); //ChartFactory.getBarChartView(context, dataset, renderer, type); //把图表变成 View的方法, GraphicalView view= ChartFactory.getLineChartView(context, buildDataset(titles, x, values), renderer); return view; } @Override public Intent execute(Context context) { // TODO Auto-generated method stub return null; }}