R ggplot直方图组显示两组的总和

R ggplot Histogram group shows sum of two groups

我试图在直方图中绘制我的测试和训练数据集的分布,发现了一些奇怪的东西:

背景: 我有一个包含 50 行的测试集和一个包含 100 行的训练集,每行都具有相同的列结构。

我通常会这样绘制数据:

plot2 <- ggplot(data=Donald_1) + 
  geom_histogram(aes_string(x = "Alter", y = "..count..", fill = "Group"),
                 bins=20, alpha=0.7)

这会产生如下所示的右侧直方图。然后我想知道为什么测试比训练有更高的计数,因为测试集只有 50 行而不是 100 行。而且测试条似乎显示了左图中测试和训练条的总和。

然后我尝试了:

plot1 <- ggplot() +
  geom_histogram(data=Donald_1 %>% filter(Group == "Training"),
                 aes_string(x="Alter", y="..count..", fill = "Group"),
                 bins=20, alpha=0.7) +
  geom_histogram(data=Donald_1 %>% filter(Group == "Test"),  
                 aes_string(x="Alter", y="..count..", fill="Group"),
                  bins=20, alpha=0.7)

这导致了下面显示的左图,结果对我来说更有意义。

我现在想知道,为什么第一次尝试不会产生与第二次尝试相同的情节。我在这里遗漏了什么明显的东西吗?

在您的数据框中,您有 "Group" 列,它代表训练值和测试值。 ggplot 知道您正在用两组表示一个直方图。 你的第二个图代表同一网格上的两个不同的直方图,透明度 (alpha) 使它看起来像它实际的样子。

此外,也许你会更喜欢这个:

plot3 <- ggplot(data=Donald_1) + 
  geom_histogram(aes_string(x = "Alter", y = "..count..", fill = "Group"),
                 bins=20, alpha=0.7, position="dodge")