我试图定义 ggplot 中绘制的点组的颜色。我改编了这篇文章的代码:
根据定义的颜色代码为 ggplot 点着色 https://stackoverflow.com/questions/9827193/color-ggplot-points-based-on-defined-color-codes
但是,一旦我有多个由同一分组变量定义的行(而不是每行都有单独的颜色),代码就会失败,而且我不明白为什么。下面是一个可重现的示例:
#create some data
zone <- c("E","E","C","C","C","E","E") #grouping variable
col <- c(50,100,150,200,250,300,350) #x variable
D <- c(.4,.45,.20,.22,.30,.31,.35) #y variable
df1 <- data.frame(zone, D, col); df1
#create a colour scheme based on grouping variable 'zone'
zone <-c("E","C")
color.codes<-as.character(c("#3399FF", "#FF0000"))
color.names<-c("blue", "red")
df2=data.frame(zone, color.codes, color.names); df2
# merge color specifications with data
df <-merge(df1,df2, by=("zone"), all.x=TRUE, all.y=TRUE); df
数据如下所示:
zone D col color.codes color.names
C 0.20 150 #FF0000 red
C 0.22 200 #FF0000 red
C 0.30 250 #FF0000 red
E 0.40 50 #3399FF blue
E 0.45 100 #3399FF blue
E 0.31 300 #3399FF blue
E 0.35 350 #3399FF blue
目标是生成一个图,其中区域“C”中的点为红色,“E”中的点为蓝色,但使用引用示例中的代码,所有内容都以红色绘制:
p <- ggplot(data=df, aes(col, D, colour = zone))+
geom_point()
p + scale_colour_manual(breaks = df$zone, values = df$color.codes)
任何人都可以看到致命的缺陷,为什么这段代码不能以这种方式跨组工作?
预先非常感谢