我试图在直方图中绘制测试和训练数据集的分布,发现有些奇怪:
背景: 我有一个包含50行的测试集和一个包含100行的训练集,每组都具有相同的列结构。
我通常会像这样绘制数据:
plot2 <- ggplot(data=Donald_1) +
geom_histogram(aes_string(x = "Alter", y = "..count..", fill = "Group"),
bins=20, alpha=0.7)
这将导致如下所示的右侧直方图。然后,我想知道该测试的计数可能比训练的计数高,因为测试集只有50行而不是100行。看来测试条显示了左侧图的测试条和训练条的总和。 / p>
然后我尝试了:
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)
其结果如下图所示,对我来说更有意义。
我现在想知道,为什么第一次尝试的结果与第二次尝试的结果不同。我在这里想念明显的东西吗?
答案 0 :(得分:1)
在数据框中,您具有“组”列,该列代表值“训练”和“测试”。 ggplot理解您是用两个组代表一个直方图。 您的第二个图表示同一网格上的两个不同的直方图,透明度(alpha)使它看起来像实际的样子。
此外,也许您会喜欢这个:
plot3 <- ggplot(data=Donald_1) +
geom_histogram(aes_string(x = "Alter", y = "..count..", fill = "Group"),
bins=20, alpha=0.7, position="dodge")