如何将列表传递给ggplot2?

Lia*_*nho 8 r ggplot2

我正在尝试在ggplot2上做一个值列表的盒子图,但问题是它不知道如何处理列表,我该怎么办?

例如:

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
Run Code Online (Sandbox Code Playgroud)

如果我k作为一个参数传递boxplot()它将完美地处理它并产生一个很好的(不太好的...... hehehe)boxplot,其中所有值的范围为Y轴,列表索引(每个元素)为X -轴.

我应该如何使用ggplot2达到完全相同的效果?我认为数据帧或矩阵不是一种选择,因为向量的长度不同.

谢谢

jor*_*ran 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如评论中指出的那样,melt实现与手动重塑相同的结果,并且更加简单.我想我想让事情变得困难.