2015-12-25 2 views
0

Необходимо наложить нормальную посадку на мою гистограмму. Я не использовал обычный ggplot2, но я установил: «easyGgplot2», написанный «kassambara». Мои данные составляют 250 мужчин и 250 женщин. Это то, что я есть сейчас:Нормальная подгонка в easyGgplot2, kassambara

plot <- ggplot2.histogram(data=mydata, xName='Lengte', 
         binwidth=1, bins=10, 
         scale="density", 
         groupName='Geslacht', 
         groupColors = c("dodgerblue2","deeppink"), 
         alpha=0.3, 
         #xlim=c(160,187), 
         position= "identity", 
         densityFill='NONE') 

This is what I have so far, I still need the normal fits on it...

+2

Вы можете добавить свой набор данных (используя dput()) к своему сообщению. Почему бы просто не использовать ggplot2? это может помочь вам достичь того, чего вы хотите http://stackoverflow.com/questions/34450341/cant-fit-a-normal-curve-to-a-grouped-histogram/34451821#34451821 – MLavoie

+0

Помогло ли мое решение для вас? –

+0

, честно говоря, на самом деле не нужно. Мне нужно найти его для моего сюжета (а не для обычного ggplot с функциями geom), но спасибо уже за помощь! – blondie

ответ

0

Я думаю, что вы хотите этого? Просто используя ggplot, поскольку я не знаком с easyGgplot. Эта оценка плотности:

library(ggplot2) 

# average heights in cm 
set.seed(1234) 
avgFh <- 160 
stdFh <- 6.1 
nsampF <- 250 
avgMh <- 173 
stdMh <- 7.0 
nsampM <- 250 
xmin <- 150 
xmax <- 190 

hdf <- data.frame(height = c(rnorm(nsampF, avgFh,stdFh),rnorm(nsampM,avgMh,stdMh))) 
muhat <-mean(hdf$height) 
sdhat <-sd(hdf$height) 
nsamp <- nrow(hdf) 

# Plot Density 
denarg <- list(mean = muhat, sd = sdhat) 
tittxt <- sprintf("Height Density - Samples:%d Avg:%.1f Std:%.2f",nsamp,muhat,sdhat) 

ggplot(hdf, aes(height)) + 
    geom_histogram(aes(y = ..density..),bins=30,fill="lightblue") + 
    stat_function(fun = dnorm, args = denarg, size=2, col = 'blue') + 
    labs(title=tittxt)+ 
    scale_x_continuous(limits=c(xmin,xmax)) 

получают следующим образом:

enter image description here

И если вы хотите отсчеты, чем это:

# Plot Count 
f <- function(x){ nsamp*dnorm(x,muhat,sdhat)} 
tittxt <- sprintf("Height Counts - Samples:%d Avg:%.1f Std:%.2f",nsamp,muhat,sdhat) 

ggplot(hdf, aes(height)) + 
    geom_histogram(aes(y = ..count..),bins=30,fill="lightgreen") + 
    stat_function(fun =f, args = NULL, size=2, col = 'darkgreen') + 
    labs(title=tittxt)+ 
    scale_x_continuous(limits=c(xmin,xmax)) 

дает это:

enter image description here

1

Как описано here, аргумент addDensity = TRUE используется для добавления нормального соответствия гистограммы.

Попробуйте код R ниже:

library(easyGgplot2) 
# Load data 
data("weight") 
head(weight) 

# Histogram plots with normal fit 
ggplot2.histogram(data=weight, xName='weight', 
       groupName='sex', legendPosition="top", 
       groupColors = c("dodgerblue2","deeppink"), 
       alpha=0.3, addDensity=TRUE) 

ggplot2 histogram sthda

удачи!

+0

Хорошо! Большое спасибо! :) – blondie

+1

Это может быть пригонка, но это нормально подходит? –