【问题标题】:Plot multiple normal curves in same plot在同一图中绘制多条正态曲线
【发布时间】:2015-01-16 13:06:17
【问题描述】:

我有兴趣创建一个示例图(最好使用 ggplot),它将显示两条具有不同均值和不同标准差的正态曲线。我发现了 ggplot 的 stat_function() 参数,但不确定如何在同一个图上获得第二条曲线。

这段代码产生一条曲线:

ggplot(data.frame(x = c(-4, 4)), aes(x)) + stat_function(fun = dnorm)

关于获得第二条曲线的方法有什么建议吗?或者也许在基础包绘图中更简单?

【问题讨论】:

  • 也许这个链接有帮助*.com/questions/1376967/…
  • 在基础 R 绘图中是 3 行。我认为这是一个更简单的例子:plot(NA,xlim=c(-4,4),ylim=c(0,1));curve(dnorm(x,mean=1,sd=0.5), col="blue", add=TRUE);curve(dnorm(x,mean=0,sd=1), col="red", add=TRUE)
  • 效果很好 - 谢谢!

标签: r graphics ggplot2


【解决方案1】:

以防万一您也想在ggplot 中执行此操作(这也是 3 行...)。

ggplot(data.frame(x = c(-4, 4)), aes(x)) + 
  stat_function(fun = dnorm, args = list(mean = 0, sd = 1), col='red') +
  stat_function(fun = dnorm, args = list(mean = 1, sd = .5), col='blue')

如果您有两条以上的曲线,最好使用mapply。这使得它稍微困难一些。但对于许多功能来说,这可能是值得的。

ggplot(data.frame(x = c(-4, 4)), aes(x)) + 
  mapply(function(mean, sd, col) {
    stat_function(fun = dnorm, args = list(mean = mean, sd = sd), col = col)
  }, 
  # enter means, standard deviations and colors here
  mean = c(0, 1, .5), 
  sd = c(1, .5, 2), 
  col = c('red', 'blue', 'green')
)

【讨论】:

  • 这太棒了!如何为线条添加图例?