2011-03-24 60 views
14

我正在尋找一種方法來隱藏從下面的代碼創建的情節的一個aestetic傳奇。要按日期縮放點顏色,我不得不將日期轉換爲數字,而且我寧願不在日曆上顯示日期圖例。另一方面,形狀圖例是顯示的重要信息。據我所知,legend.position="none"將徹底刪除這個圖例,但是這給我帶來了如何溝通形狀背後意義的問題。如何從ggplot2圖例中刪除審美

library(ggplot2) 
w<-read.table("data.txt", header=TRUE) 
pt.data <- w[w$dt==min(w$dt),] 
p <- ggplot(data=w, aes(OAD,RtgValInt,color=dt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75) + 
    scale_colour_gradient(limits=c(min(w$dt), 
      max(w$dt)), 
     low="#9999FF", high="#000066") + 
    geom_point(data=pt.data, 
     color="red", size=3, aes(shape=Port)) 
print(p) 

data.txt文件包括以下幾行。

Date   Port OAD   RtgValInt dt 
12/31/2010 Grp1 1.463771 1.833333 14974 
12/31/2010 Grp2 1.193307 2.071429 14974 
11/30/2010 Grp1 1.454115 1.833333 14943 
11/30/2010 Grp2 1.127755 2.071429 14943 
10/29/2010 Grp1 1.434965 2.000000 14911 
10/29/2010 Grp2 1.055758 2.071429 14911 
09/30/2010 Grp1 1.441773 2.000000 14882 
09/30/2010 Grp2 1.077799 2.071429 14882 

enter image description here

回答

10

您可以在該層水平抑制傳說。如果將色彩審美從最初的調用移動到ggplot到抖動層,那麼似乎會產生您所追求的效果。我有點困惑,至於你爲什麼要根據日期進行着色,而沒有提供關於顏色意味着什麼的關鍵......但這是一個更哲學的問題讓你思考。

ggplot(data=w, aes(OAD,RtgValInt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75, color=dt, legend = FALSE) + 
    scale_colour_gradient(limits=c(min(w$dt), max(w$dt)),low="#9999FF", high="#000066") + 
    geom_point(data=pt.data, color="red", size=3, aes(shape=Port)) 
+1

雖然這會刪除數據圖例,但它也會從點中刪除顏色縮放。這些日期代表固定的歷史時期(例如1個月),它們的實際價值不是重要的和隨時間推移的趨勢。 – user338714 2011-03-24 17:59:31

+14

我想你可能真的想要在比例級別抑制圖例:'+ scale_colour_gradient(...,legend = F)' – hadley 2011-03-24 19:51:14

+0

這很好用!感謝你們兩位的幫助。 – user338714 2011-03-25 00:20:02