Javascript 在Highchart中,即使数据标签有负数,其内部和外部的颜色是否会不同?

Javascript 在Highchart中,即使数据标签有负数,其内部和外部的颜色是否会不同?,javascript,highcharts,Javascript,Highcharts,我在下面的帖子上看到了同样的问题: 但是,当数据包含负值时会出现问题: $(function () { $('#container').highcharts({ chart: { type: 'bar', height: 700 }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov

我在下面的帖子上看到了同样的问题:

但是,当数据包含负值时会出现问题:

$(function () {
$('#container').highcharts({
    chart: {
        type: 'bar',
        height: 700
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    plotOptions: {
        bar: {
            stacking: 'normal',
            pointPadding: 0,
            groupPadding: 0.2,
            dataLabels: {
                enabled: true,
                align: "right",                    
                inside: false,
                style: {
                    fontWeight: 'bold'
                },
                formatter: function() {
                    var max = this.series.yAxis.max,
                        color =  this.y / max < 0.05 ? 'black' : 'white'; // 5% width
                    return '<span style="color: ' + color + '">' + this.y + ' M</span>';   
                },
                verticalAlign: "middle"
            },
        }
    },

    series: [{
        data: [-29.9, -71.5, -106.4, -129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 2.33]
    }]
});

});
$(函数(){
$(“#容器”)。高图({
图表:{
类型:'bar',
身高:700
},
xAxis:{
类别:[一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月]
},
打印选项:{
酒吧:{
堆叠:“正常”,
点填充:0,
分组填充:0.2,
数据标签:{
启用:对,
对齐:“右”,
里面:假,,
风格:{
fontWeight:“粗体”
},
格式化程序:函数(){
var max=this.series.yAxis.max,
color=this.y/max<0.05?'black':'white';//5%宽度
返回''+this.y+'M';
},
垂直排列:“中间”
},
}
},
系列:[{
数据:[-29.9,-71.5,-106.4,-129.2144.0176.0135.6148.51216.4194.1,95.6,2.33]
}]
});
});
如何解决此问题


谢谢

您只需修改@PawełFus'解决方案以适应负数,如下所示:

formatter: function() {
    var min = Math.abs(this.series.yAxis.min) //Since min can be negative
    var max = Math.abs(this.series.yAxis.max) //Since max can be negative
    var pt = Math.abs(this.y)
    var highest = Math.max(min,max)
    var color =  pt / highest < 0.05 ? 'black' : 'white'; // 5% width
            return '<span style="color: ' + color + '">' + this.y + ' M</span>'
},
格式化程序:函数(){
var min=Math.abs(this.series.yAxis.min)//因为min可以是负数
var max=Math.abs(this.series.yAxis.max)//因为max可以是负数
var pt=Math.abs(this.y)
变量最高=数学最大值(最小值,最大值)
var color=pt/最高<0.05?'black':'white';//5%宽度
返回“”+this.y+'M'
},
使用最高的变量(包含x轴两侧的最大长度)。实际上,您需要的是距
原点的距离。以确定数据标签是在内部还是在外部

Math.abs
帮助解决这个问题