使用R(ggplot)绘制2D箱线图

5

我已经按照两个参数对数据进行了分组:

set.seed(1)
dat <- data.frame( xx=sample(10,9),
                   yy=sample(20,9),
                   group=c('A','B', 'C')  )

我可以为每个维度绘制箱线图:
ggplot(dat, aes(x=group, y=yy, fill=group)) + geom_boxplot() 
ggplot(dat, aes(x=group, y=xx, fill=group)) + geom_boxplot() + coord_flip()

现在我想将这些数据结合起来,并绘制反映两个变量数据的箱线图,类似于这样: (此图是手动制作的图形编辑器)

有没有一种简单的方法来绘制这种类型的箱线图?

1个回答

1
那不是一个好的表达方式。它可能会非常令人困惑。通常这些数据是这样表示的。
datPlot <- melt(dat)
ggplot(datPlot, aes(x=group, y=value, fill=variable)) + geom_boxplot() 

enter image description here

如果两个变量的范围非常不同,您可以尝试使用分面。

ggplot(datPlot, aes(x=group, y=value, fill=group)) + geom_boxplot()
 +facet_wrap(~variable,scale="free_y")

enter image description here

或者这个。
ggplot(dat, aes(x=xx, y=yy, color=group)) + geom_point(size=3) 

enter image description here


1
在您的第一个表示中,您假设x和y具有相同的比例尺,但这通常不是这种情况(我的错,我应该在我的示例中包含这样的内容 - 像 yy=sample(2e5,9) 这样的东西)。您的第二个表示仅仅是散点图,也就是说我们完全丧失了箱线图的所有优势... - Vasily A
那么我猜唯一的方法就是预先计算两个变量的分位数,然后使用geom_polygon绘图。我会尝试并回来。 - Koundy
1
有双变量的箱线图扩展,可以参考这个cross validated thread - Andy W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接