Наложение графика нормальной плотности поверх данных ggplot2 - PullRequest
0 голосов
/ 26 июня 2019

Я строю кривую плотности, используя ggplot2.После того, как я нанесу данные, я бы хотел добавить график нормальной плотности прямо поверх него с заливкой.

В настоящее время я использую rnorm () для создания данных, но это неэффективно и будет работатьплохо для небольших наборов данных.

library(tidyverse)

#my data that I want to plot
my.data = rnorm(1000, 3, 10)

#create the normal density plot to overlay the data
overlay.normal = rnorm(1000, 0, 5)

all = tibble(my.data = my.data, overlay.normal = overlay.normal)
all = melt(all)
ggplot(all, aes(value, fill = variable))+geom_density()

enter image description here

Цель состоит в том, чтобы построить мои данные и наложить поверх них нормальное распределение (сзаполнить).Что-то вроде:

ggplot(my.data)+geom_density()+add_normal_distribution(mean = 0, sd = 5, fill = "red)

Ответы [ 2 ]

2 голосов
/ 26 июня 2019

Я нашел решение, смешав ответ Джона и ответ Хэдли.

my.data = rnorm(1000, 3, 10)

ggplot(my.data %>% enframe(), aes(value)) +
  geom_density(fill = "mediumseagreen", alpha = 0.1) +
  geom_area(stat = "function", fun = function(x) dnorm(x, mean = 0, sd = 5), fill = "red", alpha = .5) 

enter image description here

2 голосов
/ 26 июня 2019

Вот подход, использующий stat_function, чтобы определить нормальную кривую и нарисовать ее в вызове ggplot.

ggplot(my.data %>% enframe(), aes(value)) +
  geom_density(fill = "mediumseagreen", alpha = 0.1) +
  stat_function(fun = function(x) dnorm(x, mean = 0, sd = 5),
                color = "red", linetype = "dotted", size = 1)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...