如何在一个图中绘制多个泊松分布

时间:2019-05-06 13:09:00

标签: r ggplot2 plot

我想绘制多个泊松(具有不同的lambda(1:10))

我发现了以下绘制图的功能

plot_pois = function(lambda = 5)
{
  plot(0:20, dpois( x=0:20, lambda=lambda ), xlim=c(-2,20))
  normden <- function(x){dnorm(x, mean= lambda, sd=sqrt(lambda))}
  curve(normden, from=-4, to=20, add=TRUE, col=lambda)
}
plot.new()
plot_pois(2)

enter image description here

但是我不能在上面绘制另一个泊松。我试图将plot更改为pointslines,但这完全改变了情节。我还想为不同的lambda值添加一个包含不同颜色的图例。

如果我可以使用ggplot进行绘制,那将是一个更好的选择。

2 个答案:

答案 0 :(得分:3)

在ggplot2中,您可以使用lapply遍历不同的lambda:

library(ggplot2)
lambdas <- c(5, 2)
ggplot(data = data.frame(x = 0:20)) +
  lapply(lambdas, function(l) geom_point(aes(x = x, y = dpois(x, lambda = l), col = factor(l)))) +
  lapply(lambdas, function(l) stat_function(fun = dnorm, args = list(mean = l, sd = sqrt(l)), 
                                aes(x = x, col = factor(l))))

然后可以像往常一样在ggplot2中自定义轴的标题和限制,图例标题等。

答案 1 :(得分:3)

另一种可能的------------------------------- | ID | HAS1 | HAS2 | ------------------------------- | 12 | true | false | _______________________________ | 74 | true | true | ------------------------------- 解决方案:

tidyverse

reprex package(v0.2.1)于2019-05-06创建