【highchart】经典问题
摘要
记录遇到的一些问题和解决方案
- 时差
- 数据容量
- 多表联动
1. 时差
问题描述
highcharts 默认是标准 UTC 时间,而国内默认是东八区时间,所以会有8个小时的时差
解决方法
使用highcart绘图之前,设置UTC属性为false,例子如下:
Highcharts.setOptions({
global: {
useUTC: false //关闭UTC
}
});
2. 数据容量
问题描述
当我们数据装填过多时,会出现highchart #12 Highcharts expects point configuration to be numbers or arrays in turbo mode
解决办法
这个错误是因为turboThreshold 阈值,默认为1000,为避免阈值检测,可以设置turboThreshold=0,不检查数据容量。不过从绘图效率 和 数据传输效率来考虑,最好数据量不要超过svg像素密度,一是会出现数据失真 二 是绘图效率降低 三是 传输效率降低。 可以使用highstock 实现大数据量的绘制, 阈值默认为5万+,同时可以拖动 rangeSelector , 选择X 轴范围。
3. 多图联动
问题描述
我们经常会遇到多个图之间有关联,需要查看相同X 轴数据,2.0- 版本的highstock 4.0-highcharts 官网并没有这个特性, 升级到4.2 + 版本官网有例子。
解决办法
目前4.2.3 + highcharts , 4.0.2+ highstock 有官方例子,关键代码为:chart.tooltip.refresh(points);
完整例子:
- highcharts 例子 http://www.highcharts.com/demo/synchronized-charts
- highstock 例子 和官网一样
如果highchart4.0.3 highstock2.0.3 也有办法,方法为触发point的mouseover 事件,在事件中触发每个chart 显示此X轴上的tooltip 达到联动的效果。
具体例子如下:
highchart关键代码为 chart.tooltip.refresh( chart.series[0].data[j] );
highstock关键代码为 chart.tooltip.refresh( [ chart.series[0].data[j] ]);
- stockchart 创建例子
$(function () {
var chartList = [];
createHighStock('container');
createHighStock('container1');
// 同步提示
function syncTooltip(container, p) {
var i=0, j=0, data;
console.log(container, p);
for(; i<chartList.length; i++) {
if(container.id != chartList[i].container.id) {
data = chartList[i].series[0].data;
// 自己遍历寻找目标点,并显示tooltip, 高版本提供searchpoint 方法查找目标点
for(; j<data.length; j++)
if (data[j].x === p)
chartList[i].tooltip.refresh( [chartList[i].series[0].data[j] ]);
}
}
}
function createHighStock(id) {
$.getJSON('http://www.highcharts.com/samples/data/from-sql.php?callback=?',
function (data) {
console.log(data);
$('#' + id).highcharts('StockChart', {
navigator : {
adaptToUpdatedData: false,
},
scrollbar: {
liveRedraw: false
},
legend: {
enabled: true,
align: 'center',
verticalAlign: 'bottom',
x: 0,
y: 0
},
title: {
text: 'AAPL history by the minute from 1998 to 2011'
},
subtitle: {
text: 'Displaying 1.7 million data points in Highcharts Stock by async server loading'
},
xAxis : {
minRange: 3600 * 1000 // one hour
},
tooltip: {
formatter: function () {
var tpl = '<b>' + Highcharts.dateFormat('%Y-%m-%e %H:%M:%S', this.x) + '</b>';
tpl += this.y;
return tpl;
}
},
yAxis: {
floor: 0,
},
plotOptions:{
series:{
shadow:false,
borderWidth:0,
groupPadding:0,
//pointPadding:.025,
lineWidth:1,
color:'#5a9bd4',
fillColor:'rgba(90,155,212, .25)',
marker:{
radius:0,
states:{
hover:{
radius:2
}
}
},
point: {
events: {
// key point 关键代码
mouseOver: function(){
syncTooltip(this.series.chart.container, this.x);
}
}
}
},
},
series :[{
data : data,
name : 'hehe',
},
{
data : data,
name : 'haha',
},
]
});
var chartObj = $('#' + id).highcharts();
chartList.push(chartObj);
}
);
};
});
- chart 创建例子
function syncTooltip(container, p) {
var i=0, j=0, data;
console.log(container, p);
for(; i<chartList.length; i++) {
if(container.id != chartList[i].container.id) {
data = chartList[i].series[0].data;
// 自己遍历寻找目标点,并显示tooltip, 高版本提供searchpoint 方法查找目标点
for(; j<data.length; j++) {
if (data[j].x === p){
// !!!!!! key point 关键代码
chartList[i].tooltip.refresh( chartList[i].series[0].data[j]);
}
}
}
}
}
【highchart】经典问题的更多相关文章
- 回首经典的SQL Server 2005
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com SQL Server是我使用时间最长的数据库,算起来已经有10年了.上世纪90年代,微软在软件开发的所有领域高歌猛 ...
- 微软Azure 经典模式下创建内部负载均衡(ILB)
微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...
- Express 教程 01 - 入门教程之经典的Hello World
目录: 前言 一.Express?纳尼?! 二.开始前的准备工作 三.测试安装之经典的Hello World 四.使用express(1)来生成一个应用程序 五.说明 前言: 本篇文章是建立在Node ...
- 赠书:HTML5 Canvas 2d 编程必读的两本经典
赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...
- 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构
前两篇体验了 QEMU 和经过 KVM 加速的 QEMU,并体验了第三方虚拟机管理工具 virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能.这一篇,我来剖析一下 Vi ...
- Atitit MATLAB 图像处理 经典书籍attilax总结
Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...
- 在Windows Server 2012中如何快速开关桌面上经典的“计算机、我的文档”等通用图标
我们都知道,在Windows Server 2012系列的服务器版本中都已经引入了Modern的现代界面作为默认的用户交互界面,同时满足视觉一致化,新版的服务器管理程序也做成了扁平化.因此传统的计算机 ...
- Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始
时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...
- 【十大经典数据挖掘算法】PageRank
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 我特地把PageRank作为[十大经 ...
随机推荐
- [原]vue实现全选,反选
用vue写业务代码时候,后端大神丢给我一堆数据,要求是做全选,反选功能,然后把用户更改的数据全部返回给他 基本思路 如果父级选中了,那么父级下面的子集全部选中checked=true; 如果子集中选中 ...
- github--hello,world(参考官网)
官网:https://guides.github.com/activities/hello-world/ 一共分为5步. 1.为你的项目新建仓库(repository): 2.新建分支(branch) ...
- RSA加密通信小结(三)--生成加解密所需的SSL命令与流程
在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...
- Akka(9): 分布式运算:Remoting-远程构建式
上篇我们讨论了Akka-Remoting.我们说Akka-Remoting是一种点对点的通讯方式,能使两个不同JVM上Akka-ActorSystem上的两个Actor之间可以相互沟通.Akka-Re ...
- CSS3学习系列之盒样式(一)
盒的基本类型 在css中,使用display属性来定义盒的类型,总体上来说,css中的盒分为block类型与inline类型 inline-block类型 inline-block类型是在css2.1 ...
- SCI论文写作中的注意事项
SCI论文一般都是英文的格式,其中有很多原则和细节需要我们注意,在我完成第一篇SCI论文的过程中,做些记录,同时和大家分享一下这些经验.同时也稍微改变一下园子里的人口比例,都是攻城狮,程序猿什么的也过 ...
- 静态变量和Session
静态变量: Application级别的,不同客户端访问同一个变量. Session:对于每个访问的客户端是独立的,都有一个唯一的SessionID.也就是说,不同客户端下,都可以有一个Session ...
- 解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问
根据需要进行asp.net的数据导入导出,结果报以下错: mark-1: [报错]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT ...
- Linux 下挂在ntfs 硬盘
CentOS 7 下想要挂载NTFS的文件系统该怎么办呢? 我们需要一个NTFS-3G工具,并编译它之后在mount就可以了,就这么简单. 首先要进入官网下载NTFS-3G工具 http://www. ...
- Vijos 1004 伊甸园日历游戏 博弈
描述 Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来.然后他们轮流对这个日期进行操作: 1 : 把日期的天数加1,例如1900.1.1变到19 ...