2010-08-27 47 views
13

我正在完成一篇論文的圖表,並決定(after a discussion on stats.stackoverflow),爲了傳輸儘可能多的信息,創建下面的圖表,在前景中顯示手段和背景中的原始數據: alt text如何避免使用基本圖的重疊繪圖(對於點)?

但是,仍然存在一個問題,那就是重疊繪圖。例如,標記的點看起來像是反映了一個數據點,但實際上有5個數據點在該位置具有相同的值。
因此,我想知道是否有一種方法可以使用points作爲函數來處理base graph中的重疊繪圖。
如果例如,各點越暗,或厚或,這將是理想的...

做手工是不是一個選項(太多的圖形,並指出這樣的)。此外,ggplot2也不是我想要學習處理這個單一問題的原因(其中一個原因是我傾向於喜歡雙軸不在ggplot2中提供)。


更新:我寫自動創建上述圖表,並通過添加垂直或水平抖動避免overplotting的函數(或兩者):check it out!

此功能現在可作爲raw.means.plotraw.means.plot2plotrix包(在CRAN上)。

回答

14

標準方法是在繪圖之前向數據添加一些噪音。 R有一個函數jitter(),它正是這樣做的。您可以使用它將必要的噪音添加到您的情節中的座標。例如:

X <- rep(1:10,10) 
Z <- as.factor(sample(letters[1:10],100,replace=T)) 

plot(jitter(as.numeric(Z),factor=0.2),X,xaxt="n") 
axis(1,at=1:10,labels=levels(Z)) 
+0

我通過編寫一個小函數來擴展這種方法,該函數只是將抖動(即均勻噪聲)添加到副本中。現在我很開心。 – Henrik 2010-08-27 13:48:06

+1

使點更小。 – John 2010-08-27 16:48:13

8

此外抖動,另一個很好的方法是α混合,其可以獲取(在圖形裝置supporing它)作爲第四顏色參數。我在this SO question中提供了兩個直方圖的「重疊繪圖」示例。

+0

從來沒有想過在這種情況下使用alpha混合,好主意。您可以將兩者結合起來,這樣您仍可以看到各個點: plot(抖動(as.numeric(Z),factor = 0.2),X,xaxt =「n」,col = rgb(0,0,0, 0.5)) – 2010-08-27 13:48:44

3

您也可以使用sunflowerplot,但在這裏很難實現。正如德克所建議的那樣,我會使用阿爾法混合。

4

顯示點數的常見問題的另一個想法是使用地毯圖(地毯功能),這沿着邊緣放置了小刻度線,可以顯示多少點貢獻(仍然使用抖動或alpha混合領帶)。這允許實際點顯示其真實值而不是抖動值,但地毯可以指示該圖的哪些部分具有更多值。

對於示例圖直接抖動或alpha混合可能是最好的,但在其他一些情況下,地毯情節可能是有用的。