2016-07-04 185 views
1

所以我試圖通過ggplot中的統計彙總函數設置條件顏色。我在ggplot中創建了一個條形圖,並且想要設置一個條件顏色,如果平均值小於0,則將其設爲紅色,如果它高於0,則將其設爲綠色。ggplot中的stat_summary設置條件顏色

Name  Value 
A   10 
A   -5 
B   15 
B   12 
C   -2 
C   -4 

ggplot(data, aes(x=Name, y=Value, group=Name))+ 
stat_summary(fun.y="mean", geom="bar") 

我知道我會在那裏需要一個ifelse語句,但我不確定條件是什麼。

回答

2

如果使用ggplot,對於你的情況彙總前手的數據,然後使用geom_bar應該是相當簡單之前準備好用於繪圖數據這會容易得多:

dataSum <- aggregate(Value ~ Name, data, FUN = 'mean') 
ggplot(dataSum, aes(x = Name, y = Value, fill = (Value > 0))) + 
     geom_bar(stat = "identity", position = 'dodge') + 
     scale_fill_manual(labels = c("FALSE" = "Less than zero", "TRUE" = "Above zero"), 
         values = c('red', 'green')) + 
     theme(legend.title = element_blank()) 

enter image description here

1
# Prepare data: split the data into subsets and compute summary using aggregate 
    data <- aggregate(Value ~ Name, data, FUN = 'mean') 
# Plot 
    g <- ggplot(data , aes(x=Name, y=Value, group=Name)) + 
    # Add condition for colors aes(fill = Value > 0) 
    stat_summary(fun.y="mean", geom="bar",aes(fill = Value > 0)) 
    g + scale_fill_manual(values = c('red', 'green')) 

而輸出:

enter image description here