boxplot因子的问题

时间:2012-11-19 23:58:35

标签: r ggplot2 boxplot

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

我正在使用以下代码:

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

2 个答案:

答案 0 :(得分:3)

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

尝试

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)。

答案 1 :(得分:0)

+1到@PeterEllis。请注意,您可以比他的建议更简单:

boxplot(samp~dist)

enter image description here