项目需求,需要用到报表插件,以前提到过用Highcharts 但商业用收费,继续找插件 后来找到了jqplot 虽然没有Highcharts 好看但能实现功能就行了。
直接贴代码
WEB端:
//柱状图函数 /* 多项数据对比显示 AJAX 返回 JSON对象必需类似于 [{'name':'名称1','list':[1,2],'year',2012},{'name':'名称2','list':[6,7],2013}] 显示出来的数据为2012(名称1:1,名称2:6),2013(名称1:2,名称2:7)
特别说明:因为分类提示框只接收JSON对象(label:name),所以在构建时添加 'label':[label:名称1] */ function createBarCharts(){ var ticks =[];//X轴显示数据数组 var labelsObj = []; //分类提示框数组 var ajaxDataRenderer = function (url,plot,options) { var ret = null; //返回数据 var dataJson = []; $.ajax({ async: false, url: url, dataType: "json", success: function (data) { for (var i = 0; i < data.length; i++) { dataJson[i] = data[i].list; ticks[i] = data[i].year; labelsObj[i] = data[i].label; } ret = dataJson; } }); return ret; }; var jsonurl = "/test/servlet/BarServlet"; //JSON数据地址 var options = { title: "柱状图数据展现",//柱状图标题 seriesDefaults: { renderer: $.jqplot.BarRenderer,//以柱图经行渲染 pointLabels:{show:true,stackedValue: true},//数据点显示参数 show: true }, series: labelsObj,//分类栏 legend: { show: true,placement: 'outsideGrid'},//分类栏是否显示和位置设置 axes: { //X轴显示内容 以容器解析 数组 xaxis: {renderer: $.jqplot.CategoryAxisRenderer,ticks:ticks }, //Y轴显示内容 默认解析 yaxis: { renderer: $.jqplot.LogAxisRenderer } }, dataRenderer: ajaxDataRenderer, dataRendererOptions: { unusedOptionalUrl: jsonurl } } plot = $.jqplot("chart1",jsonurl,options);//创建柱状图 }
服务端(servlet):
response.setCharacterEncoding("UTF-8"); //设置编码格式 response.setContentType("text/html"); JSONArray members = new JSONArray(); PrintWriter out= response.getWriter(); try { for(int i=1;i<5;i++){ JSONObject member = new JSONObject(); JSONObject label = new JSONObject(); member.put("label",label.put("label","张飞" + i));//构建分类提示框内容 JSONArray list = new JSONArray(); for(int k=1;k<5;k++){ list.put(k*100); } member.put("year",(2012 + i));//构建X轴显示内容 member.put("list",list); //构建数据 members.put(member); } out.write(members.toString()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } out.flush(); out.close();
贴图:
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|