摘要

记录遇到的一些问题和解决方案

  • 时差
  • 数据容量
  • 多表联动

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);

完整例子:

  1. highcharts 例子 http://www.highcharts.com/demo/synchronized-charts
  2. 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】经典问题的更多相关文章

  1. 回首经典的SQL Server 2005

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com SQL Server是我使用时间最长的数据库,算起来已经有10年了.上世纪90年代,微软在软件开发的所有领域高歌猛 ...

  2. 微软Azure 经典模式下创建内部负载均衡(ILB)

    微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...

  3. Express 教程 01 - 入门教程之经典的Hello World

    目录: 前言 一.Express?纳尼?! 二.开始前的准备工作 三.测试安装之经典的Hello World 四.使用express(1)来生成一个应用程序 五.说明 前言: 本篇文章是建立在Node ...

  4. 赠书:HTML5 Canvas 2d 编程必读的两本经典

    赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...

  5. 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构

    前两篇体验了 QEMU 和经过 KVM 加速的 QEMU,并体验了第三方虚拟机管理工具 virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能.这一篇,我来剖析一下 Vi ...

  6. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

  7. 在Windows Server 2012中如何快速开关桌面上经典的“计算机、我的文档”等通用图标

    我们都知道,在Windows Server 2012系列的服务器版本中都已经引入了Modern的现代界面作为默认的用户交互界面,同时满足视觉一致化,新版的服务器管理程序也做成了扁平化.因此传统的计算机 ...

  8. Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始

    时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...

  9. 【十大经典数据挖掘算法】PageRank

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 我特地把PageRank作为[十大经 ...

随机推荐

  1. 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”的解决方法!

    原因:eclipse的版本与jre或者jdk版本不一致 对策:要么两者都安装64位的,要么都安装32位的,不能一个是32位一个是64位. 这种错误的原因可能性比较大,不排除其他因素

  2. node.js实现简单的登录注册页面

    首先需要新建四个文件 一个服务器js 一个保存数据的txt 一个登陆.一个注册页面html 1.注册页面 <!DOCTYPE html> <html lang="en&qu ...

  3. 每天一个JS 小demo之树菜单。主要知识点:DOM方法综合运用,递归运用

    <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...

  4. arcgis api for js入门开发系列十一地图统计图

    上一篇实现了demo的叠加SHP图层,本篇新增地图统计图,截图如下: 地图统计图实现的思路如下:利用拓展arcgis api的js文件(MapChartGraphic.js以及MapChartGrap ...

  5. java 动态代理的实现

    http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

  6. AospExtended K3 Note最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持

    AospExtended 最新官方版 Android7.1.2 极速 省电 流畅 Galaxy  XIAOMI Moto  Lenovo  Coolpad  均支持 之前用过1629开发版等,体验了很 ...

  7. spark streaming(2) DAG静态定义及DStream,DStreamGraph

    DAG 中文名有向无环图.它不是spark独有技术.它是一种编程思想 ,甚至于hadoop阵营里也有运用DAG的技术,比如Tez,Oozie.有意思的是,Tez是从MapReduce的基础上深化而来的 ...

  8. [leetcode-515-Find Largest Value in Each Tree Row]

    You need to find the largest value in each row of a binary tree. Example: Input:    1   / \  3 2 / \ ...

  9. 我眼中的ASP.NET Core之微服务

    ### 前言 前几天在博客园看到有园友在分享关于微软的一个微服务架构的示例程序,想必大家都已经知道了,那就是[eShopOnContainers](https://github.com/dotnet- ...

  10. JAVA基础——变量和常量

    JAVA的变量和常量知识总结 一.认识java标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号. 使用标识符时,需要遵守几条规则: 1.  标识符可以由字母.数字.下划线(_).美 ...