要實(shí)現(xiàn)整點(diǎn)顯示,其實(shí)就是對(duì)plotOptions的dataLabels隔幾個(gè)點(diǎn)顯示,在網(wǎng)上找了好久之后,發(fā)現(xiàn)了一個(gè)帖子
plotOptions的dataLabels隔幾個(gè)點(diǎn)顯示
其中的關(guān)鍵語(yǔ)句就是
plotOptions: {
series: {
dataLabels: {
enabled: true,
formatter:function(){
var index = this.point.x; // 點(diǎn)的下標(biāo)
if(index%3==0) { // 根據(jù)條件是否顯示該點(diǎn)的值
return this.y;
}else {
return null;
}
}
},
enableMouseTracking: false
}
},
問(wèn)題
但是這個(gè)方法并不適用于我的橫坐標(biāo),我的橫坐標(biāo)是時(shí)間,但是highstock給橫坐標(biāo)如果給時(shí)間類型,得是時(shí)間戳的形式。
思路:
我想要實(shí)現(xiàn)整點(diǎn)顯示數(shù)據(jù),就得將時(shí)間戳轉(zhuǎn)換為時(shí)間,并且得到分鐘的值,判斷分鐘的值是否是零。
1.時(shí)間戳轉(zhuǎn)換為時(shí)間
這邊還有個(gè)小插曲,在網(wǎng)上尋找的時(shí)間戳轉(zhuǎn)時(shí)間的js,時(shí)間戳單位是m,也就是說(shuō)是10位的數(shù)字,但是我這個(gè)是13位的,就是毫秒ms,所有在轉(zhuǎn)換時(shí)間的js,就不需要乘1000;
時(shí)間戳轉(zhuǎn)時(shí)間js:
// 時(shí)間戳轉(zhuǎn)換時(shí)間的方法
function timestampToTime(timestamp) {
var date = new Date(timestamp); //時(shí)間戳為10位需*1000,時(shí)間戳為13位的話不需乘1000
Y = date.getFullYear() + '-';
M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
D = date.getDate();
h = date.getHours();
m = date.getMinutes();
s = date.getSeconds();
return m;//返回分鐘是因要判斷是否是整點(diǎn),不獲取秒因?yàn)楹笈_(tái)給的數(shù)據(jù)秒都是00
}
2.判斷是否是整點(diǎn)
plotOptions: {
line: {
dataLabels: {
// 開啟數(shù)據(jù)標(biāo)簽
enabled: true,
formatter:function(){
var index = this.point.x;// 點(diǎn)的第幾個(gè)
var time =timestampToTime(index);
if(time==0) { // 根據(jù)條件是否顯示該點(diǎn)的值
return this.y;
}else {
return null;
}
}
},
// 鼠標(biāo)跟蹤,對(duì)應(yīng)的提示框、點(diǎn)擊事件會(huì)失效
enableMouseTracking: true
}
},
3.最終效果

顯示整點(diǎn)數(shù)據(jù)