R 使用ggplot2绘制密度图

R 使用ggplot2绘制密度图,r,ggplot2,rstudio,R,Ggplot2,Rstudio,我创建了一个垃圾模拟器并生成了一些数据。我看的是在掷骰子的数量下胜负的概率。这是我的数据的前25个结果,其余的看起来完全一样(只有50000行长): 下面是我用数据创建密度图的代码: ggplot(df, aes(x=rollCount, fill = winOrLoss)) + #geom_histogram(binwidth = 1, position = "identity", alpha=0.6) + scale_y_sqrt() + scale_x_cont

我创建了一个垃圾模拟器并生成了一些数据。我看的是在掷骰子的数量下胜负的概率。这是我的数据的前25个结果,其余的看起来完全一样(只有50000行长):

下面是我用数据创建密度图的代码:

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你有一个离散分布<代码>统计密度
假设连续分布。改用
geom_直方图

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..))
set.seed(42)

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