Android绘制折线图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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对象:用于提供绘制的点集合的数据
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();