2014-04-28 98 views
2

比方說,我有這樣的data.frame聚類點散點圖中

df <- data.frame(x = rep(1, 20), y = runif(20, 10, 20)) 

,我想繪製df$ydf$x

由於x值是常數,所以具有相同或接近y值的點將在一個簡單的散點圖中彼此重疊,這種類型隱藏了這種y值點的密度。這種情況的一個解決方案當然是使用小提琴劇情。

我正在尋找另一種解決方案 - 繪製點集羣而不是單個點,因此看起來會類似於泡沫圖。然而,在泡沫圖中,爲了使泡沫有意義,需要第三個維度,這在我的數據中沒有。有沒有人知道R函數/軟件包作爲輸入點(可能是一個定義的半徑),並將它們聚類並繪製它們?

+1

問題的標準「簡單」解決方案是使用「抖動」 - 爲您的數據點添加小的隨機值。 –

回答

2

查看sunflowerplot函數(以及用於計算重疊點的函數xyTable)。

您還可以使用TeachingDemos包中的my.symbols函數,結果爲xyTable以使用其他形狀(圖或示例)。

4

可以jitter x值:

plot(jitter(df$x),df$y) 
+0

謝謝。抖動絕對是另一種選擇,但如果可能的話,我仍然對羣集感興趣。我認爲集羣將具有增加劇情不那麼繁忙的附加價值。 – user1701545

3

其他標準方法(相對於抖動)是使用部分透明的顏色,以使得重疊點將會出現比「孤獨」點變暗。

De gustibus等

3

使用透明度是另一種解決方案。例如: -

ggplot(df, aes(x=x, y=y)) + 
    geom_point(alpha=0.2, size=3) 

當只有一個x值,密度圖:

ggplot(df, aes(x=y)) + 
    stat_density(geom="line") 

或小提琴的情節:

ggplot(df, aes(x=x, y=y)) + 
    geom_violin() 

也可能是顯示您的數據的選項。