In my HighChart line graphs, the series data is being fed from my Ruby on Rails application dynamically. Sometimes the series values are zeros or less which is a problem for HighCharts and it throws the following exception:
Highcharts Error #10
Can't plot zero or subzero values on a logarithmic axis
So as a work-around, I process my ruby array to conditionally replace a zero of less value with an insignificant positive number, .e.g. 0.00001 as shown below:
oil_vol_array = d_array[1].map { |e| (e < 0.0001) ? 0.0001 : e.round(3) }
This prevents the exception being thrown, but the display shows the graph starting at 0.0001 if the starting value is zero (understandably so, since I asked it to). A more desirable display would be to start the graph at zero, but HighChart doesn't like it :(
Is there a way that this can be achieved?
Have you tried using a label formatter?
var chart = new Highcharts.Chart({
yAxis: {
labels: {
formatter: function() {
if(this.value === 0.00001){
return 0;
} else {
return this.value;
}
}
}
}
});
When dealing with huge numbers, it's better to use the standard label formatter for values other than 0, otherwise your labels gonna be displayed like this: 1000000000... To change this replace 'else' statement to the call to the original label formatter method below:
var chart = new Highcharts.Chart({
yAxis: {
labels: {
formatter: function() {
if(this.value === 0.00001){
return 0;
} else {
return Highcharts.Axis.prototype.defaultLabelFormatter.call(this);
}
}
}
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With