【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作为[十大经 ...
随机推荐
- 转 使用HAProxy,PHPRedis,和MySQL支撑10亿请求每周架构细节
[编者按]在公司的发展中,保证服务器的可扩展性对于扩大企业的市场需要具有重要作用,因此,这对架构师提出了一定的要求.Octivi联合创始人兼软件架构师Antoni Orfin将向你介绍一个非常简单的架 ...
- jquery的几个国内CDN加速节点
分享几个jquery的几个国内国外的CDN加速节点,方便广大的开发设计者调用和节约空间,官网的总是最新版本的jquery所以不用去担心版本更新问题,其他加速节点可能不会在更新版本,所以取舍问题自己决定 ...
- vue中数据双向绑定注意点
最近一个vue和element的项目中遇到了一个问题: 动态生成的对象进行双向绑定是失败 直接贴代码: <el-form :model="addClass" :rules=& ...
- BigDecimal四舍五入使用总结
//BigDecimal四舍五入double f1 = new BigDecimal(1).setScale(2,RoundingMode.HALF_UP).doubleValue();//转化成字符 ...
- Python爬虫从入门到放弃(十)之 关于深度优先和广度优先
网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据 ...
- 如何使程序运行在UI线程
context.runOnUiThread(new Runnable() { @Override public void run() { _prop = new Prop(buyType, money ...
- 3.jsp基本语法笔记
1.page标签 <%@ page language="java" import="java.util.*" contentType="text ...
- 使用solr6.0搭建solrCloud
一.搭建zookeeper集群 1.下载zookeeper压缩包到自己的目录并解压(本例中的目录在/opt下),zookeeper的根目录我们在这里用${ZK_HOME}表示. 2.在${ZK_HOM ...
- 【SEO】搜索引擎优化的陷阱和作弊
一.认识SEO [理解] 站内优化是指更改网站内部结构,让网站利于蜘蛛爬取,比如网站内容: 站外优化是指发反向链接,给蜘蛛一个爬取你网站的通道. 其中,反向链接是指网页A 上有一个链接指向网页B,则网 ...
- java IO之 编码 (码表 编码 解码 转换流)
编码 什么是编码? 计算机中存储的都是二进制,但是要显示的时候,就是我们看到的却可以有中国 ,a 1 等字符 计算机中是没有存储字符的,但是我们却看到了.计算机在存储这些信息的时候,根据一个有规 则 ...