2014-03-06 167 views
3

我想繪製垂直方塊圖的計數,並將計數顯示爲點,疊加在箱形圖上。因爲它們是離散值,所以會有多個具有相同值的點。爲了在ggplot2中顯示數據,我可以使用geom_jitter()來傳播數據並獲得稍微好的印象,但抖動將數值(垂直分量)擰緊,並且水平擴展的隨機性意味着如果抖動高度是設置爲0,重疊點的可能性很高。在ggplot2中水平均勻分佈點

有沒有辦法將所有具有相同值的點均勻分佈並水平分佈?沿此線的東西:

enter image description here

下面是一些示例數據:

wine_votes <- melt(list(a=c(7,7,7,8,8,7,7,8,4,7,7,6,8,6), 
         b=c(5,8,6,4,3,4,4,9,5,8,4,5,4), 
         c=c(7.5,8,5,8,6,8,5,6,6.5,7,5,5,6), 
         d=c(4,4,5,5,6,8,5,8,5,6,3,6,5), 
         e=c(7,4,6,7,4,6,7,5,6.5,8.5,8,5) 
         )) 
names(wine_votes) <- c('vote', 'option') 

# Example plot with jitter: 
ggplot(wine_votes, aes(x=blend, y=vote)) + 
    geom_boxplot() + geom_jitter(position=position_jitter(height=0, width=0.2)) + 
    scale_y_continuous(breaks=seq(0,10,2)) 

enter image description here

+1

這個問題沒有一個可重複的數據集,所以它真的只對你有用,而不是未來的搜索。你在['geom_dotplot']之後(http://docs.ggplot2.org/current/geom_dotplot.html)。 –

+0

@TylerRinker:見編輯 – naught101

+0

你可以擺脫'geom_jitter'並添加如下內容:'geom_dotplot(binaxis =「y」,stackdir =「center」,aes(fill = option))'? –

回答

7

雖然這是不完全的形象是什麼樣子,可以調整到到達那裏。 geom_dotplot(版本0.9.0上下的,我認爲加)做到這一點:

ggplot(wine_votes, aes(x=option, y=vote)) + 
    geom_boxplot() + 
    scale_y_continuous(breaks=seq(0,10,2)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", aes(fill=option)) 

enter image description here

+0

這是一個很酷的工具。我發現默認尺寸太大了。傳遞給'geom_dotplot()'的'dotsize = 0.5'參數修復了這個問題。謝謝! – naught101