1、highcharts的基本属性

var chartTitle = '用户注册曲线图';
var lineChartData_hg = {chart: {    //图表总体的设置type: 'line',    renderTo:domId,zoomType:'x' //控制图表是否可以拉伸},title: {    //图表标题text: chartTitle //标题名称},xAxis:{type:'datetime',//tickInterval:timeFlag,dateTimeLabelFormats:{second:'%H:%M',minute:'%H:%M',hour:'%H:%M',day:'%m/%d',week:'%m/%d',month:'%Y-%m',year:'%Y'}, minRange:function () {return '1000 * 60 * 10 * 10';}},yAxis: {    //Y轴min:0,title: {text: '个数(个)'    //y轴标题}},tooltip:{shared:true,crosshairs:true,formatter:function () {var info ;if('DAY'==viewType){info = "<b>" + Highcharts.dateFormat("时间:%Y年%m月%e日 ", this.x) + "</b>";}else if('WEEK'==viewType){var year = new Date(this.x).getFullYear();var d = new Date(this.x);var week = userRegist_hg.getYearWeek(d);info = "<b>" +year+'年'+ week+'周' + "</b>";}else if('MONTH'==viewType){info = "<b>" + Highcharts.dateFormat("时间:%Y年%m月 ", this.x) + "</b>";}else if('SEASON'==viewType){var year = new Date(this.x).getFullYear();var month = new Date(this.x).getMonth()+1;var m = 0;if(month==1||month==2||month==3){m = 1;}else if(month==4||month==5||month==6){m=2;}else if(month==7||month==8||month==9){m=3;}else if(month==10||month==11||month==12){m = 4 ;}info = "<b>" + year+'年' +m+'季'+ "</b>";}else if('YEAR'==viewType){info = "<b>" + Highcharts.dateFormat("时间:%Y年 ", this.x) + "</b>";}$.each(this.points, function (i, point) {info += "<br/>" + point.series.name + ":" + point.y+"(个)";});return info;}},legend:{},plotOptions: {                  //图表标示的各种选项spline: {                     //这里由于是折线图,那么就是折线图的选项dataLabels: {           //数据标签enabled: true       //允许显示数据,默认为false,不显示具体数据},enableMouseTracking: false  //这个让鼠标放到数据点的时候,不动态显示一个小圆圈,默认为true},line: {                     //这里由于是折线图,那么就是折线图的选项dataLabels: {           //数据标签enabled: true       //允许显示数据,默认为false,不显示具体数据},enableMouseTracking: false  //这个让鼠标放到数据点的时候,不动态显示一个小圆圈,默认为true}},series: []
}
lineChartData_hg.series = data.list;
userRegistLines_hg = new Highcharts.Chart(lineChartData_hg);

2、后台数据封装:

相对于idea的rails语言来说,eclipse采用java的语言来封装想对要麻烦一些,但是只要知道返回的json的数组是什么样的,就可以封装成类似的json过来@RequestMapping(value = "/userLoginLineChart", method = RequestMethod.POST)
@ResponseBody
public Object userLoginLineChart(String viewType,HttpServletRequest request,HttpSession httpSession, Model model) throws Exception {String errorInfo = "ok";Map<String,Object> jsonMap = new HashMap<String,Object>();List<Object> list = new ArrayList<Object>(); // 传递过来的list直接赋给series,series是一个数组Map<String ,Object> line = new HashMap<String, Object>();//line指代第一条线List<Object> data = new ArrayList<Object>();//data用来存数据点line.put("name", "登录");line.put("color", "#4572A7");line.put("yAxis", 0);line.put("visible", true);Map<String, Object> marker = new HashMap<String, Object>();marker.put("enabled", false);line.put("marker", marker);ResultDto resultDto = userMonitorService.drawUserLoginLineChart(viewType,httpSession);//errorInfo 用来处理错误信息,如果是error,直接提示错误,如果是logout,重新进入登录界面errorInfo = ResultUtil.VerifyResultEntity4Json(httpSession, resultDto);if(!"ok".equals(errorInfo)){jsonMap.put("errorInfo", errorInfo);return jsonMap;}if (resultDto.getEntity() != null) {UserRegistLineList lineList = (UserRegistLineList) resultDto.getEntity();if(null!=lineList&&0<lineList.getList().size()){for(int i=0;i<lineList.getList().size();i++){Object[] d = new Object[2];UserRegistLine l = lineList.getList().get(i);d[0] = l.getMincreateTime();d[1]=l.getCount();data.add(d);}}}jsonMap.put("errorInfo", errorInfo);line.put("data", data);list.add(line);jsonMap.put("list",list);return jsonMap;
}

3、页面jsp处理片段:

 <div id="drawUserRegistLineData" >loading...                 </div><script type="text/javascript">
$(function(){// 初始化div的宽度,不然第一次进入页面的时候,宽度和后面加载的宽度不一致$('#drawUserRegistLineData').css('width', (window.screen.availWidth - 175)*0.9);
// 进入页面的时候,调用方法         userRegist_hg.drawUserRegistLine($("#drawLineChart4Time").val(),'drawUserRegistLineData');
});</script>

4、ajax调用后台的数据,并对数据解析成线性图(错误处理)

userRegist_hg.drawUserRegistLine = function(viewType,domId){$.ajax({  url: serverContext + "/userMonitor/userRegistLineChart",async : true,type:'post',  data: {"viewType":viewType},  dataType:'json',  success:function(data){  var err = data.errorInfo;// 错误处理if (err && err != "ok") {if (err == "logout") {handleSessionTimeOut();return;} else {jAlert(err);}} else {//画图var chartTitle = '用户注册曲线图';lineChartData_hg = {chart: {    //图表总体的设置type: 'line',   renderTo:domId,zoomType:'x'},title: {    //图表标题text: chartTitle //标题名称},xAxis:{type:'datetime',//tickInterval:timeFlag,dateTimeLabelFormats:{second:'%H:%M',minute:'%H:%M',hour:'%H:%M',day:'%m/%d',week:'%m/%d',month:'%Y-%m',year:'%Y'}, minRange:function () {return '1000 * 60 * 10 * 10';}},yAxis: {    //Y轴min:0,title: {text: '个数(个)'    //y轴标题}},tooltip:{shared:true,crosshairs:true,formatter:function () {var info ;if('DAY'==viewType){info = "<b>" + Highcharts.dateFormat("时间:%Y年%m月%e日 ", this.x) + "</b>";}else if('WEEK'==viewType){var year = new Date(this.x).getFullYear();var d = new Date(this.x);var week = userRegist_hg.getYearWeek(d);info = "<b>" +year+'年'+ week+'周' + "</b>";}else if('MONTH'==viewType){info = "<b>" + Highcharts.dateFormat("时间:%Y年%m月 ", this.x) + "</b>";}else if('SEASON'==viewType){var year = new Date(this.x).getFullYear();var month = new Date(this.x).getMonth()+1;var m = 0;if(month==1||month==2||month==3){m = 1;}else if(month==4||month==5||month==6){m=2;}else if(month==7||month==8||month==9){m=3;}else if(month==10||month==11||month==12){m = 4 ;}info = "<b>" + year+'年' +m+'季'+ "</b>";}else if('YEAR'==viewType){info = "<b>" + Highcharts.dateFormat("时间:%Y年 ", this.x) + "</b>";}$.each(this.points, function (i, point) {info += "<br/>" + point.series.name + ":" + point.y+"(个)";});return info;}},legend:{},plotOptions: {                  //图表标示的各种选项spline: {                     dataLabels: {           //数据标签enabled: true       },enableMouseTracking: false  },line: {                  dataLabels: {           //数据标签enabled: true       },enableMouseTracking: false  }},series: []}lineChartData_hg.series = data.list;userRegistLines_hg = new Highcharts.Chart(lineChartData_hg);}},  error:function(xhr,textStatus,errorThrown){ jAlert("服务器异常,请稍后重试..");}  });

5、后台返回的json

{"errorInfo":"ok","list":[{"yAxis":0,"visible":true,"marker":{"enabled":false},"color":"#4572A7","name":"登录","data":[[1369852043000,1],[1405502337000,1],[1408180758000,3],[1408324354000,6],[1408430898000,6],[1408501492000,10],[1408586348000,6],[1408677130000,1],[1409205479000,2],[1409897710000,1],[1410773341000,1],[1410832946000,1],[1412839081000,1],[1413009726000,3]]}]}

5.效果图(附件)

highcharts画线性图示例相关推荐

  1. 如何用Stata完成(shui)一篇经济学论文(九):画线性图

    目录 普通线性图 多图并列 一图多线 什么?为什么只讲线形图?因为我只用过线形图- 言归正传,我的确只用过线形图(说了跟没说一样-).Stata画图给我的感觉一直都是很复杂.很多命令,我觉得好像也没有 ...

  2. 【uniapp】uniapp开发移动端项目使用highcharts(蜘蛛图示例)

    蜘蛛图效果展示: **第一步:**安装highcharts到项目 yarn add highcharts 或 npm install highcharts **第二步:**在UI界面中准备一个盒子来放 ...

  3. Python画折线图示例代码

    Python画图 双折线图代码示例 import matplotlib.pyplot as plt import pandas as pd data = pd.read_excel(r'1.xlsx' ...

  4. Python 数据分析三剑客之 Matplotlib(四):线性图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  5. python 画三维函数图-如何用Matplotlib 画三维图的示例代码

    最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...

  6. python画三维立体图-如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...

  7. python画折线图代码-python绘制简单折线图代码示例

    1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...

  8. python画折线图详解-python绘制简单折线图代码示例

    1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...

  9. python导入txt文件并绘图-Python实现读取txt文件并画三维图简单代码示例

    记忆力差的孩子得勤做笔记! 刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多说,直接上代码! #由三个一维坐标画三维散点 #codin ...

最新文章

  1. python写界面输入测试脚本_python+Selenium自动化测试——输入,点击操作
  2. CentOS LAMP一键安装网站环境及添加域名
  3. 使用datatables 中文排序
  4. 常见的HTML元素及常见检查点
  5. Android Studio 1.1.0 导入eclipse android project
  6. 没有流程的项目管理,都是无用功!
  7. ajax 泛微oa表单js_OA项目总结
  8. 这本书人手一本,杠精能少97%?
  9. Android控件系列之XML静态资源
  10. php版谁是卧底,机器人陪你玩“谁是卧底quot;游戏
  11. devops的重要性_为什么反馈而不是指标对DevOps至关重要
  12. 经典机器学习系列(五)【决策树详解】
  13. 【UE】关于UE的一个真实案例
  14. NVIDIA Tegra3,高通S4 MSM8960,三星Exynos4【新一代手机处理器大比拼】
  15. 深度讲解如何发挥出文章title标题的作用
  16. python成品_京东抢购茅台Python打包版
  17. kali入侵win7
  18. python 读取zip包中的数据
  19. 机器学习的数学基础(2):赋范空间、内积空间、完备空间与希尔伯特空间
  20. ubuntu linux原生微信使用体验

热门文章

  1. linux下pfam使用方法,无root权限安装Pfam的笔记
  2. edge无法登录账户_最近发现微软账户登录不上,edge,等等,都是?怎么回事?...
  3. 世界上最远的距离 ——泰戈尔
  4. drf 获取域名+端口_如何注册域名(+简单提示可免费获取)
  5. IDEA ctrl+alt+L 格式化快捷键不起作用
  6. bzoj3875: [Ahoi2014Jsoi2014]骑士游戏 spfa处理有后效性动规
  7. 计算机网络知识全面讲解:使用Telnet命令发送电子邮件
  8. mac 好玩的软件推荐
  9. 荣耀Play6T配置怎么样 荣耀Play6T值得买吗
  10. 安卓ios文件上传.net 服务器,Windows 和 iOS 13无缝传输文件最快的方案