在我的HighChart折线图中,系列数据是从我的Ruby on Rails应用程序动态提供的。有时系列值为零或更小,这是HighCharts的一个问题,它会抛出以下异常:
Highcharts Error #10
Can't plot zero or subzero values on a logarithmic axis
因此,作为一种解决方法,我处理我的ruby数组以有条件地用一个无关紧要的正数替换零值,例如.e.g。 0.00001如下图所示:
oil_vol_array = d_array[1].map { |e| (e < 0.0001) ? 0.0001 : e.round(3) }
这可以防止抛出异常,但如果起始值为零,显示屏将显示从0.0001开始的图形(可以理解的是,因为我要求它)。更理想的显示是将图形设置为零,但HighChart不喜欢它:(
有没有办法可以实现这一目标?
答案 0 :(得分:9)
您是否尝试使用label formatter?
var chart = new Highcharts.Chart({
yAxis: {
labels: {
formatter: function() {
if(this.value === 0.00001){
return 0;
} else {
return this.value;
}
}
}
}
});
答案 1 :(得分:1)
处理大量数字时,最好使用标准格式化器来表示0以外的值,否则您的标签将显示如下:1000000000 ...要更改此项,请将“else”语句替换为对原始语句的调用标签格式化方法如下:
var chart = new Highcharts.Chart({
yAxis: {
labels: {
formatter: function() {
if(this.value === 0.00001){
return 0;
} else {
return Highcharts.Axis.prototype.defaultLabelFormatter.call(this);
}
}
}
}
});