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

时间:2012-09-14 15:21:06

标签: 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

现在,我想创建一个图表,显示所有重复的每个路由的每个路由的框图。因此,例如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)

等等。我正在使用ggplot2,我想知道是否每次都需要创建一个boxplot并尝试将它们添加到一个或者是否有一种聪明的方法来执行此操作?

提前致谢!  微米。

1 个答案:

答案 0 :(得分: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))

enter image description here

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

print(ggplot(data, aes(repetition, energy.level)) + geom_boxplot() + facet_grid(route ~ packet))

但请注意,由于您有99个数据包,因此最终 99个图表,所以您可能想尝试不同的方法。