我使用Highcharts为Web应用程序创建图表。我必须显示一个带有2个yAxis的图表:第一个用于小数,第二个用于小时。
要显示小时数,我已在几秒钟内转换了我的日期,将它们分成几个系列,然后使用此脚本格式化小时数:
function secondsTimeSpanToHMS(s) {
var h = Math.floor(s / 3600);
s -= h * 3600;
var m = Math.floor(s / 60);
s -= m * 60;
return h + ":" + (m < 10 ? '0' + m : m) + ":" + (s < 10 ? '0' + s : s);
}
...
labels: {
formatter: function () {
return secondsTimeSpanToHMS(this.value);
}
}
这个轴和我的系列显示得很好,但是现在我很难显示共享的工具提示,因为我有其他的小数轴。
这是我的工具提示代码:
tooltip: {
enabled:true,
shared: true,
formatter:function(){
var s = '<b>'+ this.x +'</b>';
$.each(this.points, function(i, point) {
s += '<br/>'+ point.series.name +': '+secondsTimeSpanToHMS(point.y);
});
return s;
}
}
问题是我的十进制系列被转换为HMS。我不知道如何只选择几个系列并格式化它们,让其他系列显示它们在我的系列中的编写方式。
这是我用过的小提琴。 1,2,3,4,5系列是基于小时的,C1,C2是小数。
答案 0 :(得分:1)
您可以在系列数据中指定自定义对象,例如:(注意mytype
只是一个示例,可能是partyTime
或其他任何事情)
{
name: '5',
type: 'column',
yAxis: 1,
data: [17211, 22057, 18981, 16758, 2429]
}, {
name: 'C1',
data: [10.69, 10.1, 9.79, 11.42, 14.61],
color: '#000000',
mytype: 'decimal' //<---- Here
}, {
name: 'C2',
data: [4.11, 3.88, 3.77, 4.2, 4.55],
color: '#000000',
mytype: 'decimal' //<---- Here
}
然后在格式化程序中测试:
$.each(this.points, function (i, point) {
var mytype = point.series.userOptions.mytype;
console.log(mytype);
if (mytype == 'decimal') {
s += '<br/>' + point.series.name + ': ' + point.y;
} else {
s += '<br/>' + point.series.name + ': ' + secondsTimeSpanToHMS(point.y);
}
});