我想绘制计数的垂直箱图,并将计数显示为点,覆盖在箱线图上。因为它们是离散值,所以会有多个具有相同值的点。为了在ggplot2中显示数据,我可以使用geom_jitter()来传播数据并获得稍微好一点的印象,但是抖动会使值(垂直分量)上升,而水平扩展的随机性意味着如果抖动高度是设置为0,重叠点的可能性很高。
有没有办法将所有具有相同值的点均匀地和水平地展开?有点像这样:
以下是一些示例数据:
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))
答案 0 :(得分: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))