На всякий случай, если кто-то ответит на этот вопрос, имея в виду ggplot
's * geom_histogram
, учтите, что есть способ извлечь данные из объекта ggplot.
Следующая удобная функция выводит информационный кадр с нижним пределом каждого бина (xmin
), верхним пределом каждого бина (xmax
), а также средней точкой каждого бина (x
) в качестве значения частоты (y
).
## 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")
Иллюстрация:
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
На соответствующий вопрос я ответил здесь ( Накопительная гистограмма с ggplot2 ).