公司项目里有这样一个需求,根据数据绘图,但是数据很多,不可能每个点每个点的去画,这样显示的数据太密集非常的难看(更显得技术不专业),如图:

所以我和项目经理商量如何显示这个图形,按照他的意思是,按照范围来显示这一段区域内的数据,所以我们觉得使用spline-plot-bands图,另辟蹊径,但是遇到一个问题:区域是显示了,但是从数据库里选取的数据只有y坐标的值,没有和x坐标对应起来,这样就造成了y轴数据和x轴数据不对应。为了解决这个问题,我开始想办法,项目经理说:“可能这个图形不支持这样的功能”,但是我想了一下,不对,highcharts这么强大怎么可能不支持,可能是我们想的有问题,然后我开始查看highcharts的api,通过查看api看看xAxis到底能不能放与y轴对应的时间数据(注:之前使用的图是使用xAxis对象里的categories[这里存放数据],但是用spline-plot-bands图形好像不支持这样放数据),然后查看type属性的datetime的图形的demo,通过这个例子发现,data数据格式是个二维数组:

  1. data: [
  2. [Date.UTC(2010, 0, 1), 29.9],
  3. [Date.UTC(2010, 0, 2), 71.5],
  4. [Date.UTC(2010, 0, 3), 106.4],
  5. [Date.UTC(2010, 0, 6), 129.2],
  6. [Date.UTC(2010, 0, 7), 144.0],
  7. [Date.UTC(2010, 0, 8), 176.0]
  8. ]

而之前我使用的是一维数组,而且,这样就解决了x,y轴数据不对应问题了,这样一来,x,y轴对应起来又有了数据的范围划分了,漂亮!^_^,但是行不行呢,我还要测试。

  1. var Year = 0;
  2. var Month = 0;
  3. var Day = 0;
  4. var H = 0;
  5. var M = 0;
  6. var S = 0;
  7. $(function () {
  8. bindYxbh();
  9. initChart();
  10. });
  11. var obj = {
  12. //去掉highcharts.com商标
  13. credits: {
  14. enabled: false
  15. },
  16. //去掉chart不必要属性
  17. exporting: {
  18. enabled: false
  19. },
  20. chart: {
  21. type: 'spline'
  22. },
  23. title: {
  24. text: '单体电压分析图'
  25. },
  26. xAxis: {
  27. type: 'datetime'
  28. },
  29. yAxis: {
  30. title: {
  31. text: '电压(v)'
  32. }
  33. },
  34. tooltip: {
  35. valueSuffix: 'v'
  36. },
  37. plotOptions: {
  38. spline: {
  39. lineWidth: 4,
  40. states: {
  41. hover: {
  42. lineWidth: 5
  43. }
  44. },
  45. marker: {
  46. enabled: false
  47. },
  48. pointInterval: 20000, // 10分钟
  1. pointStart: Date.UTC(Year, Month, Day, H, M, S)
  2. }
  3. },
  4. series: [{
  5. name: '单体电压',
  6. data: []
  7. }],
  8. navigation: {
  9. menuItemStyle: {
  10. fontSize: '10px'
  11. }
  12. }
  13. };
  14.  
  15. function initChart() {
  16. $('#container').highcharts(obj);
  17. }
  18.  
  19. function bindYxbh() {
  20. zwobj.url = '../../WebService/AnalysisChartService.ashx?action=QueryAllYxbh';
  21. ajaxData();
  22. }
  23.  
  24. function ajax_QueryAllYxbh(data) {
  25. if (data == null) {
  26. return;
  27. }
  28. var len = data.Data.length;
  29. for (var i = 0; i < len; i++) {
  30. if (data.Data[i].yxbh != null) {
  31. $("#pile").append("<option value='" + data.Data[i].yxbh + "'>" + data.Data[i].yxbh + "</option>");
  32. }
  33.  
  34. }
  35. }
  36.  
  37. function search() {
  38. var kssj = $("#begintime").val();
  39. var skssj = kssj.split(' ');
  40. Year = skssj[0].split('-')[0];
  41. Month = skssj[0].split('-')[1];
  42. Day = skssj[0].split('-')[2];
  43.  
  44. H = skssj[1].split(':')[0];
  45. M = skssj[1].split(':')[1];
  46. S = skssj[1].split(':')[2];
  47. var dt = $("#txt_dt").val();
  48. var yxbh = $("#pile").val();
  49. if (kssj.length <= 0 || dt.length <= 0) {
  50. $.messager.alert("提示", "请输入单体或选择查询时间!", "info");
  51. return;
  52. }
  53.  
  54. zwobj.url = '../../WebService/AnalysisChartService.ashx?action=QueryData';
  55. zwobj.data = { kssj: kssj, dt: dt, yxbh: yxbh };
  56. ajaxData();
  57. }
  58.  
  59. function ajax_QueryData(data) {
  60. if (data == null) {
  61. return;
  62. }
  63. var len = data.Data.length;
  64. var z = [];
  65.  
  66. for (var i = 0; i < len; i++) {
  67. var s = eval("new " + data.Data[i].sj.split('/')[1]).Format("yyyy-MM-dd hh:mm:ss");
  68. z.push([Date.UTC(
  69. s.split(' ')[0].split('-')[0],
  1. parseInt(s.split(' ')[0].split('-')[1])-1,
  1. s.split(' ')[0].split('-')[2],
  2. s.split(' ')[1].split(':')[0],
  3. s.split(' ')[1].split(':')[1],
  4. s.split(' ')[1].split(':')[2]), data.Data[i].dtdy]);
  5. }
  6. obj.series[0].data = z;
  7. obj.plotOptions.spline.pointStart = Date.UTC(Year, Month, Day, H, M, S);
  8. initChart();
  9. }

通过测试发现完全可以^_^,截图一张:

总结:

注意:Date.UTC时间转换成月份要减去1。

通过这样的代码开发过程,感觉自己遇到问题解决问题更成熟了。

HighCharts 根据spline-plot-bands图,定制自己的图(区间里显示多个数据)的更多相关文章

  1. CSharpGL(28)得到高精度可定制字形贴图的极简方法

    CSharpGL(28)得到高精度可定制字形贴图的极简方法 回顾 以前我用SharpFont实现了解析TTF文件从而获取字形贴图的功能,并最终实现了用OpenGL渲染文字. 使用SharpFont,美 ...

  2. java 柱状图、折线图、饼状图

    1.绘制柱状图: //BarChartTool工具类代码 package GUIview; import HibernateTool.HibernateTools; import ProductCla ...

  3. pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图))

    //2019.07.23 1.箱形图,又称为盒式图,一般可以很好地反映出数据分布的特征,也可以进行多项数据之间分布特征的比较,它主要包含五个基础数据:中位数,两个上下分位数以及上下边缘线数据 其中的一 ...

  4. KRPano资源分析工具使用说明(KRPano XML/JS解密 切片图批量下载 球面图还原 加密混淆JS还原美化)

    软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...

  5. matlab 将多个盒图放在一张图上

    1.boxplot 将多个盒图放在一张图上 x1 = normrnd(5,1,100,1)';x2 = normrnd(6,1,200,1)';X = [x1 x2];G = [zeros(size( ...

  6. iOS启动图和开屏广告图,类似网易

    iOS启动图和开屏广告图,类似网易 启动图是在iOS开发过程中必不可少的一个部分,很多app在启动图之后会有一张自定义的开屏广告图,点击该广告图可以跳转到广告图对应的页面.今天呢,和大家分享一下如何添 ...

  7. Shader中贴图知识汇总: 漫反射贴图、凹凸贴图、高光贴图、 AO贴图、环境贴图、 光照纹理及细节贴图

    原文过于冗余,精读后做了部分简化与测试实践,原文地址:http://www.j2megame.com/html/xwzx/ty/2571.html   http://www.cnblogs.com/z ...

  8. 功能模块图、业务流程图、处理流程图、ER图,数据库表图(概念模型和物理模型)画法

    如果你能使用计算机规范画出以下几种图,那么恭喜你,你在我这里被封为学霸了,我膜拜ing-- 我作为前端开发与产品经理打交道已有5-6年时间,产品经理画的业务流程图我看过很多.于是百度搜+凭以往经验脑补 ...

  9. c语言实现灰度图转换为二值图

    将上篇得到的灰度图转换为二值图,读取像素数据,低于某一值置0,否则设置为255,为得到更好的效果不同图片应采用不同的值 /* 2015年6月2日11:16:22 灰度图转换为二值图 blog:http ...

随机推荐

  1. 如何通过wifi在android手机上安装调试应用

    如何通过wifi在android手机上安装调试应用 1. 首先还是要打开手机的usb调试选项,并通过usb线连接手机.2. 然后执行“adb tcpip 5555”,把adb从usb模式切换到tcpi ...

  2. Linux 命令 - lsof: 列出打开的文件

    lsof 是一个列出当前系统打开文件的工具. 命令格式 lsof  [  -?abChlnNOPRstUvVX  ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ + ...

  3. cocos2dx-lua class语法糖要注意了

    cocos2dx-lua function.lua 定义了class方法,让lua实现继承像传统语言一样漂亮和方便 看定义 function class(classname, super) local ...

  4. iOS打包及发布

    本篇介绍iOS应用的发布流程:由于苹果的发布周期太长, 再介绍一个很好用的测试网站——蒲公英. iOS应用程序的发布和真机调试调试很像,也需要申请各类证书. 1.进入https://developer ...

  5. popViewControllerAnimated 后,对页面内UITableView 内数据刷新

    popViewControllerAnimated后,这时它不执行viewDidLoad,所以不能及时对viewControler及时刷新,此时对该页面进行操作可以调用viewWillAppear:( ...

  6. 详解在Visual Studio中使用git版本系统

    转自:http://www.uml.org.cn/pzgl/201206211.asp

  7. H5API——Canvas

    http://item.jd.com/11241807.html HTML5移动Web开发实战http://item.jd.com/10982275.html HTML5程序设计(第2版)http:/ ...

  8. 查看mysql集群状态是否正常

    如何查看mysql集群状态是否正常: 进入mysql 输入show status like 'wsrep%': 查看cluster sizes 是否为3

  9. Linux C SMTP POP3 极简陋邮件客户端

    以前以为协议非常高神,但做了这个之后发现还好,没想象的那么艰难. 先要了解邮件的原理 再者就是上面2协议 可以先用telnet测试一下,以初步了解那2协议:http://hi.baidu.com/34 ...

  10. 基于MRG_MyISAM引擎的Mysql分表

    正常情况下的分表,都是直接创建多个相同结构的表,比如table_1.table_2...最近碰到一个特殊需求,需要创建一个主表,所有分表的数据增删改查,全部自动实时更新到主表,这个时候可以使用MRG_ ...