我的数据格式如下:
# 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并尝试将它们添加到一个或者是否有一种聪明的方法来执行此操作?
提前致谢! 微米。
答案 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))
对于您的代码,您看起来可能实际上想要除以两个变量(它有点不清楚)。如果你想按路线划分,然后按包裹划分(如你的例子所示),你可以使用facet_grid
:
print(ggplot(data, aes(repetition, energy.level)) + geom_boxplot() + facet_grid(route ~ packet))
但请注意,由于您有99个数据包,因此最终 99个图表,所以您可能想尝试不同的方法。