将颜色条添加到ggplot中的散点图

时间:2013-09-23 17:20:29

标签: r ggplot2

我希望在散点图中添加一个颜色条。目前生成需要修改为彩条的离散图例。请帮我解决一下这个。提前谢谢,

library(ggplot2)    
x_axis<-sample(1:55)
y_axis<-sample(100:154)

plotName<-'Scatter plot with colorbar instead of discrete legend'
color_plate <- colorRampPalette(colors = c('dodgerblue4','dodgerblue','green3','green2','yellow2','red','darkred'),space='Lab') #v1
color_plate <- color_plate(55) 


  dat_1 <- data.frame(xvar = x_axis, 
             yvar = y_axis,

col1 <- c(rep(1,8),rep(2,8),rep(3,8),rep(4,8),rep(5,8),rep(6,8),rep(7,7)))              
# col1<-(rep(1,6),rep(2,6),rep(3,6),rep(4,6),rep(5,6),rep(6,6),rep(7,6),rep(8,6),rep(9,7))) 
chart<-ggplot(dat_1, aes(x=xvar, y=yvar)) +
         geom_point(shape=19,size=5,aes(colour = col1)) +

 scale_colour_continuous( low = "blue", high = "red", space ="Lab",name="observation",label=rep("",7) , #nrow(dat_1)
 guide = guide_legend(direction = "horizontal", title.position = "bottom",     title.hjust=0.5) ) +

         theme(legend.position = "bottom") +
         labs(title=plotName)+
         scale_y_continuous(expression(atop('Net'~CO[2]~'Flux '~CO[2]~' (β)' )))+   
         scale_x_continuous(expression(atop('Gross'~CO[2]))) 

print(chart)    

1 个答案:

答案 0 :(得分:3)

如果我们知道您选择这些特定颜色的原因,这会更容易。如果它们基本上是任意的,那么这可能会起作用:

### add a column for color
dat_1 <- data.frame(xvar = x_axis, 
                  yvar = y_axis,
                  col1 = 1:7)

编辑这应该接近你想要的

ggplot(dat_1, aes(x=xvar, y=yvar)) +
 geom_point(shape=19, size=5, aes(colour = col1)) +
 scale_colour_continuous( low = "blue", high = "red", space = "Lab",
  name="observation", label=rep("", nrow(dat_1)) ,
  guide = guide_legend(direction = "horizontal", 
   title.position = "bottom",     title.hjust=0.5) ) +
 theme(legend.position = "bottom")  +
 scale_y_continuous(expression(atop('Net'~CO[2]~'Flux '~CO[2]~' (β)' ))) +   
 scale_x_continuous(expression(atop('Gross'~CO[2]))) 

哪个给出了

enter image description here

根据您的评论,我制作了标签&#39;空白&#39;通过传递""作为值。更改外观遵循guide legend的帮助。 如果您有55个观察值并且希望它们全部具有7个颜色值中的一个,那么:

dat_1$col1 <- rep(seq(7), 8)[-7*8]

应该为你做。您可以根据自己的喜好更改颜色。我个人喜欢scale_color_brewer,因为它很容易看出哪些适合色盲的观众。

<强> UPDATE2

我认为您的代码中可能存在拼写错误。 以下适用于我:

set.seed(1)
dat_1 <- data.frame(xvar = sample(1:55),
                    yvar = sample(100:154),
                    col1 = c(seq(10), rep(seq(15), each=3))
                    )

然后如上图所示,你将得到55个色调为15色调的点。