Android绘制折线图
1、使用Android 绘图工具库 AChartEngine
2、绘制折线图的代码解析
关于AChartEngine
AChartEngine是为android应用而设计的绘图工具库。目前该库的最新稳定版本是0.7,支持绘制以下类型的图表:
line chart
area chart
scatter chart
time chart
bar chart
pie chart
bubble chart
doughnut chart
range (high-low) bar chart
dial chart / gauge
combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart
cubic line chart
以上每种图表可以包含多个序列, 可以将X轴以水平或垂直的形式显示,也支持很多自定义的特性. 图表可以作为Viewl构建,也可以作为Intent构建——这样可以被用于启动一个活动(Activity)
关于折线图的绘制
折线图的效果:
代码解释:
//每条曲线的名称
String[] titles = new String[]{"First","Second"};
List x = new ArrayList(); //点集的x坐标
List y = new ArrayList(); //点集的y坐标
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});
曲线的名称和坐标点都以定义
以下的解释参照上图
步骤一:折线图的坐标集
首先应该创建XYSeries对象android最新版:用于提供绘制的点集合的数据
XYSeries series = new XYSeries(titles[i]); // 根据每条线的名称创建
将所有的坐标加入这个集合
series.add(xV[k], yV[k]);
XYMultipleSeriesDataset对象用于保存点集数据 ,包括每条曲线的X,Y坐标
// 用于数据的存放
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset.addSeries(series);
步骤二:折线图的样式集
定义每条曲线的颜
int[] colors = new int[] {Color.BLUE,Color.GREEN};
定义每条曲线的点的形状
PointStyle[] styles =
new PointStyle[]{PointStyle.CIRCLE, PointStyle.DIAMOND};
曲线图的格式,包括颜,值的范围,点和线的形状等等 都封装在XYSeriesRender对象中,再将XYSeriesRender对象封装在XYMultipleSeriesRenderer对象中
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
r.setPointStyle(styles[i]);
r.setFillPoints(fill);
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.addSeriesRenderer(r);
设置折线图名称,坐标轴的名称,坐标轴的起点重点,坐标轴的颜,坐标轴上数字的颜
setChartSettings(renderer, "Line Chart Demo", "X", "Y", -1, 12, 0, 35 , Color.WHITE, Color.WHITE);
步骤三:显示折线图
View chart = ChartFactory.getLineChartView(this, dataset, renderer);
setContentView(chart);
//相当于一个包含x,y坐标的点
XYSeries series = new XYSeries(titles[i]);
//相当于点的结合的一个东西包含所有的XYSeries用于 保存点集数据
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。