Chỉ trong trường hợp có ai đánh câu hỏi này với ggplot
's geom_histogram
trong tâm trí, lưu ý rằng có một cách để trích xuất dữ liệu từ một đối tượng ggplot.
Chức năng thuận tiện sau kết quả đầu ra một dataframe với giới hạn dưới của mỗi bin (xmin
), giới hạn trên của mỗi bin (xmax
), điểm giữa của mỗi bin (x
), cũng như các giá trị tần số (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")
Minh họa:
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
Một câu hỏi có liên quan tôi đã trả lời ở đây (Cumulative histogram with ggplot2).
Aaaah, chỉ có ý tưởng tương tự và muốn đăng bài này! Bạn đã nhanh hơn :-) – TMS
Bạn cũng nên lưu ý rằng anh ta nên sử dụng 'plot = FALSE', để anh ta chỉ nhận được kết quả mà không cần vẽ biểu đồ. – TMS
có cách nào không có lịch sử không? Tôi đang cố gắng tạo lịch sử với các ngắt tùy chỉnh và nó không hoạt động. Có thể có cái gì khác? – xealits