使用ichartjs生成图表

官网:http://www.ichartjs.com/

 

  ichartjs 是一款基于HTML5的图形库。使用纯javascript语言, 利用HTML5的canvas标签绘制各式图形。 ichartjs致力于为您的应用提供简单、直观、可交互的体验级图表组件。是WEB/APP图表展示方面的解决方案 。如果你正在开发HTML5的应用,ichartjs正好适合您。 ichartjs目前支持饼图、环形图、折线图、面积图、柱形图、条形图。ichartjs是基于Apache License 2.0协议的开源项目。

  ichartjs 对新手是十分友好的,它的强大之处在于可以根据需要自动生成图表,然后你只需要将数据绑定就可以了。所以,对于新手来说,不需要你深入了解和学习,只需要绑定数据就可以了。

 

例子:

  1 <%@ page language="java" contentType="text/html; charset=UTF-8"
  2     pageEncoding="UTF-8"%>
  3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5 <html>
  6 <head>
  7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8 <title>新增会员分析</title>
  9 
 10 <%
 11 String basePath = request.getContextPath();
 12 //验证session,防止直接进入该页面
 13 Object obj = request.getSession().getAttribute("current");//获取session对象
 14 if(obj == null) {
 15     response.sendRedirect("../z_login.jsp");
 16 } 
 17 %>
 18 <script type="text/javascript" src="../ichartjs/ichart.1.2.1.min.js"></script>
 19 <script type="text/javascript" src="../js/jquery-3.2.1.min.js"></script>
 20 <script type="text/javascript"
 21     src="../jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
 22     <link rel="shortcut icon" href="img/logo1.jpg"/>
 23 <link type="text/css" rel="stylesheet"
 24     href="../jquery-easyui-1.5.1/themes/icon.css"></link>
 25 <link type="text/css" rel="stylesheet"
 26     href="../jquery-easyui-1.5.1/themes/default/easyui.css"></link>
 27 <script type="text/javascript"
 28     src="../jquery-easyui-1.5.1/locale/easyui-lang-zh_CN.js"></script>
 29     
 30 <style type="text/css">
 31 
 32     *{margin:0;padding:0} 
 33 
 34     .anal{
 35         text-decoration:none;
 36         color:black;
 37     }
 38 </style>
 39 </head>
 40 <body>
 41     <a id="analyear" class="anal" href="#">根据年份查询</a><br>
 42     <a id="analmon" class="anal" href="#">根据月份查询</a><br>
 43 
 44     <div id='ichart-render'></div>
 45 </body>
 46 </html>
 47 <script>
 48     $(function() {
 49         
 50         $("#analmon").click(function() {
 51             $.ajax({
 52                 type : "post",
 53                 url : "../useranal/analmon.do",
 54                 dataType : "json",//返回的
 55                 success : function(data) {
 56                     for(var i in data.rows.baifenbi){
 57                         alert(i);
 58                     }
 59                      var chart = iChart.create({
 60                             render:"ichart-render",
 61                             width:800,
 62                             height:400,
 63                             background_color:"#fefefe",
 64                             gradient:false,
 65                             color_factor:0.2,
 66                             border:{
 67                                   color:"BCBCBC",
 68                                   width:1
 69                             },
 70                             align:"center",
 71                             offsetx:0,
 72                             offsety:0,
 73                             sub_option:{
 74                                   border:{
 75                                         color:"#BCBCBC",
 76                                         width:1
 77                                   },
 78                                   label:{
 79                                         fontweight:500,
 80                                         fontsize:11,
 81                                         color:"#4572a7",
 82                                         sign:"square",
 83                                         sign_size:12,
 84                                         border:{
 85                                               color:"#BCBCBC",
 86                                               width:1
 87                                         },
 88                                         background_color:"#fefefe"
 89                                   }
 90                             },
 91                             shadow:true,
 92                             shadow_color:"#666666",
 93                             shadow_blur:2,
 94                             showpercent:false,
 95                             column_width:"70%",
 96                             bar_height:"70%",
 97                             radius:"90%",
 98                             title:{
 99                                   text:"新增会员分析",
100                                   color:"#111111",
101                                   fontsize:20,
102                                   font:"微软雅黑",
103                                   textAlign:"center",
104                                   height:30,
105                                   offsetx:0,
106                                   offsety:0
107                             },
108                             subtitle:{
109                                   text:"月新增会员分析",
110                                   color:"#111111",
111                                   fontsize:16,
112                                   font:"微软雅黑",
113                                   textAlign:"left",
114                                   height:20,
115                                   offsetx:0,
116                                   offsety:0
117                             },
118                             footnote:{
119                                   text:"",
120                                   color:"#111111",
121                                   fontsize:12,
122                                   font:"微软雅黑",
123                                   textAlign:"right",
124                                   height:20,
125                                   offsetx:0,
126                                   offsety:0
127                             },
128                             legend:{
129                                   enable:false,
130                                   background_color:"#fefefe",
131                                   color:"#333333",
132                                   fontsize:12,
133                                   border:{
134                                         color:"#BCBCBC",
135                                         width:1
136                                   },
137                                   column:1,
138                                   align:"right",
139                                   valign:"center",
140                                   offsetx:0,
141                                   offsety:0
142                             },
143                             coordinate:{
144                                   width:"80%",
145                                   height:"84%",
146                                   background_color:"#ffffff",
147                                   axis:{
148                                         color:"#a5acb8",
149                                         width:[1,"",1,""]
150                                   },
151                                   grid_color:"#d9d9d9",
152                                   label:{
153                                         fontweight:500,
154                                         color:"#666666",
155                                         fontsize:11
156                                   }
157                             },
158                             label:{
159                                   fontweight:500,
160                                   color:"#666666",
161                                   fontsize:11
162                             },
163                             type:"column2d",
164                             
165                             
166                             data:data.rows,  
167                       });
168                       chart.draw();
169 
170                 },
171                 error : function(msg) {
172                     cosole.log(msg);
173                 }
174             });
175         });
176 
177         
178         $("#analyear").click(function() {
179             $.ajax({
180                 type : "post",
181                 url : "../useranal/analyear.do",
182                 dataType : "json",//返回的
183                 success : function(data) {
184                     for(var i in data.rows.baifenbi){
185                         alert(i);
186                     }
187                      var chart = iChart.create({
188                             render:"ichart-render",
189                             width:800,
190                             height:400,
191                             background_color:"#fefefe",
192                             gradient:false,
193                             color_factor:0.2,
194                             border:{
195                                   color:"BCBCBC",
196                                   width:1
197                             },
198                             align:"center",
199                             offsetx:0,
200                             offsety:0,
201                             sub_option:{
202                                   border:{
203                                         color:"#BCBCBC",
204                                         width:1
205                                   },
206                                   label:{
207                                         fontweight:500,
208                                         fontsize:11,
209                                         color:"#4572a7",
210                                         sign:"square",
211                                         sign_size:12,
212                                         border:{
213                                               color:"#BCBCBC",
214                                               width:1
215                                         },
216                                         background_color:"#fefefe"
217                                   }
218                             },
219                             shadow:true,
220                             shadow_color:"#666666",
221                             shadow_blur:2,
222                             showpercent:false,
223                             column_width:"70%",
224                             bar_height:"70%",
225                             radius:"90%",
226                             title:{
227                                   text:"新增会员分析",
228                                   color:"#111111",
229                                   fontsize:20,
230                                   font:"微软雅黑",
231                                   textAlign:"center",
232                                   height:30,
233                                   offsetx:0,
234                                   offsety:0
235                             },
236                             subtitle:{
237                                   text:"年新增会员分析",
238                                   color:"#111111",
239                                   fontsize:16,
240                                   font:"微软雅黑",
241                                   textAlign:"left",
242                                   height:20,
243                                   offsetx:0,
244                                   offsety:0
245                             },
246                             footnote:{
247                                   text:"",
248                                   color:"#111111",
249                                   fontsize:12,
250                                   font:"微软雅黑",
251                                   textAlign:"right",
252                                   height:20,
253                                   offsetx:0,
254                                   offsety:0
255                             },
256                             legend:{
257                                   enable:false,
258                                   background_color:"#fefefe",
259                                   color:"#333333",
260                                   fontsize:12,
261                                   border:{
262                                         color:"#BCBCBC",
263                                         width:1
264                                   },
265                                   column:1,
266                                   align:"right",
267                                   valign:"center",
268                                   offsetx:0,
269                                   offsety:0
270                             },
271                             coordinate:{
272                                   width:"80%",
273                                   height:"84%",
274                                   background_color:"#ffffff",
275                                   axis:{
276                                         color:"#a5acb8",
277                                         width:[1,"",1,""]
278                                   },
279                                   grid_color:"#d9d9d9",
280                                   label:{
281                                         fontweight:500,
282                                         color:"#666666",
283                                         fontsize:11
284                                   }
285                             },
286                             label:{
287                                   fontweight:500,
288                                   color:"#666666",
289                                   fontsize:11
290                             },
291                             type:"column2d",
292                             
293                             
294                             data:data.rows,  
295                       });
296                       chart.draw();
297 
298                 },
299                 error : function(msg) {
300                     cosole.log(msg);
301                 }
302             });
303         });
304 
305     });
306 </script>

后台代码:

 1     
 2     /*
 3      * 查询月增会员
 4      */
 5     @ResponseBody
 6     @RequestMapping("/analmon")
 7     public JSONObject AnalMon() {
 8         JSONObject jo = new JSONObject();
 9         List<Anal> list=useranalservice.AnalMon();
10         for(Anal a:list){
11             a.setColor("#"+Color.getRandColorCode());
12         }
13 
14         jo.put("rows", list);
15         return jo;
16     }

Sql语句:

 1     <!-- 根据月份查询新增会员 -->
 2     <select id="AnalMon" resultType="Anal">
 3         select to_char(cu.createtime, 'yyyy-mm') name, count(*) value
 4           from (select u.*
 5                   from CRM_USERS u
 6                 ) cu
 7          group by to_char(cu.createtime, 'yyyy-mm')
 8          order by to_char(cu.createtime, 'yyyy-mm')
 9 
10     </select>

实体类:

 1 package com.hanqi.model;
 2 
 3 public class Anal {
 4     private String name;
 5     private String value;
 6     private String color;
 7     public String getName() {
 8         return name;
 9     }
10     public void setName(String name) {
11         this.name = name;
12     }
13     public String getValue() {
14         return value;
15     }
16     public void setValue(String value) {
17         this.value = value;
18     }
19     public String getColor() {
20         return color;
21     }
22     public void setColor(String color) {
23         this.color = color;
24     }
25     public Anal() {
26         super();
27         // TODO Auto-generated constructor stub
28     }
29     public Anal(String name, String value, String color) {
30         super();
31         this.name = name;
32         this.value = value;
33         this.color = color;
34     }
35     @Override
36     public String toString() {
37         return "Anal [name=" + name + ", value=" + value + ", color=" + color + "]";
38     }
39     
40     
41 }

不过,ichartjs这样使用也有一个很大的问题,如果数据太多,展示的时候会很难看,而且目前这种方式只能生成柱状图和饼图。

要解决这两个问题,第一个问题可以尝试在查询数据的时候进行判断,限制用户查询太多的数据,并给出相应的提示。

第二个问题就需要深入的了解并学习iChatjs来自己生成图表了。

 

posted @ 2017-11-05 15:43  谁将新樽辞旧月,今月曾经照古人  阅读(1452)  评论(0编辑  收藏  举报