我正在尝试在ggplot2上绘制一个值列表的盒子图,但问题是它不知道如何处理列表,我该怎么办?
E.g:
k <- list(c(1,2,3,4,5),c(1,2,3,4),c(1,3,6,8,14),c(1,3,7,8,10,37))
k
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 1 2 3 4
[[3]]
[1] 1 3 6 8 14
[[4]]
[1] 1 3 7 8 10 37
如果我将k
作为参数传递给boxplot()
,它将完美地处理它并产生一个漂亮的(不太好的...... hehehe)箱图,其中所有值的范围都为Y -axis和列表索引(每个元素)作为X轴。
我应该如何使用ggplot2达到完全相同的效果?我认为数据帧或矩阵不是一种选择,因为向量的长度不同。
由于
答案 0 :(得分:9)
答案是你没有。 ggplot2
旨在处理数据框,尤其是长格式数据框。这意味着您需要将数据作为一个高向量,并具有分组因子:
d <- data.frame(x = unlist(k),
grp = rep(letters[1:length(k)],times = sapply(k,length)))
ggplot(d,aes(x = grp, y = x)) + geom_boxplot()
正如评论中指出的那样,melt
实现了与手动重塑相同的结果,并且更加简单。我想我想让事情变得困难。