我使用以下命令生成带抖动的散点图:
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T))
library(lattice)
stripplot(NUMS~GRP,data=ddf, jitter.data=T)
我想在这些点上添加箱图(每组一个)。我尝试搜索,但我无法找到代码绘制所有点(而不仅仅是异常值)和抖动。我该怎么解决这个问题。谢谢你的帮助。
答案 0 :(得分:37)
这是使用基本图形的一种方式。
boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')
stripchart(NUMS ~ GRP, vertical = TRUE, data = ddf,
method = "jitter", add = TRUE, pch = 20, col = 'blue')
答案 1 :(得分:23)
要在ggplot2
中执行此操作,请尝试:
ggplot(ddf, aes(x=GRP, y=NUMS)) +
geom_boxplot(outlier.shape=NA) + #avoid plotting outliers twice
geom_jitter(position=position_jitter(width=.1, height=0))
显然你可以根据自己的喜好调整position_jitter()
的宽度和高度参数(虽然我推荐height=0
,因为高度抖动会使你的情节不准确)。
答案 2 :(得分:1)
我已经在包plotteR
中编写了一个名为spreadPoints()的R函数。可以使用以下代码将该软件包直接安装到您的R库中:
install.packages("devtools")
library("devtools")
install_github("JosephCrispell/basicPlotteR")
对于所提供的示例,我使用以下代码生成了下面的示例图。
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T))
boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')
spreadPointsMultiple(data=ddf, responseColumn="NUMS", categoriesColumn="GRP",
col="blue", plotOutliers=TRUE)
这是一个正在进行的工作(缺少输入公式很笨拙!),但是它提供了一种非随机的方法来扩展X轴上的点,该点还可以像小提琴一样用作数据摘要。如果您有兴趣,请查看来源code。
答案 3 :(得分:1)
对于lattice
解决方案:
library(lattice)
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5], 500, replace = T))
bwplot(NUMS ~ GRP, ddf, panel = function(...) {
panel.bwplot(..., pch = "|")
panel.xyplot(..., jitter.x = TRUE)})
默认的中点符号已更改为pch = "|"
行。盒子和晶须的其他属性可以通过box.umbrella
函数通过box.rectangle
和trellis.par.set()
进行调整。可以通过名为factor
的变量来调整抖动量,其中factor = 1.5
将其增加50%。