2015-12-24 2 views
1

Я борюсь с заданием, которое мне дано. Мы должны сделать сгруппированную гистограмму с наложенным на нее нормальным соответствием. Теперь мне удалось получить сгруппированную гистограмму в Basic R graph, Lattice и Ggplot. В Basic R-графе мне также удалось получить нормальную кривую, но в Lattice и Ggplot я, похоже, не справился с этим.Невозможно поместить нормальную кривую в сгруппированную гистограмму

Вот мой R сценарий из решеточных и Ggplot:

#Lattice: 
library(lattice) 
histogram(~SBP, data= DataSBP, breaks=10, 
      type=c("density"), 
      groups = User, panel = function(...)panel.superpose(...,panel.groups=panel.histogram, col=c("navy","maroon3"),alpha=0.4), 
      auto.key=list(columns=2,rectangles=FALSE, col=c("navy","maroon3"))) 
panel.mathdensity(dmath=dnorm, col="black", args=list(mean=mean(x, na.rm = TRUE), sd=sd(x, na.rm = TRUE))) 

Когда я пытаюсь команда "panel.mathdensity" ничего не происходит.

# Ggplot 
library(ggplot2) 
ggplot(DataSBP, aes(x=SBP)) + geom_histogram(aes(y=..density.., x=SBP, colour=User, fill=User),alpha=0.5, binwidth = 5, position="identity") 
+ stat_function(fun = dnorm, args = list(mean = SBP.mean, sd = SBP.sd)) 

Если я пытаюсь команду stat_function, я всегда получаю ошибку «SBP.mean» не может быть найден, что, вероятно, означает, что я должен определить SBP.mean, но как?

Мои данные, как это:

User SBP  
No 102  
No 116  
No 106  
...  
Yes 117  
Yes 127  
Yes 111  
... 

И мои графики выглядеть следующим образом:

Graph from Lattice

Graph form Ggplot

ответ

4

Были ли вы ищете что-то вроде этого? Я не имею доступа к вашему набору данных, так что я использовал набор данных радужки

library(dplyr); library(ggplot2) 

meanSe <- iris %>% 
    filter(Species == "setosa") %>% 
    summarise(means = mean(Sepal.Length), sd=sd(Sepal.Length)) 
# 
meanVe <- iris %>% 
    filter(Species == "versicolor") %>% 
    summarise(means = mean(Sepal.Length), sd=sd(Sepal.Length)) 
# 
meanVi <- iris %>% 
    filter(Species == "virginica") %>% 
    summarise(means = mean(Sepal.Length), sd=sd(Sepal.Length)) 
# 
ggplot(iris, aes(x=Sepal.Length, color=Species, fill=Species)) + 
    geom_histogram(aes(y=..density..), position="identity", binwidth=.5) + 
    stat_function(fun = dnorm, color="red", args=list(mean=meanSe$means, sd=meanSe$sd)) + 
    stat_function(fun = dnorm, color="green", args=list(mean=meanVe$means, sd=meanVe$sd)) + 
    stat_function(fun = dnorm, color="blue", args=list(mean=meanVi$means, sd=meanVi$sd)) + 
    theme_bw() 

дать этот enter image description here

+0

Спасибо! Я искал несколько дней, чтобы найти его! Теперь мне нужно найти правильный код для участка решетки :) –