Highcharts:当point=null时,如何显示工具提示?

Highcharts:当point=null时,如何显示工具提示?,highcharts,Highcharts,当我们停留在五月,我们看不到这个月的工具提示,因为数据是空的。我可以将设置设置为在数据为空时查看工具提示吗?据我所知,没有通用选项,因为highcharts会忽略显示的空值 另一方面,我们可以将null点替换为“假”点,其平均值在两个最近点之间(这将导致图表流保持不变),并使用自定义属性isNull,该属性可在以后用作标志 完成此操作后,我们可以使用工具提示的格式化程序函数,并按照我们想要的方式操作工具提示,例如,当点为空时,仅显示序列名称 $(function () { $('#con

当我们停留在五月,我们看不到这个月的工具提示,因为数据是空的。我可以将设置设置为在数据为空时查看工具提示吗?

据我所知,没有通用选项,因为highcharts会忽略显示的空值

另一方面,我们可以将
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]);
        });
    });
});