2017-06-12 80 views
0

我正在嘗試在ggplot 2中僅反演1個因子中的因子順序。重新排序數據而不將它們定義爲一個因子通常有效,但不適用於最新版本。使用ggplot在1 bar中更改因子順序

例如: 我想反轉最後一列中的因子(綠色,紅色)。

Example

library(ggplot2) 

dados <- expand.grid(a = letters[1:5], b = letters[1:2]) 
dados$a <- paste(dados$a) 
dados$b <- paste(dados$b) 
dados$val <- rnorm(10, 5, 1) 
ggplot(aes(x = a, y = val, fill = b), data = dados) + geom_bar(stat = 'identity') 

dados2 <- rbind(tail(dados, -1), head(dados, 1)) 
ggplot(aes(x = a, y = val, fill = b), data = dados2) + geom_bar(stat = 'identity') # Used to work :/ 
+0

一個想法是爲最後一列添加一個不同的層(我知道這很煩人),但我不知道是否要按照數據中的順序進行堆疊順序。 –

回答

2

我在column b分配了兩個附加參數e見下文cd

a b val 
2 b a 4.504735 
3 c a 5.396658 
4 d a 6.796288 
5 e c 5.900308 
6 a b 3.900510 
7 b b 4.454316 
8 c b 5.411198 
9 d b 6.389902 
10 e d 4.458425 
1 a a 4.986175 

通過scale_fill_manual I反兩種顏色

ggplot(aes(x = a, y = val, fill = b), data = dados2) + 
    geom_bar(stat = 'identity') + 
    scale_fill_manual(values = c("a"= "red", "b"= "green",'c'= "green", "d"="red"))