我有40个数字向量的list
。我的问题是如何为每个矢量绘制一个箱形图,并将每4个箱形图分组到x轴上的单个位置。
即x轴将有10个刻度,每个刻度有4个箱形图。另外,我想按照他们在小组中的顺序为箱形图着色。
以下是一小部分数据样本(两组):
list(
c(1, 3, 3, 4, 2, 1, 1, 2),
c(2, 1, 1, 1, 1, 2, 33, 12),
c(5, 3, 2, 1, 2, 3, 4, 5),
c(4, 4, 2, 2, 2, 1, 3, 4),
c(2, 2, 21, 1, 4),
c(3, 3, 1, 2, 3),
c(2, 2, 3, 1, 1),
c(6, 5, 3, 4, 5)) ->
ll
答案 0 :(得分:1)
要从数字向量列表创建箱图并将其分组为四元组,您需要执行以下操作:
library(tidyverse)
# ll is the list of vectors
map_df(ll,
function(x) data.frame(val = x),
.id = "row") %>%
mutate(
row = as.numeric(row) - 1,
grp = floor(row / 4) %>% as.factor,
method = (row %% 4) %>% as.factor) %>%
ggplot() +
geom_boxplot(aes(grp, val, fill=method), position = "dodge")
简而言之:map_df
将每个向量转换为包含一列的数据框,然后对它们进行行绑定,添加一个名为row
的列,用于标识原始行的来源,{{ 1}}将mutate
转换为0基于数字,并根据原始向量索引添加row
和grp
列(每四个是使用模数的下一个组),method
初始化plot,ggplot
添加一个盒子图层,从表格中获取数据。
样本数据的输出(由于异常值而略显丑陋)。