2012-06-13 24 views
2

我是一個R用戶回來,但努力讓我的頭圍繞ggplot2。在這個例子中,當我在alpha設置中使用geom =「path」選項時,我無法獲得圖例。如果我設置geom =「point」,它看起來很好。傳說與ggplot2與幾何=「路徑」和alpha選項

tmp <- data.frame(cx=rnorm(21),cy=rnorm(21),labels=c(rep("a",7),rep("b",7),rep("c",7))) 

p1 <- qplot(data=tmp,cx,cy,geom="point",colour = labels, size=I(5), alpha=I(0.5)) 

然後點的圖顯示正常,包括正確的alpha設置顯示點的圖例。添加在GEOM =「路徑」

p2 <- qplot(data=tmp,cx,cy,geom="path",colour = labels, size=I(5), alpha=I(0.5)) 

獲取我的陰謀與線路連接,並與Alpha設置正確繪製和傳說也出現,但空白 - 例如。沒有alpha顏色。

這可能嗎?

這一切工作正常,通過刪除alpha參數,我得到純色的情節和傳說。

更新:感謝您的意見到目前爲止,但我想這只是我或我的設置,因爲我仍然有這個問題。什麼,我的鏈接獲得一個例子...

Example

http://i.stack.imgur.com/LiEwD.jpg

而且爲了完整性......

> sessionInfo() 
R version 2.15.0 (2012-03-30) 
Platform: i386-pc-mingw32/i386 (32-bit) 
locale: 
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252  LC_MONETARY=English_United Kingdom.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United Kingdom.1252  
attached base packages: 
[1] grid  stats  graphics grDevices utils  datasets methods base  
other attached packages: 
[1] scales_0.2.1 ggplot2_0.9.1 
loaded via a namespace (and not attached): 
[1] colorspace_1.1-1 dichromat_1.2-4 digest_0.5.2  labeling_0.1  MASS_7.3-17  memoise_0.1  
[7] munsell_0.3  plyr_1.7.1   proto_0.3-9.2  RColorBrewer_1.0-5 reshape2_1.2.1  stringr_0.6  
[13] tools_2.15.0 
+4

你可以說你正在使用什麼版本的R和ggplot2?第二個情節在0.9.1中爲我創造了一個傳奇。 – joran

+0

感謝您的回覆。我有R版本2.15.0(2012-03-30)和ggplot2_0.9.1。當我在第二個繪圖(p2)中設置alpha = I(1.0)時,我會看到出現顏色的圖例。爲了生成繪圖,我只是輸入p​​2或使用打印(p2)。 – chm

+0

呵呵。那麼,我很抱歉,但我無法重現這一點。一切似乎都適合我。 – joran

回答

0

我終於能夠重現您所看到的,但只在非常特定的情況下(而且偶然偶然發現我偶然發現它)。鑑於這種情況,我很確定在Windows上(或者更確切地說,使用Windows設備驅動程序)是必要的。

從問題使用tmpp1p2

dev.new() 
p1 
p2 

dev.new()很重要,這樣你開始一個新的窗口(因爲事情之後變成損壞)。這些命令給出適當的圖表(不要對圖表窗口做任何事情)。現在,如果您在此處「滾動」(歷史 - >上一個或下一個)或調整窗口大小,則圖例框中不會繪製任何內容。在此之前,可以保存並獲得正確的傳說。完成後,保存(文件 - >另存爲...),圖例 框爲空。如果您使用「滾動」選項(我使用鼠標滾輪獲得它,反覆向下滾動,因爲默認情況下我沒有錄製,因此上一個和下一個選項變灰),我(最終)得到以下

Error: VECTOR_ELT() can only be applied to a 'list', not a 'character' 

可以重複若干次之前,我最終得到:在控制檯上

Error: REAL() can only be applied to a 'numeric', not a 'character' 

一種解決方法是使用ggsave。由於這會創建一個新設備,因此您不必擔心Windows設備進入某種損壞狀態。

ggsave("tmp.jpg", p2) 

我認爲我看到的行爲是Windows圖形設備中的錯誤。

+0

非常感謝Brian的挖掘。我以爲我失去了情節(沒有雙關語!)。 – chm