HighCharts 根据spline-plot-bands图,定制自己的图(区间里显示多个数据)
公司项目里有这样一个需求,根据数据绘图,但是数据很多,不可能每个点每个点的去画,这样显示的数据太密集非常的难看(更显得技术不专业),如图:
所以我和项目经理商量如何显示这个图形,按照他的意思是,按照范围来显示这一段区域内的数据,所以我们觉得使用spline-plot-bands图,另辟蹊径,但是遇到一个问题:区域是显示了,但是从数据库里选取的数据只有y坐标的值,没有和x坐标对应起来,这样就造成了y轴数据和x轴数据不对应。为了解决这个问题,我开始想办法,项目经理说:“可能这个图形不支持这样的功能”,但是我想了一下,不对,highcharts这么强大怎么可能不支持,可能是我们想的有问题,然后我开始查看highcharts的api,通过查看api看看xAxis到底能不能放与y轴对应的时间数据(注:之前使用的图是使用xAxis对象里的categories[这里存放数据],但是用spline-plot-bands图形好像不支持这样放数据),然后查看type属性的datetime的图形的demo,通过这个例子发现,data数据格式是个二维数组:
- data: [
- [Date.UTC(2010, 0, 1), 29.9],
- [Date.UTC(2010, 0, 2), 71.5],
- [Date.UTC(2010, 0, 3), 106.4],
- [Date.UTC(2010, 0, 6), 129.2],
- [Date.UTC(2010, 0, 7), 144.0],
- [Date.UTC(2010, 0, 8), 176.0]
- ]
而之前我使用的是一维数组,而且,这样就解决了x,y轴数据不对应问题了,这样一来,x,y轴对应起来又有了数据的范围划分了,漂亮!^_^,但是行不行呢,我还要测试。
- var Year = 0;
- var Month = 0;
- var Day = 0;
- var H = 0;
- var M = 0;
- var S = 0;
- $(function () {
- bindYxbh();
- initChart();
- });
- var obj = {
- //去掉highcharts.com商标
- credits: {
- enabled: false
- },
- //去掉chart不必要属性
- exporting: {
- enabled: false
- },
- chart: {
- type: 'spline'
- },
- title: {
- text: '单体电压分析图'
- },
- xAxis: {
- type: 'datetime'
- },
- yAxis: {
- title: {
- text: '电压(v)'
- }
- },
- tooltip: {
- valueSuffix: 'v'
- },
- plotOptions: {
- spline: {
- lineWidth: 4,
- states: {
- hover: {
- lineWidth: 5
- }
- },
- marker: {
- enabled: false
- },
- pointInterval: 20000, // 10分钟
- pointStart: Date.UTC(Year, Month, Day, H, M, S)
- }
- },
- series: [{
- name: '单体电压',
- data: []
- }],
- navigation: {
- menuItemStyle: {
- fontSize: '10px'
- }
- }
- };
- function initChart() {
- $('#container').highcharts(obj);
- }
- function bindYxbh() {
- zwobj.url = '../../WebService/AnalysisChartService.ashx?action=QueryAllYxbh';
- ajaxData();
- }
- function ajax_QueryAllYxbh(data) {
- if (data == null) {
- return;
- }
- var len = data.Data.length;
- for (var i = 0; i < len; i++) {
- if (data.Data[i].yxbh != null) {
- $("#pile").append("<option value='" + data.Data[i].yxbh + "'>" + data.Data[i].yxbh + "</option>");
- }
- }
- }
- function search() {
- var kssj = $("#begintime").val();
- var skssj = kssj.split(' ');
- Year = skssj[0].split('-')[0];
- Month = skssj[0].split('-')[1];
- Day = skssj[0].split('-')[2];
- H = skssj[1].split(':')[0];
- M = skssj[1].split(':')[1];
- S = skssj[1].split(':')[2];
- var dt = $("#txt_dt").val();
- var yxbh = $("#pile").val();
- if (kssj.length <= 0 || dt.length <= 0) {
- $.messager.alert("提示", "请输入单体或选择查询时间!", "info");
- return;
- }
- zwobj.url = '../../WebService/AnalysisChartService.ashx?action=QueryData';
- zwobj.data = { kssj: kssj, dt: dt, yxbh: yxbh };
- ajaxData();
- }
- function ajax_QueryData(data) {
- if (data == null) {
- return;
- }
- var len = data.Data.length;
- var z = [];
- for (var i = 0; i < len; i++) {
- var s = eval("new " + data.Data[i].sj.split('/')[1]).Format("yyyy-MM-dd hh:mm:ss");
- z.push([Date.UTC(
- s.split(' ')[0].split('-')[0],
- parseInt(s.split(' ')[0].split('-')[1])-1,
- s.split(' ')[0].split('-')[2],
- s.split(' ')[1].split(':')[0],
- s.split(' ')[1].split(':')[1],
- s.split(' ')[1].split(':')[2]), data.Data[i].dtdy]);
- }
- obj.series[0].data = z;
- obj.plotOptions.spline.pointStart = Date.UTC(Year, Month, Day, H, M, S);
- initChart();
- }
通过测试发现完全可以^_^,截图一张:
总结:
注意:Date.UTC时间转换成月份要减去1。
通过这样的代码开发过程,感觉自己遇到问题解决问题更成熟了。
HighCharts 根据spline-plot-bands图,定制自己的图(区间里显示多个数据)的更多相关文章
- CSharpGL(28)得到高精度可定制字形贴图的极简方法
CSharpGL(28)得到高精度可定制字形贴图的极简方法 回顾 以前我用SharpFont实现了解析TTF文件从而获取字形贴图的功能,并最终实现了用OpenGL渲染文字. 使用SharpFont,美 ...
- java 柱状图、折线图、饼状图
1.绘制柱状图: //BarChartTool工具类代码 package GUIview; import HibernateTool.HibernateTools; import ProductCla ...
- pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图))
//2019.07.23 1.箱形图,又称为盒式图,一般可以很好地反映出数据分布的特征,也可以进行多项数据之间分布特征的比较,它主要包含五个基础数据:中位数,两个上下分位数以及上下边缘线数据 其中的一 ...
- KRPano资源分析工具使用说明(KRPano XML/JS解密 切片图批量下载 球面图还原 加密混淆JS还原美化)
软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...
- matlab 将多个盒图放在一张图上
1.boxplot 将多个盒图放在一张图上 x1 = normrnd(5,1,100,1)';x2 = normrnd(6,1,200,1)';X = [x1 x2];G = [zeros(size( ...
- iOS启动图和开屏广告图,类似网易
iOS启动图和开屏广告图,类似网易 启动图是在iOS开发过程中必不可少的一个部分,很多app在启动图之后会有一张自定义的开屏广告图,点击该广告图可以跳转到广告图对应的页面.今天呢,和大家分享一下如何添 ...
- Shader中贴图知识汇总: 漫反射贴图、凹凸贴图、高光贴图、 AO贴图、环境贴图、 光照纹理及细节贴图
原文过于冗余,精读后做了部分简化与测试实践,原文地址:http://www.j2megame.com/html/xwzx/ty/2571.html http://www.cnblogs.com/z ...
- 功能模块图、业务流程图、处理流程图、ER图,数据库表图(概念模型和物理模型)画法
如果你能使用计算机规范画出以下几种图,那么恭喜你,你在我这里被封为学霸了,我膜拜ing-- 我作为前端开发与产品经理打交道已有5-6年时间,产品经理画的业务流程图我看过很多.于是百度搜+凭以往经验脑补 ...
- c语言实现灰度图转换为二值图
将上篇得到的灰度图转换为二值图,读取像素数据,低于某一值置0,否则设置为255,为得到更好的效果不同图片应采用不同的值 /* 2015年6月2日11:16:22 灰度图转换为二值图 blog:http ...
随机推荐
- 如何通过wifi在android手机上安装调试应用
如何通过wifi在android手机上安装调试应用 1. 首先还是要打开手机的usb调试选项,并通过usb线连接手机.2. 然后执行“adb tcpip 5555”,把adb从usb模式切换到tcpi ...
- Linux 命令 - lsof: 列出打开的文件
lsof 是一个列出当前系统打开文件的工具. 命令格式 lsof [ -?abChlnNOPRstUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ + ...
- cocos2dx-lua class语法糖要注意了
cocos2dx-lua function.lua 定义了class方法,让lua实现继承像传统语言一样漂亮和方便 看定义 function class(classname, super) local ...
- iOS打包及发布
本篇介绍iOS应用的发布流程:由于苹果的发布周期太长, 再介绍一个很好用的测试网站——蒲公英. iOS应用程序的发布和真机调试调试很像,也需要申请各类证书. 1.进入https://developer ...
- popViewControllerAnimated 后,对页面内UITableView 内数据刷新
popViewControllerAnimated后,这时它不执行viewDidLoad,所以不能及时对viewControler及时刷新,此时对该页面进行操作可以调用viewWillAppear:( ...
- 详解在Visual Studio中使用git版本系统
转自:http://www.uml.org.cn/pzgl/201206211.asp
- H5API——Canvas
http://item.jd.com/11241807.html HTML5移动Web开发实战http://item.jd.com/10982275.html HTML5程序设计(第2版)http:/ ...
- 查看mysql集群状态是否正常
如何查看mysql集群状态是否正常: 进入mysql 输入show status like 'wsrep%': 查看cluster sizes 是否为3
- Linux C SMTP POP3 极简陋邮件客户端
以前以为协议非常高神,但做了这个之后发现还好,没想象的那么艰难. 先要了解邮件的原理 再者就是上面2协议 可以先用telnet测试一下,以初步了解那2协议:http://hi.baidu.com/34 ...
- 基于MRG_MyISAM引擎的Mysql分表
正常情况下的分表,都是直接创建多个相同结构的表,比如table_1.table_2...最近碰到一个特殊需求,需要创建一个主表,所有分表的数据增删改查,全部自动实时更新到主表,这个时候可以使用MRG_ ...