2012-12-19 14 views
15

voglio aggiungere curva di densità di istogramma e istogramma culumative, come questo -Aggiungere linee di densità per istogramma e istogramma cumulativo

enter image description here

Qui è, per quanto posso andare:

hist.cum <- function(x, plot=TRUE, ...){ 
    h <- hist(x, plot=FALSE, ...) 
    h$counts <- cumsum(h$counts) 
    h$density <- cumsum(h$density) 
    h$itensities <- cumsum(h$itensities) 
    if(plot) 
    plot(h) 
    h 
} 
x <- rnorm(100, 15, 5) 
hist.cum(x) 
hist(x, add=TRUE, col="lightseagreen") 

# 
lines (density(x), add = TRUE, col="red") 
+0

'density' non è sulla stessa scala di' frequency'. Sono abbastanza sicuro che troverai esempi funzionanti in SO se fai un po 'più di ricerca. Hai cercato SO prima di postare, giusto? –

+0

Di quanti duplicati hai bisogno? http://stackoverflow.com/questions/5688082/ggplot2-overlay-histogram-with-density-curve http://stackoverflow.com/questions/9246040/axis-labeling-in-r-histogram-and-density-plots -multiple-overlays-of-density-plots http://stackoverflow.com/questions/1497539/fitting-a-density-curve-to-a-histogram-in-r http://stackoverflow.com/questions/12945951/r-programming-how-to-plot-a-density-estimate-on-top-of-the-istogramma –

+0

@DWin Grazie per il suggerimento, li ho visti tutti ma non riuscivo a capire come sovrapporre curva di densità sia cumulativa che regolare ... – jon

risposta

23

Offerto senza spiegazione:

## Make some sample data 
x <- sample(0:30, 200, replace=T, prob=15 - abs(15 - 0:30)) 

## Calculate and plot the two histograms 
hcum <- h <- hist(x, plot=FALSE) 
hcum$counts <- cumsum(hcum$counts) 
plot(hcum, main="") 
plot(h, add=T, col="grey") 

## Plot the density and cumulative density 
d <- density(x) 
lines(x = d$x, y = d$y * length(x) * diff(h$breaks)[1], lwd = 2) 
lines(x = d$x, y = cumsum(d$y)/max(cumsum(d$y)) * length(x), lwd = 2) 

enter image description here