我有两个具有不同观察值的不同数据集。我想在同一张图上绘制两个箱形图,以便进行比较。我可以绘制一个箱线图,但是如果没有它们的并排,很难发现任何差异。

我有一些虚假数据。

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')

r - 同一张图上的两个箱形图-LMLPHP

10-06 07:14