【问题标题】:R ggplot Histogram group shows sum of two groupsR ggplot 直方图组显示两组的总和
【发布时间】:2020-08-18 22:34:55
【问题描述】:

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

背景: 我有一个包含 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)

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

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

【问题讨论】:

  • 在您的第一种方法中,该过程将自动以“堆叠”方式绘制直方图。请使用position = "identity"position = "dodge" 重试。
  • 感谢您的快速响应! position = "identity" 做到了。 !! :)

标签: r ggplot2 histogram


【解决方案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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2018-12-16
    • 2017-11-08
    • 1970-01-01
    相关资源
    最近更新 更多