2017-12-21 12 views
0

Ich verwende Highcharters Polar-Diagramme und fragte mich, ob es die Fähigkeit hat, die Farben anhand von Kriterien zu ändern. Ich verwende das Diagramm, um Budget im Vergleich zu Ausgaben zu betrachten. Wenn Sie < Budget ausgeben, möchte ich, dass die Spalte grün ist. Wenn Budget ausgeben, möchte ich, dass die Spalte rot ist. Ist das möglich?R Highcharter: Polardiagramm mit bedingten Farben

Für das Beispiel im Code: "Logistik" und "IT & Telecom" ausgeben würde grün sein, würden alle anderen Ausgabenkategorien rot sein.

Die Antwort muss dynamisch sein, da sich der Über- oder Unterplan ständig ändert.

Unten ist eine vereinfachte Version des Codes.

library (shiny) 
library (highcharter) 

hc <- highchart() %>% 
    hc_chart(polar = TRUE) %>% 
    hc_title(text = "Budget vs Spending") %>% 
    hc_xAxis(categories = c("Energy", "Facilties", "IT & Telecom", 
          "Logistics", "Office Products", "Plant Consumables", 
          "Temp Labor", "Travel", "Other"), 
      tickmarkPlacement = "on", 
      lineWidth = 0) %>% 
    hc_yAxis(gridLineInterpolation = "polygon", 
      lineWidth = 0, 
      min = 0) %>% 
    hc_series(
    list(
     name = "Spend", 
     data = c(50000, 39000, 42000, 31000, 26000, 14000, 26000, 26000, 26000), 
     pointPlacement = "on", 
     type = "column" 
    ), 
    list(
     name = "Budget", 
     data = c(43000, 19000, 60000, 35000, 17000, 10000,10000,10000,10000), 
     pointPlacement = "on", 
     type = "line" 
    ) 
) 

hc 
+0

Ich weiß nicht viel über R, sondern in Highcharts JS Ich würde Code für die Aktualisierung in 'chart.events.render' Eigenschaft schreiben: http://jsfiddle.net/kkulig/88mb6mq8/ Ich benutze' redrawEnabled Flag, um unendliche rekursive Schleife zu verhindern, die durch Neuzeichnen des Diagramms verursacht wird innerhalb dieses Ereignisses ('render' ruft' r auf edraw' Ereignis selbst). –

Antwort

1

Hallo wollen Sie colorByPoint zu TRUE und die Verwendung eine ifesle, um den colors wie diese

library (shiny) 
library (highcharter) 
library(tidyverse) 
hc <- highchart() %>% 
    hc_chart(polar = TRUE) %>% 
    hc_title(text = "Budget vs Spending") %>% 
    hc_xAxis(categories = c("Energy", "Facilties", "IT & Telecom", 
          "Logistics", "Office Products", "Plant Consumables", 
          "Temp Labor", "Travel", "Other"), 
      tickmarkPlacement = "on", 
      lineWidth = 0) %>% 
    hc_yAxis(gridLineInterpolation = "polygon", 
      lineWidth = 0, 
      min = 0) %>% 
    hc_series(
    list(
     name = "Spend", 
     data = c(50000, 39000, 42000, 31000, 26000, 14000, 26000, 26000, 26000), 
     pointPlacement = "on", 
     colorByPoint = TRUE, 
     type = "column", 
     colors = ifelse(c(50000, 39000, 42000, 31000, 26000, 14000, 26000, 26000, 26000) > c(43000, 19000, 60000, 35000, 17000, 10000,10000,10000,10000),"#F00","#0F0") 
    ), 
    list(
     name = "Budget", 
     data = c(43000, 19000, 60000, 35000, 17000, 10000,10000,10000,10000), 
     pointPlacement = "on", 
     type = "line" 
    ) 
) 

hc 

Hoffnung zu setzen, das hilft

+0

Das funktioniert perfekt, danke! – Kevin

Verwandte Themen