根据Highcharts中的系列格式化工具提示

时间:2014-07-15 15:35:51

标签: jquery highcharts

我使用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是小数。

http://jsfiddle.net/wrnk/JdktQ/

1 个答案:

答案 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);
                    }
                });

此处的演示演示:http://jsfiddle.net/robschmuecker/3fTCq/