在ggplot和stat_function()中叠加对数正态密度

时间:2012-09-17 17:35:01

标签: r ggplot2

我尝试在stat_function()中通过ggplot添加一个函数,但无法弄清楚我的错误。这个例子产生了一个漂亮的情节:

data <- data.frame(x=rt(10000, df=7))

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) +
  stat_function(fun =dnorm, size=1, color='gray', args=list()) +
  opts(title="Histogram of interest rate changes") + theme_bw()

enter image description here

但是当我尝试叠加对数正常密度时,这不会按预期工作(或者我应该按预期说这不起作用;):

data <- data.frame(x=rf(10000, df1=7, df2=120))

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) +
 stat_function(fun =dnorm, size=1, color='gray', args=list(log=TRUE)) +
 opts(title="Histogram of interest rate changes") + theme_bw()

enter image description here

所以这是我希望简单的问题:我在这里做错了什么?我想这是一个非常简单的问题我只是没有看到答案 - 抱歉。

1 个答案:

答案 0 :(得分:7)

使用dlnorm,对数正态分布的密度函数:

ggplot(data=data, aes(x=x)) + geom_histogram(aes(y = ..density..)) +
  stat_function(fun = dlnorm, size=1, color='gray') +
  opts(title="Histogram of interest rate changes") + theme_bw()

enter image description here