使用ggplot2的stat_function绘制泊松分布图

时间:2014-12-25 05:50:32

标签: r ggplot2

我想使用ggplot2绘制离散概率分布(如泊松分布)。

我能够在不使用像这样的ggplot2的情况下绘制它。

plot( dpois( x=0:20, lambda=1 ), type="b")

enter image description here

并且,我能够使用像这样的ggplot2绘制连续概率分布。

ggplot(data.frame(x=c(-10,10)), aes(x)) + stat_function(fun=dnorm, args=list(0, 1))

enter image description here

我尝试的代码是:

ggplot(data.frame(x=c(0:10)), aes(x)) + stat_function(geom="point", fun=dpois, args=list(1))

enter image description here

在ggplot2中,如何绘制离散概率分布,如第一个?

2 个答案:

答案 0 :(得分:13)

ggplot函数不知道你的pdf支持的位置。如果要绘制离散的pdf,则需要自己计算点数。通常将这些绘制为条形图更有意义,因为在离散值之间插入概率是不合适的。

ggplot(transform(data.frame(x=c(0:10)), y=dpois(x, 1)), aes(x, y)) + 
    geom_bar(stat="identity")

enter image description here

答案 1 :(得分:7)

stat_function将尝试使用默认n=101点在边界值之间进行插值。谨慎分布的问题是x必须达到整数值。尝试在示例中指定n = 11:

ggplot(data.frame(x=c(0:10)), aes(x)) +
    stat_function(geom="point", n=11, fun=dpois, args=list(1))

enter image description here

更简单,更直接的是在这种情况下使用geom_point

ggplot(data.frame(x=c(0:10)), aes(x)) +
    geom_point(aes(y=dpois(x, 1)), colour="red")

enter image description here