2016-09-02 4 views
4

Ich habe ein Problem mit HighCharts, genauer mit Spalte Bereich Grafik. Ich hätte gerne rot Farbe für negative Zahlen und blau Farbe für positive Zahlen.Highcharts Spaltenbereich Farbe für negative Zahlen ändern

Der aktuelle Code gibt die rot Farbe zu den Bars mit Nurpositiven Werten und blau Farbe diejenigen, bei denen das Intervall einen negativen Wert enthält:

$(function() { 

    $('#container').highcharts({ 

     chart: { 
      type: 'columnrange', 
      inverted: false 

     }, 

     title: { 
      text: 'Temperature variation by month' 
     }, 

     subtitle: { 
      text: 'Observed in Vik i Sogn, Norway' 
     }, 

     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 

     yAxis: { 
      title: { 
       text: 'Temperature (°C)' 
      } 
     }, 

     tooltip: { 
      valueSuffix: '°C' 
     }, 

     plotOptions: { 
      columnrange: { 
       dataLabels: { 
        enabled: true, 
        grouping:true, 
        formatter: function() { 
        if(this.y == 0) 
         return ""; 
        else 
         return this.y; 
        } 
       } 
      } 

     }, 

     legend: { 
      enabled: false 
     }, 

     series: [{ 
      name: 'Temperatures', 
      color: '#FF0000', 
      displayNegative: true, 
      negativeColor: '#0088FF' , 
      data: [ 
       [0, 9.4], 
       [-8.7, 6.5], 
       [-3.5, 9.4], 
       [-1.4, 19.9], 
       [0.0, 22.6], 
       [2.9, 29.5], 
       [9.2, 30.7], 
       [7.3, 26.5], 
       [4.4, 18.0], 
       [-3.1, 11.4], 
       [-5.2, 10.4], 
       [-13.5, 9.8] 
      ] 
     }] 

    }); 

}); 

Die Der aktuelle Graph sieht so aus: enter image description here

Die r RGEBNIS sollte wie erforderlich sein:

enter image description here Nach einigen Forschungen

Link to fiddle

+1

In diesem Moment können Highcharts Sie nach param einen Schwellenwert und Farbpunkte setzen. Beispiel: http://jsfiddle.net/s3c82p6w/. Wenn der negative Teil farbig sein soll, müssen Sie jeden (negativen/positiven Punkt) in Punkte aufteilen. Beispiel: http://jsfiddle.net/xdg67kuo/ –

+0

Werfen Sie einen Blick darauf [Säulendiagramm mit geteilten Farben] (http://stackoverflow.com/a/42570192/5817953). Farbbereich für Zahlen unter dem Schwellenwert – Sakthi

Antwort

1

und auf der Grundlage der Kommentar oben von @Sebastian hier ist das Ergebnis:

Sie können Ihre Data ändern, indem Sie den Index Hinzufügen um die xAxis wie Data[[Index,from,to],[SecondIndex,from,to] usw. anzupassen ... und wenn es um die negativen Werte geht, können Sie Daten Data[[IndexForNegative,from,to],[IndexForNegative,from,to]... für den gleichen Wert einstellen.

$(function() { 

    $('#container').highcharts({ 

    chart: { 
     type: 'columnrange' 
    }, 

    title: { 
     text: 'Temperature variation by month' 
    }, 

    subtitle: { 
     text: 'Observed in Vik i Sogn, Norway' 
    }, 

    xAxis: { 
     categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
    }, 

    yAxis: { 
     title: { 
     text: 'Temperature (°C)' 
     } 
    }, 

    tooltip: { 
     valueSuffix: '°C' 
    }, 

    plotOptions: { 
     columnrange: { 
     negativeColor: 'red', 
     threshold: 0, 
     dataLabels: { 
      enabled: true, 
      formatter: function() {    
      } 
     } 
     } 
    }, 

    legend: { 
     enabled: false 
    }, 

    series: [{ 
     name: 'Temperatures', 
     data: [ 
       [0,0,9.4], 
       [1,-8.7,0],[1,0,6.5], //spliting all data that has negative values using the same index 
       [2,-3.5,0],[1,0,9.4], 
       [3,-1.4,0],[2,0,19.9], 
       [4,0.0],[4,0,22.6], 
       [5,2.9, 29.5], 
       [6,9.2, 30.7], 
       [7,7.3, 26.5], 
       [8,4.4, 18.0], 
       [9,-3.1,0],[9,0,11.4], 
       [10,-5.2,0],[10,0,10.4], 
       [11,-13.5,0],[11,0,9.8] 
      ] 
    }]  
    });  
}); 

http://jsfiddle.net/0ns43y47/

+0

Scheint das, wonach ich gesucht habe! Also nur Negativ und Positiv aufteilen und den gleichen Index setzen :). Erstaunlich, wie ich das vorher nicht ausprobieren konnte. Danke für das Teilen und deine Zeit! : D – Ales

+1

Gern geschehen, wenn das dein Problem löst, kannst du es als Antwort akzeptieren http://stackoverflow.com/help/someone-answers – Simo