【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作为[十大经 ...
随机推荐
- linux tesseract 安装及部署tess4j项目的常见问题
linux上部署tess4j项目 在windows上项目是可以正常运行的,部署到Linux上后,运行报异常,异常内容为:Unable to load library 'tesseract': Nati ...
- nginx四层负载均衡配置
nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 ...
- js变量提升和函数提升
变量,作为编程语言最基础的部分,每种语言的变量不尽相同,但又大径相庭.大部分编程语言的变量有块级作用域,如if.for.while... 但JavaScript不纯在块级作用域,而是函数作用域,并且有 ...
- 说说ajax上传数据和接收数据
我是一个脑袋不太灵光的人,所以遇到问题,厚着脸皮去请教大神的时候,害怕被大神鄙视,但是还是被鄙视了.我说自己不要点脸面,那是不可能的,但是,为了能让自己的技术生涯能走的更长远一些,受点白眼,受点嘲笑也 ...
- 几个常用的linux命令(操作服务器时会用到)
目录 tmux 背景 安装 使用 启动一个tmux session 暂时离开当前session 回到之前的session 重命名session 创建window 创建pane ps scp 参考 tm ...
- C# 计时器写法
刚才一个交流群里有人问计时器怎么写,正好我也不太熟,就写了个demo,和大家分享一下这个是参考师傅的写的! 计时器有好多种写法,这里给大家推荐一个性能比较好的,用dispatchertimer ...
- OCI(Open Container Initiative) & OCF (Open Container Format)
Linux基金会于2015年6月成立OCI(Open Container Initiative)组织,旨在围绕容器格式和运行时制定一个开放的工业化标准. 开放容器格式标准(OCF, Open Cont ...
- ionic 使用了 crosswalkwebview 所产生的bug 及 解决方案
一.问题产生: 在ionic app 优化方案中,我在前之前的博文中提到使用 --crosswalkwebview: 使用了crosswalkwebview后,app的显示及兼容效果确实很不错,虽然a ...
- java高并发锁的3种实现
初级技巧 - 乐观锁 乐观锁适合这样的场景:读不会冲突,写会冲突.同时读的频率远大于写. 以下面的代码为例,悲观锁的实现: Java代码 public Object get(Object key) ...
- js中的字符替换
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...