我有一个范围图表,我需要删除'低'标签(但保留'高'标签)。
我可以“破解”这个并设置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;
}
答案 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();
});