2017-01-30 180 views
0

我一直在试图同时绘制两个不同变量(如点)的数据和根据条件采用不同颜色的线段。我的数据是这样的:为geom_point和geom_segment选择颜色(后者使用条件颜色)

x = rep(rnorm(100),2) 
    y = rnorm(200) 
    z=rep(c("var1","var2"),each=100) 
    dat = data.frame(x = x, y = y,z = z) 

现在我积点:

p1 <- ggplot(dat, aes(x = x,y=y,col=z)) + 
      geom_point(stat="identity") 
    plot(p1) 

,看起来像这样: 无段剧情:

enter image description here

现在我有段颜色的条件,并再次绘制:

s="j" 

    if(s=="a"){ 
     color_line <- "red" 
    }else{ 
     color_line <- "blue" 
    } 

    p1 <- p1 + 
      geom_segment(show.legend = F,aes(x=1,xend=0,y=0,yend=0,col=color_line)) 

    plot(p1) 

与段剧情:

enter image description here

正如你看到的,即使段应该是蓝色的,它是红色的。而且我不想引用传说中的这一行。所以我最想要的是:

  1. 这段是我在条件中指定的颜色,并且这些点的颜色既不是蓝色也不是红色。
  2. 图例仅显示我的数据中变量的名称(“var1”&“var2”)。

谢谢你的帮助。

+3

我不知道你到底想要什么,但是得到一条蓝线没有传说中的有“蓝”,你可以做'geom_segment(show.legend = F,aes(x = 1,xend = 0,y = 0,yend = 0),col = color_line)'(?)。 – lukeA

+0

这样一个微小的错误浪费了我一生的时间。谢谢!! –

回答

0

手动设置分段的颜色时,请勿将col = color_line置于aes()的内部。这样做,你的代码就像假定的那样工作。

即:

p1 <- p1 + geom_segment(show.legend = F,aes(x=1,xend=0,y=0,yend=0),col=color_line)