【问题标题】:Density graph using ggplot2使用ggplot2的密度图
【发布时间】:2015-02-18 15:51:25
【问题描述】:

我创建了一个掷骰子模拟器并生成了一些数据。考虑到掷骰数,我正在查看获胜与失败的概率。这是我数据的前 25 个结果,其余看起来完全一样(只有 50,000 行长):

这是我用来用我的数据创建密度图的代码:

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

这是结果图:

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

我的主要问题是如何让它变得更加平滑,而不是目前看起来的上下起伏。在将数据放入图表之前,我是否需要对数据做一些事情?我只是将它放入带有df <- data.frame(rollCount, winOrLoss) 的数据框中,然后让ggplot 处理其余的事情。

【问题讨论】:

  • 您需要调整内核密度窗口的宽度。请参阅adjust 参数here 的示例。默认值不适合您的规模,因为它是离散的,而不是连续的。
  • @tonytonov 这正是我所缺少的,非常感谢!

标签: r ggplot2 rstudio


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

【讨论】:

    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多