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
帮助解决这个问题