2011-12-08 72 views
3

我需要使用ggplot2來自定義圖形。下面是我使用的代碼和生成的圖表:在ggplot中自定義圖例

> p=ggplot(a2,aes(x=grid,y=median))+geom_line(size=1.3)+ 
    geom_line(aes(x=grid,y=lower,linetype=2,colour='red'),size=1.3)+ 
    geom_line(aes(x=grid,y=upper,linetype=2,colour='red'),size=1.3)+ 
    geom_line(aes(x=trueX,y=trueY,linetype=1,colour='blue'),size=.8)+ 
    geom_line(aes(x=grid,y=xDens,linetype=1),size=.5)+ 
    geom_point(data=a1,aes(x=X,y=Y),size=1) 

enter image description here

首先,紅色和藍色似乎離他們距離應該是什麼。第二,我想有四個條目可以自定義圖例:

  1. 飛度(黑線)
  2. CONF INT(紅色虛線)
  3. 真曲線(藍線)
  4. X密度(小黑線)

我一直在玩它一段時間,但無法弄清楚。將不勝感激建議。

我可能需要重新安排我的數據來獲得我想要的,這裏是我有什麼,現在(忽略該數據與點集合A1)預覽:

> head(a2[,c(1,2,4,5,6,7,8)]) 
    lower upper median  grid trueX  trueY xDens 
1 26.65933 28.83431 27.54782 -4.845770 -3.998449 27.73697 0.02803692 
2 26.65933 28.77224 27.54284 -4.826273 -3.967264 27.71877 0.02902979 
3 26.65933 28.77224 27.54284 -4.806776 -3.910030 27.68470 0.02953585 
4 26.65933 28.77224 27.54284 -4.787279 -3.898646 27.67782 0.03056721 
5 26.65933 28.77224 27.54284 -4.767782 -3.891712 27.67361 0.03162419 
6 26.65933 28.77224 27.54284 -4.748285 -3.890767 27.67304 0.03270666 

回答

4

大概這是從附近的什麼你想:

樣本數據:

> d 
    lower upper median  grid  trueX trueY  xDens 
1 26.65933 28.83431 27.54782 -4.845770 -3.998449 27.73697 0.02803692 
2 26.65933 28.77224 27.54284 -4.826273 -3.967264 27.71877 0.02902979 
3 26.65933 28.77224 27.54284 -4.806776 -3.910030 27.68470 0.02953585 
4 26.65933 28.77224 27.54284 -4.787279 -3.898646 27.67782 0.03056721 
5 26.65933 28.77224 27.54284 -4.767782 -3.891712 27.67361 0.03162419 
6 26.65933 28.77224 27.54284 -4.748285 -3.890767 27.67304 0.03270666 

代碼:

d2 <- melt(subset(d, select = -c(trueX)), id = "grid") 
ggplot(d2, aes(grid, value, colour = variable, linetype = variable, size = variable)) + 
    geom_line() + 
    scale_colour_manual("", values = c("red", "red", "black", "blue", "black"), breaks = levels(d2$variable)) + 
    scale_linetype_manual("", values = c(2, 2, 1, 1, 1), breaks = levels(d2$variable)) + 
    scale_size_manual("", values = c(0.5, 0.5, 0.5, 0.5, 0.25), breaks = levels(d2$variable)) 

輸出:

enter image description here

+0

感謝這個偉大的工作。但是,當我嘗試從新數據集中添加點(最後一行)時,我遇到了一個問題,現在我收到一條錯誤消息。如果plt是原始圖(你已經顯示),我運行:plt + geom_point(data = a1,aes(x = X,y = Y))我得到: eval中的錯誤(expr,envir,enclos ):找不到對象「變量」 – Glen

+0

我先在那個工作點繪製了點。 – Glen