将正态分布绘制到现有图中

时间:2016-11-29 14:53:16

标签: r ggplot2 normal-distribution

我有这个ggplot

var arr = [];
var obj = { a: 'A'};
var objstring = JSON.stringify(obj);
for(var i = 0; i < 2; i++) {
    var obj = JSON.parse(objstring);
    obj.c = 'C' + i;
    arr.push(obj);
}

我希望使用相同的平均值ggplot(data = ph, aes(x = index1)) + geom_density() 和标准偏差(= 2.71)添加正态分布。

我用:

创建了正态分布
(= 0.61)

但现在我不知道如何将它添加到我现有的情节中。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

ggplot2对此类事件有stat_function(),但我的解决方案以清晰的名义采用了更加手动的方法。您没有提供数据示例,但您应该能够将mtcars$mpg替换为您想要的任何列或向量。

library(tidyverse) # Gives us ggplot2 and lots of other goodies

# Choose your variable of interest
dta <- mtcars$mpg %>%
  as_tibble() # USing a tibble instead of a dataframe makes the data more predictable

# Generate normal data based on dta
norm_data <-
  rnorm(
    n = length(dta),
    mean = mean(dta$value),
    sd = sd(dta$value)
  )

# Create the plot
ggplot(dta, aes(x = value)) +
  geom_density() +
  geom_density(aes(norm_data), color = "darkgray", linetype = "dashed") +
  theme_classic()