如何从(可变长度)向量列表中制作箱图

时间:2017-05-26 11:48:58

标签: r boxplot

我有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

1 个答案:

答案 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基于数字,并根据原始向量索引添加rowgrp列(每四个是使用模数的下一个组),method初始化plot,ggplot添加一个盒子图层,从表格中获取数据。

样本数据的输出(由于异常值而略显丑陋)。

output for the sample data