绘制折线图
1.把achartengine-1.1.0文件夹下的achartengine-1.1.0.jar文件copy到项目的libs目录下,并Build Pathàadd.
2.把achartengine-1.1.0-demo-source文件import到Eclipse中运行查看效果。
publicclassTuBiaoUtil {
publicstatic ViewcreatTubiaoView(Context context,WeatherBean weatherBean){
1. View view=null;
2. //填充内容
//数据集合
3. XYMultipleSeriesDataset dataset=getDemoDataset(weatherBean);
4. //渲染器
5. XYMultipleSeriesRenderer renderer=getDemoRenderer();
6.
7.
8. view=ChartFactory.getLineChartView(context, dataset,renderer);
9. returnview;
10. }
11. /**
12. * 创建渲染器
13. * 一个总渲染器,有多少折现图,就创建多少子渲染器
14. * 一条折现由对应的一条子渲染器进行渲染,颜色,样式,文字。。。
15. * @return
16. */
17. privatestaticXYMultipleSeriesRenderer getDemoRenderer() {
18. // 颜色值
19. int[]colors = newint[]{ Color.RED,Color.GREEN};
20. // 点的一个样式
21. PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,
22. PointStyle.DIAMOND };
23. // 创建渲染器
24. XYMultipleSeriesRenderer renderer = buildRenderer(colors,styles);
25. returnrenderer;
26. }
27.
28. privatestaticXYMultipleSeriesRenderer buildRenderer(int[] colors,
29. PointStyle[] styles) {
30. XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
31. renderer.setAxisTitleTextSize(16);
32. renderer.setChartTitleTextSize(20);
33. renderer.setLabelsTextSize(15);
34. renderer.setLegendTextSize(15);
35. renderer.setPointSize(5f);
36. renderer.setMargins(newint[] { 20, 30, 15, 20 });
37. intlength = colors.length;
38. for(inti = 0; i < length; i++) {
39. XYSeriesRenderer r = new XYSeriesRenderer();
40. r.setColor(colors[i]);
41. r.setPointStyle(styles[i]);
42. renderer.addSeriesRenderer(r);
43. }
44. //继续的配置
45. intlength2 = renderer.getSeriesRendererCount();
46. for (int i = 0; i < length2;i++) {
47. ((XYSeriesRenderer)renderer.getSeriesRendererAt(i)).setFillPoints(true);
48. }
49. setChartSettings(renderer,"七天温度走向", "天", "温度℃",0.5, 7.5, -10, 40,
50. Color.LTGRAY, Color.LTGRAY);
51. renderer.setXLabels(7);
52. renderer.setYLabels(8);
53. renderer.setShowGrid(true);
54. renderer.setXLabelsAlign(Align.RIGHT);
55. renderer.setYLabelsAlign(Align.RIGHT);
56. renderer.setZoomButtonsVisible(true);
57. renderer.setPanLimits(newdouble[] { -10, 20, -10, 40});
58. //放大图表
59. renderer.setZoomLimits(newdouble[] { -10, 20, -10, 40});
60.
61.
62. returnrenderer;
63. }
64.
65. protectedstaticvoidsetChartSettings(XYMultipleSeriesRenderer renderer, String title, StringxTitle,
66. String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,
67. int labelsColor) {
68. renderer.setChartTitle(title);
69. renderer.setXTitle(xTitle);
70. renderer.setYTitle(yTitle);
71. renderer.setXAxisMin(xMin);
72. renderer.setXAxisMax(xMax);
73. renderer.setYAxisMin(yMin);
74. renderer.setYAxisMax(yMax);
75. renderer.setAxesColor(axesColor);
76. renderer.setLabelsColor(labelsColor);
77. }
78.
79. /**
80. * 创建图表的总数据集,图表有几条折线图,就需要添加多少个子数据集子数据集用XYSeries封装,x代表X轴坐标,values代表Y轴坐标
81. *
82. * @return
83. */
84. privatestaticXYMultipleSeriesDataset getDemoDataset(
85. WeatherBean weatherBean) {
86. // 标题
87. String[] title = { "最高温度", "最低温度" };
88. // 1)x轴
89. List<double[]> x = newArrayList<double[]>();
90. x.add(newdouble[]{ 1, 2, 3, 4, 5, 6, 7 });
91. x.add(newdouble[]{ 1, 2, 3, 4, 5, 6, 7 });
92.
93. /*List<double[]> x = new ArrayList<String[]>();
94. x.add(new double[] { "一", "二","三", "四", "五", "六", "日" });
95. x.add(new double[] { "一", "二","三", "四", "五", "六", "日" });*/
96. // 2)y轴
97. List<double[]> values = new ArrayList<double[]>();
98. double[]maxTem = newdouble[7];
99. double[]minTem = newdouble[7];
100. // 3)把天气数据放入
101. List<Daily> forecast = weatherBean.getDaily_forecast();
102. for(inti = 0; i < forecast.size(); i++) {
103. maxTem[i] = Double.parseDouble(forecast.get(i).getTmp().getMax());
104. minTem[i] = Double.parseDouble(forecast.get(i).getTmp().getMin());
105. }
106. values.add(maxTem);
107. values.add(minTem);
108. // 整理成Achart特有的数据
109. XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
110. for(inti = 0; i < title.length;i++) {
111. // 小数据集
112. XYSeries series = new XYSeries(title[i]);
113. double[] xV = x.get(i);
114. double[] yV = values.get(i);
115. int seriesLength = xV.length;
116. for (inty = 0; y < seriesLength; y++) {
117. // 填充数据
118. series.add(xV[y], yV[y]);
119. }
120. dataset.addSeries(series);
121. }
122. returndataset;
123. }
124. }