使用ggplot2的密度图

时间:2015-02-18 15:51:26

标签: r ggplot2 rstudio

我创建了一个craps模拟器并生成了一些数据。考虑到滚动次数,我正在考虑胜利与损失的概率。这是我的数据的前25个结果,其余的看起来完全相同(只有50,000行):

enter image description here

以下是我用来创建包含数据的密度图的代码:

ggplot(df, aes(x=rollCount, fill = winOrLoss)) + 
    #geom_histogram(binwidth = 1, position = "identity", alpha=0.6) +
    scale_y_sqrt() +
    scale_x_continuous(limits=c(1, 32), breaks=1:32) +
    labs(title="Roll Count Histogram", x="Roll Count", y="Count") +
    geom_hline(aes(yintercept=0)) +
    geom_density()

以及结果图:

enter image description here

我希望密度图看起来像这样:

enter image description here

我的主要问题是如何让它变得更加流畅而不是目前的上下变化。在将数据放入图表之前,是否需要对数据执行某些操作?我只是将其放入包含df <- data.frame(rollCount, winOrLoss)的数据框中,让ggplot处理其余部分。

1 个答案:

答案 0 :(得分:1)

你有一个离散的分布。 stat_density假设持续分发。请改用geom_histogram

set.seed(42)
rollCount <- sample(1:20, 50, TRUE, prob = 20:1)
winOrLoss <- sample(c("W", "L"), 50, TRUE)
DF <- data.frame(rollCount, winOrLoss)

library(ggplot2)
ggplot(DF, aes(x=rollCount, fill = winOrLoss)) + 
  geom_histogram(binwidth = 1, position = "identity", alpha=0.6, 
                 aes(y = ..density..))

resulting plot