2017-01-30 347 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)