2016-06-02 14 views
0

I mit einem Datenrahmen in R zu tun habe, die wie diesesgestapelt BarPlot in R bedingte Färbung

test <- data.frame(c(1:4),c(5:8),c(9:12),c(13:16)) 
names(test) <- c("position","totalA","totalB","totalC") 

Nr ich eine gestapelte BarPlot erstellen möchten sieht, wo alle Bars in schwarz sind, mit Ausnahme von 1 Wert der Position, da möchte ich verschiedene Farben für ‚totalA‘, ‚totalB‘ und

‚totalC‘

Dies ist, was ich die BarPlot

test.transposed <- setNames(data.frame(t(test[,-1])), test [,1]) 
barplot(as.matrix(test.transposed)) 

so jetzt alle Balken sind bedingt gefärbt, zu schaffen, tat aber das sollte nur y ist der Fall, wenn Position == 2. Für den Rest sollten alle Balken schwarz sein.

Vorsicht kann ich nicht, dies zu tun verwenden ggplot2 ...

+0

Also, in der transponierten Version der Daten/Plot, Du willst 3 schwarze Balken und den zweiten in Farbe? –

+0

tatsächlich. Das ist richtig – user1987607

Antwort

1

hier ein hacky Weg, es zu tun:

test.transposed2 <- rbind(test.transposed, 'total' = apply(test.transposed,2,sum)) 
test.transposed2[1:3, -2] = 0 
test.transposed2[4,2] = 0 
barplot(as.matrix(test.transposed2[c(4,1,2,3),])) 

enter image description here