1

我在尝试按因素制作并排箱线图时遇到问题。我已经阅读了几个示例,但由于某种原因,我的绘图无法正确显示。我认为它试图为每个值绘制一个箱线图,即使我将它指定为一个因素。

我正在使用以下代码:

samp.norm = rnorm(1000,0,1)
samp.exp  = rexp(1000,1)
samp.unif = runif(1000)
samp = c(samp.norm,samp.exp,samp.unif)
dist = c( rep("norm",1000), rep("exp",1000), rep("unif",1000) )
DATA = as.data.frame(cbind(samp,dist))
DATA$dist= as.factor(DATA$dist)
p = ggplot(DATA, aes(x=factor(DATA$dist), y = DATA$samp)) + geom_boxplot()
p
4

2 回答 2

3

问题是您使用cbind()强制生成的对象,以便 DATA$samp 是一个因素而不是数字。从 cbind 产生的列需要具有相同的类,这意味着它们在这种情况下用于“字符”中最低的常见恶魔类。这正是发明数据帧来解决的问题。

尝试

DATA=data.frame(samp,dist) 

而不是你所拥有的更复杂的线路,这一切都应该工作。

顺便说一句,你也应该有更简单的

p=ggplot(DATA, aes(x=dist, y = samp)) + geom_boxplot()

而不是你的倒数第二行。一旦你指定了 ggplot() 你正在使用 DATA,你不需要告诉它在哪里可以找到 dist 和 samp 即不需要 DATA$dist,只需要 dist。此外,由于 dist 已经是一个因素,您不需要指定 factor(dist)。

于 2012-11-20T01:39:50.497 回答
0

+1 给@PeterEllis。请注意,您还可以获得比他的建议更简单的方法:

boxplot(samp~dist)

在此处输入图像描述

于 2012-11-20T02:25:55.453 回答