2016-08-03 57 views
2

假設我有數據是這樣的:相似的顏色相似的數據GGPLOT2

Time, variable, value 
0, A, 1.2 
1, A, 2.3 
2, A, 3.4 
0, B, 1.1 
1, B, 2.4 
2, B, 3.7 
0, C, 1.2 
1, C, 2.1 
2, C, 3.3 
0, D, 1.4 
1, D, 2.5 
2, D, 3.5 
0, E, 1.8 
1, E, 2.9 
2, E, 3.1 
0, F, 0.8 
1, F, 2.2 
2, F, 3.3 
0, G, 1.7 
1, G, 4.3 
2, G, 4.4 
0, H, 1.0 
1, H, 2.2 
2, H, 3.1 

如果我這樣做qplot(Time, value, color = variable, data = mydata, geom = "line")我會在這種情況下獲得8種不同顏色的線條默認。假設數據A,B,C,D是相關的並且數據E,F,G,H是相關的。我想通過顏色來展示這種關係。我怎麼能告訴R我想讓A,B,C,D被繪製成類似但可區分的藍色陰影,D,E,F,G被繪製成相似但可區分的綠色陰影?

+1

ggplot中沒有「類似但可區分」顏色的功能。你可以嘗試附加一些屬性到alpha可能會稍微改變顏色或映射線的類型?但是你可能只需要用'scale_color_manual'手動指定顏色來獲得你想要的結果。 – MrFlick

+0

我該怎麼去做呢? –

回答

4

您可以通過首先對數據集進行分組然後指定兩個組的顏色釀造器來製作自定義比例。 brewer.pal功能允許您從常用顏色的比例中挑選。

library(dplyr) 
df <- df %>% mutate(groups = factor(as.numeric(df$variable %in% 
              LETTERS[1:4]))) 

blues <- RColorBrewer::brewer.pal(6, "Blues")[3:6] 
reds <- RColorBrewer::brewer.pal(6, "Reds")[3:6] 

    ggplot() + 
     geom_line(data = df, 
       aes(x = value, y = variable, 
        group = variable, 
        color = interaction(factor(groups), 
             variable))) + 
     scale_color_manual("Variable", labels = unique(df$variable), 
         values = c(blues, reds)) 

enter image description here

+0

哎呀我在發佈之前沒有看到這個。 –

0

這是我落得這樣做。其實我有10的時間序列,而且我在兩組5想把它們在視覺上按顏色:

library(RColorBrewer) 
# you have to pick the last 5 of 9 colors because if you just specify 5 colors, the first will be way too pale 
blues = brewer.pal(9,"Blues")[5:9] 
greens = brewer.pal(9, "Greens")[5:9] 
mycolors = append(blues, greens) 
ggplot(data = mydata, aes(x=Time, y=value, color=variable)) + geom_line() + theme_classic() + scale_colour_manual(values=mycolors) 

不完美的 - 創建事務的顏色順序,你必須創建相同數量的顏色,因爲你有數據系列 - 但它比發現和輸入RGB值IMO更好。

0

我認爲你需要做的只是添加一個新變量,並將A,B C,D分爲一組,而E,F,G,H在另一組中。

mydata$variable=as.character(mydata$variable) 
    mydata$variable1=mydata$variable 
    ifelse(mydata$variable1[]==c('A','B','C'),'a','b') 

希望它有幫助!