6

在我的 HighChart 折线图中,系列数据是从我的 Ruby on Rails 应用程序动态提供的。有时系列值为零或更小,这对 HighCharts 来说是个问题,它会引发以下异常:

Highcharts Error #10
Can't plot zero or subzero values on a logarithmic axis

因此,作为一种变通方法,我处理我的 ruby​​ 数组以有条件地用一个无关紧要的正数替换一个较小的零值,例如 0.00001,如下所示:

oil_vol_array = d_array[1].map { |e| (e < 0.0001) ? 0.0001 : e.round(3) }

这可以防止抛出异常,但是如果起始值为零,则显示会显示从 0.0001 开始的图形(可以理解,因为我要求它这样做)。更理想的显示方式是将图表从零开始,但 HighChart 不喜欢它:(

有没有办法可以做到这一点?

4

2 回答 2

9

您是否尝试过使用标签格式化程序

var chart = new Highcharts.Chart({ 
    yAxis: {        
        labels: {
            formatter: function() {
                if(this.value === 0.00001){
                    return 0;
                } else {
                    return this.value;
                }
            }
        }
    }
});
于 2012-04-16T21:57:49.547 回答
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);
                }
            }
        }
    }
});
于 2013-10-09T20:03:52.340 回答