如何在一个图中绘制"多箱图"?

6 r ggplot2 boxplot

我有以下格式的数据:

  # repetition, packet, route, energy level
  1, 1, 1, 10.0
  1, 1, 2, 12.3
  1, 1, 3, 13.8
  1, 2, 1, 9.2
  1, 2, 2, 10.1
  1, 2, 3, 11.2
  ...
  50,99,3, 0.01
Run Code Online (Sandbox Code Playgroud)

现在,我想创建一个图表,显示所有重复的每个路由的每个路由的框图.因此,例如x轴将描绘分组而y轴将描绘能量水平.x轴上的第一个刻度将显示三个箱形图,其中包含三个子集的数据

  subset(data, data$packet == 1 & data$route == 1)
  subset(data, data$packet == 1 & data$route == 2)
  subset(data, data$packet == 1 & data$route == 3)
Run Code Online (Sandbox Code Playgroud)

等等.我使用GGPLOT2和或我想知道如果我不得不每次创建一个箱线图,并尝试将其添加到一个,如果有一个聪明的办法来做到这一点?

提前致谢!M.

Dav*_*son 8

如果您正在使用ggplot2,您将能够很好地完成这项工作facet_wrap,这可以创建彼此相邻的多个箱图.例如:

library(ggplot2)
mydata = data.frame(x=as.factor(rep(1:2, 5, each=5)), y=rnorm(50),
        division=rep(letters[1:5], each=10))

print(ggplot(mydata, aes(x, y)) + geom_boxplot() + facet_wrap(~division))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

对于您的代码,您看起来可能实际上想要除以两个变量(它有点不清楚).如果你想按路线划分它,然后按包(你的例子似乎暗示),你可以使用facet_grid:

print(ggplot(data, aes(repetition, energy.level)) + geom_boxplot() + facet_grid(route ~ packet))
Run Code Online (Sandbox Code Playgroud)

但请注意,由于您有99个数据包,因此最终会有99 个图形宽,因此您可能希望尝试不同的方法.