3

背景:我有一些数据,我希望:

  1. 绘制它们的直方图
  2. 添加核密度
  3. 添加“理论密度”
  4. 添加图例以区分 2. 和 3。

考虑:

X <- rnorm(1000,0,1)
Y <- (X^2-1)/2
ggplot(as.data.frame(Y), aes(x=Y)) + 
    geom_histogram(aes(y=..density..),      
                   binwidth=.2,
                   colour="black", fill="white") +
    geom_density(alpha=.2, fill="#FF6666") 

在此处输入图像描述

这完成了 1. 和 2.,但我怎样才能实现 3. 和 4.?我写了我想绘制的函数:

myfunc <- function(x) {
    2*exp(-x-0.5)/(sqrt(2*x+1)*sqrt(2*pi))
}

欢迎任何其他评论/批评(我正在学习)

4

1 回答 1

4

您的自定义函数在该域上表现不佳,因此为了说明目的,我替换了另一个简单的函数。

#Dummy data set for the legend
dat <- data.frame(x = rep(NA_integer_,2),
                  y = rep(NA_integer_,2),
                  grp = c('Theoretical','Estimated'))
ggplot(as.data.frame(Y), aes(x=Y)) + 
    geom_histogram(aes(y=..density..),      
                   binwidth=.2,
                   colour="black", fill="white") +
    geom_density(alpha=.2, fill="#FF6666",color = '#FF6666') + 
    stat_function(fun = function(x) exp(-x),colour = "blue") + 
    geom_point(data = dat,aes(x = x,y = y,color = grp)) + 
    scale_color_manual(name = "",values = c('#FF6666','blue'))

在此处输入图像描述

我对颜色进行了一些调整,但是您可以根据需要对其进行调整。可能有一种更简洁的方式来制作图例,但“带有 NA 和分组变量的数据框”是我处理这类事情的标准方法。

于 2012-10-18T13:58:01.907 回答