Highcharts:当point=null时,如何显示工具提示?
当我们停留在五月,我们看不到这个月的工具提示,因为数据是空的。我可以将设置设置为在数据为空时查看工具提示吗?据我所知,没有通用选项,因为highcharts会忽略显示的空值 另一方面,我们可以将Highcharts:当point=null时,如何显示工具提示?,highcharts,Highcharts,当我们停留在五月,我们看不到这个月的工具提示,因为数据是空的。我可以将设置设置为在数据为空时查看工具提示吗?据我所知,没有通用选项,因为highcharts会忽略显示的空值 另一方面,我们可以将null点替换为“假”点,其平均值在两个最近点之间(这将导致图表流保持不变),并使用自定义属性isNull,该属性可在以后用作标志 完成此操作后,我们可以使用工具提示的格式化程序函数,并按照我们想要的方式操作工具提示,例如,当点为空时,仅显示序列名称 $(function () { $('#con
null
点替换为“假”点,其平均值在两个最近点之间(这将导致图表流保持不变),并使用自定义属性isNull
,该属性可在以后用作标志
完成此操作后,我们可以使用工具提示的格式化程序
函数,并按照我们想要的方式操作工具提示,例如,当点为空时,仅显示序列名称
$(function () {
$('#container').highcharts({
title: {
text: 'The line is connected from April to Juni, despite the null value in May'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
series: {
connectNulls: true
}
},
tooltip: {
formatter: function(){
if(this.point.isNull == undefined)
return this.series.name+"<br>"+"<b>value:</b>"+this.y;
return this.series.name;
}
},
series: [{
data: [null, 71.5, 106.4, 129.2, null, 176.0, 135.6, null, 216.4, 194.1, 95.6, 54.4]
}]
}, function(chart){
var series = chart.series[0];
var data = series.data;
$.each(data,function(i){
var point = data[i];
var prevPoint = data[i-1] != undefined ? data[i-1].y : 0;
var nextPoint = data[i+1] != undefined ? data[i+1].y : 0;
if(point.y == null){
series.addPoint({x:point.x,y:(prevPoint+nextPoint)/2, isNull:true});
}
});
});
});
当然还有小提琴:您理解正确,但这个实现是不正确的。作为areaspline,我们有一条非常难看的不平滑的线。在上面的演示中,它看起来并没有那么糟糕:答案是正确的,空点只是被忽略了,根本没有渲染,所以没有关于这些点的工具提示。我编辑了这篇文章,希望这个解决方案能适合更多是的,它工作正确!)上一个解决方案无法正确工作,当连续出现多个值(null)时,直线是弯曲的。这个解决方案非常好,谢谢!
$(function () {
$('#container').highcharts({
title: {
text: 'The line is connected from April to Juni, despite the null value in May'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
series: {
connectNulls: true,
},
},
tooltip: {
shared:true,
formatter: function(){
var points = this.points;
var seriesName = points[0].series.name;
if(seriesName == 'fake')
return "Null tooltip";
return seriesName+"<br>value: <b>"+this.y+"</b>";
}
},
series: [{
type:'areaspline',
data: [null, 71.5, 106.4, 129.2, null, 176.0, 135.6, null, 216.4, 194.1, 95.6, 54.4]
},
{
type:'spline',
lineWidth:0,
name:'fake',
showInLegend:false,
marker:{
symbol:'circle',
radius:0,
}
}
]
}, function(chart){
var series = chart.series[0];
var fake_series = chart.series[1];
$.each(series.data, function(i){
var point = this;
var nextPoint = series.data[i+1] != undefined ? series.data[i+1].y : 0;
var prevPoint = series.data[i-1] != undefined ? series.data[i-1].y : 0;
if(series.data[i].y == null)
fake_series.addPoint([series.data[i].x, (nextPoint+prevPoint)/2]);
});
});
});