2012-04-16 7 views
6

In meinen HighChart-Liniendiagrammen werden die Seriendaten dynamisch aus meiner Ruby on Rails-Anwendung gespeist. Manchmal sind die Reihenwerte Nullen oder weniger, was für HighCharts ein Problem ist, und es wirft die folgende Ausnahme:Highcharts - beste Methode zur Verarbeitung und Anzeige von Null- (oder negativen) Werten in einer Liniendiagrammserie mit logarithmischer Y-Achse

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

So als Behelfslösung, ich meine Ruby-Array verarbeiten bedingt eine Null von weniger Wert mit einem ersetzen unbedeutende positive Zahl, z 0,00001 wie unten dargestellt:

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

Dies verhindert, dass die Ausnahme ausgelöst wird, aber das Display zeigt die Grafik bei 0,0001 beginnend, wenn der Startwert Null ist (verständlicherweise so, da ich es gefragt). Eine wünschenswertere Anzeige wäre die Grafik bei Null zu beginnen, aber HighChart mag es nicht :(

Gibt es eine Möglichkeit, dass dies erreicht werden kann?

Antwort

9

Haben Sie versucht, eine label formatter?

mit
var chart = new Highcharts.Chart({ 
    yAxis: {   
     labels: { 
      formatter: function() { 
       if(this.value === 0.00001){ 
        return 0; 
       } else { 
        return this.value; 
       } 
      } 
     } 
    } 
}); 
+0

Vielen Dank. Ich wusste nichts davon. Das ist mein zweiter Tag mit HighCharts :) – Bharat

1

Wenn es sich um große Zahlen handelt, ist es besser, den Standard - Formatierer für andere Werte als 0 zu verwenden, sonst werden Ihre Beschriftungen wie folgt angezeigt: 1000000000 ... Um dies zu ändern, ersetzen Sie die 'else' Anweisung durch den Aufruf der original label formatter methode unten:

var chart = new Highcharts.Chart({ 
    yAxis: {   
     labels: { 
      formatter: function() { 
       if(this.value === 0.00001){ 
        return 0; 
       } else { 
        return Highcharts.Axis.prototype.defaultLabelFormatter.call(this); 
       } 
      } 
     } 
    } 
}); 
Verwandte Themen