ggplot2中类似数据的相似颜色

时间:2016-08-03 04:27:19

标签: r ggplot2 colors

假设我有这样的数据:

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被绘制为相似但可区分的绿色阴影?

3 个答案:

答案 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

答案 1 :(得分:0)

这就是我最终要做的事情。我实际上有10个时间序列,我想用两组五个颜色在视觉上进行分组:

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更好。

答案 2 :(得分: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')

希望它有所帮助!