我有两个具有不同观察值的不同数据集。我想在同一张图上绘制两个箱形图,以便进行比较。我可以绘制一个箱线图,但是如果没有它们的并排,很难发现任何差异。
我有一些虚假数据。
Group A
V1 V2 V3 V4 V5
6.5 2 11 0.5 6
7 1 8 0.34 8
5.4 4 7.8 0.45 5
3.4 6 9.1 0.72 5
Group B
V1 V2 V3 V4 V5
5.0 5 9 0.4 7
2 7 5.2 0.69 5
3.2 2 2.9 0.79 2
6.8 9 6.5 0.43 6
4.7 3 3.8 0.49 4
5.5 4 7.4 0.94 3
我不知道如何绘制图形,所以没有示例。我会尽力描述情节。我想在同一张图上为A组和B组绘制变量1。因此,在一张图中,我将有一个A组的箱线图,而另一个B组的箱线图填充了来自V1的数据。因此,两个箱形图将并排放置。使用5个变量,我将拥有5个图,每个图并排放置2个箱型图。如果我不清楚,请告诉我。谢谢。
最佳答案
ggplot
与“长格式”数据(例如,值,变量和组中的每列都有一个列)一起使用时效果最佳。您可以按以下方式重新排列数据:
A <- read.table(text='V1 V2 V3 V4 V5
6.5 2 11 0.5 6
7 1 8 0.34 8
5.4 4 7.8 0.45 5
3.4 6 9.1 0.72 5', header=TRUE)
B <- read.table(text='V1 V2 V3 V4 V5
5.0 5 9 0.4 7
2 7 5.2 0.69 5
3.2 2 2.9 0.79 2
6.8 9 6.5 0.43 6
4.7 3 3.8 0.49 4
5.5 4 7.4 0.94 3', header=TRUE)
d <- rbind(cbind(stack(A), group='A'), cbind(stack(B), group='B'))
前几行如下所示:
head(d)
## values ind group
## 1 6.5 V1 A
## 2 7.0 V1 A
## 3 5.4 V1 A
## 4 3.4 V1 A
## 5 2.0 V2 A
## 6 1.0 V2 A
现在我们可以像这样绘制:
library(ggplot2)
ggplot(d, aes(group, values)) +
geom_boxplot() +
facet_wrap(~ind, scales='free_y')