Solo nel caso qualcuno colpisce questa domanda con geom_histogram
in mente, si noti che esiste un modo per estrarre i dati da un oggetto ggplot.
La seguente funzione di convenienza uscita un dataframe con il limite inferiore di ciascun bin (xmin
), il limite superiore di ciascun contenitore (xmax
), il punto medio di ciascun bin (x
), nonché il valore di frequenza ().
## Convenience function
get_hist <- function(p) {
d <- ggplot_build(p)$data[[1]]
data.frame(x = d$x, xmin = d$xmin, xmax = d$xmax, y = d$y)
}
# make a dataframe for ggplot
set.seed(1)
x = runif(100, 0, 10)
y = cumsum(x)
df <- data.frame(x = sort(x), y = y)
# make geom_histogram
p <- ggplot(data = df, aes(x = x)) +
geom_histogram(aes(y = cumsum(..count..)), binwidth = 1, boundary = 0,
color = "black", fill = "white")
Illustrazione:
hist = get_hist(p)
head(hist$x)
## [1] 0.5 1.5 2.5 3.5 4.5 5.5
head(hist$y)
## [1] 7 13 24 38 52 57
head(hist$xmax)
## [1] 1 2 3 4 5 6
head(hist$xmin)
## [1] 0 1 2 3 4 5
Una questione collegata ho risposto qui (Cumulative histogram with ggplot2).
Aaaah, ha appena avuto la stessa idea e ha voluto postare questo! Sei stato più veloce :-) – TMS
Devi anche notare che dovrebbe usare 'plot = FALSE', in modo che ottenga risultati senza tracciare l'istogramma. – TMS
c'è un modo senza hist? Sto cercando di farcela con le interruzioni personalizzate e non funziona. Potrebbe esserci qualcos'altro? – xealits