删除Highcharts Range图表的“低”标签

时间:2014-01-30 22:57:10

标签: jquery highcharts

我有一个范围图表,我需要删除'低'标签(但保留'高'标签)。

http://jsfiddle.net/CJQmL/

我可以“破解”这个并设置xLow: -9999999(如jsfiddle中所述),但是必须有一种方法可以通过自定义格式化程序删除标签,对吧?对于我的格式化程序(注意:这不起作用 - 它仍然显示两个标签。我需要以某种方式解决这个问题,不显示低标签):

formatter: function () {
    if (this.point.high) {
        var myDate = new Date(this.y);
        var newDateMs = Date.UTC(myDate.getUTCFullYear(), myDate.getUTCMonth(), myDate.getUTCDate() + 1);
        return '<b>' + Highcharts.dateFormat('%m/%e', newDateMs) + '</b>';
    } else {
        return null;
    }
}

基本上,我只是不确定将this.point.high替换为什么条件。我希望成为:

if (point is high) {
    return date;
} else {
    return null;
}

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,我必须在列范围高图中显示高值和低值之间的差异。解决方案是:

var test = [];
var plotOptions =  {
    formatter: function() {
    if(test.indexOf(this.point.index) == -1) {
        test.push(this.point.index)
        return '<div style="text-align:center;">' + formatTimeText(this.point.options.high - this.point.options.low)+'</div>';
}
    else
        return null;
   }
}

在向图表添加数据标签时,highcharts首先为低值准备数据标签,然后为高值准备数据标签。但优点是它维持每对(高,低)值的索引。 因此,如果条件检查索引是否已存在,如果不存在,则返回该列的数据标签。但如果它存在,那么它将返回null。因此,结果是它将显示高数据标签或低数据标签

答案 1 :(得分:0)

您还可以使用其他解决方案,迭代每个元素,并删除datalabel

$.each(chart.series[0].data,function(i,e){
        e.dataLabel.destroy();
});

http://jsfiddle.net/CJQmL/2/