2017-06-12 2 views
1

Wie kann ich mit styleColorBar die Größe des Farbbalkens proportional zum absoluten Wert einer Spalte ermitteln? Im Gegensatz dazu ist in dem folgenden Beispiel der rote Balken für größere Werte größer, wenn Sie die Spalte cyl betrachten.styleColorBar: muss die Größe des Farbbalkens proportional zu den absoluten Werten einer Spalte sein

Code:

data <- head(mtcars[,1:4]) 
data[,2] <- -data[,2] 
data 
out <- datatable(data, rownames = FALSE) %>% 
    formatStyle('mpg', 
       background = styleColorBar(data$mpg, 'lightblue'), 
       backgroundSize = '95% 50%', 
       backgroundRepeat = 'no-repeat', 
       backgroundPosition = 'right') %>% 
    formatStyle('cyl', 
       background = styleColorBar(data$cyl, 'red'), 
       backgroundSize = '95% 50%', 
       backgroundRepeat = 'no-repeat', 
       backgroundPosition = 'right') 
out 

Ergebnis: enter image description here Ich bin mir bewusst, dass sehr ähnliche Fragen haben here und there beantwortet.

Aber beide Beispiele scheinen komplizierter als meins. Erstere behandelt das Formatieren einer Spalte basierend auf einer anderen Spalte. Letzterer hat die Richtung des Farbbalkens abhängig vom Vorzeichen. Ich dachte, dass vielleicht ein einfacher Trick für meinen Fall existiert ...

Danke

Antwort

1

Hier ist eine hackish Art und Weise: styleColorBar produziert einige JavaScript, wo Sie value von Math.abs(value) ersetzen können. Um die Grenzen richtig zu machen, nahm ich auch abs(data$cyl):

library(DT) 
data <- head(mtcars[,1:4]) 
data[,2] <- -data[,2] 
data 
out <- datatable(data, rownames = FALSE) %>% 
    formatStyle('mpg', 
       background = styleColorBar(data$mpg, 'lightblue'), 
       backgroundSize = '95% 50%', 
       backgroundRepeat = 'no-repeat', 
       backgroundPosition = 'right') %>% 
    formatStyle('cyl', 
       background = gsub(
       "value", "Math.abs(value)", 
       styleColorBar(abs(data$cyl), 'red'), 
       fixed=T), 
       backgroundSize = '95% 50%', 
       backgroundRepeat = 'no-repeat', 
       backgroundPosition = 'right') 
out 

enter image description here

Verwandte Themen