2015-05-22 3 views
2

Мне нравится stat_ecdf() есть часть пакета ggplot2, который я считаю весьма полезным для изучения серии данных. Однако это только визуально, и мне интересно, возможно ли, и если да, как - получить связанную таблицу?Получить данные связанные с ggplot + stat_ecdf()

Пожалуйста, обратитесь к следующим воспроизводимым примеру

p <- ggplot(iris, aes_string(x = "Sepal.Length")) + stat_ecdf() # building of the cumulated chart 
p 
attributes(p) # chart attributes 
p$data # data is iris dataset, not the serie used for displaying the chart 

enter image description here

+0

Взгляните на функцию 'ecdf', включенную в базу R, если вы просто хотите оценить эмпирический cdf без его построения. – MrFlick

ответ

2

Мы можем воссоздать данные:

#Recreate ecdf data 
dat_ecdf <- 
    data.frame(x=unique(iris$Sepal.Length), 
      y=ecdf(iris$Sepal.Length)(unique(iris$Sepal.Length))*length(iris$Sepal.Length)) 
#rescale y to 0,1 range 
dat_ecdf$y <- 
    scale(dat_ecdf$y,center=min(dat_ecdf$y),scale=diff(range(dat_ecdf$y))) 

Ниже 2 участков должны выглядеть одинаково:

#plot using new data 
ggplot(dat_ecdf,aes(x,y)) + 
    geom_step() + 
    xlim(4,8) 

#plot with built-in stat_ecdf 
ggplot(iris, aes_string(x = "Sepal.Length")) + 
    stat_ecdf() + 
    xlim(4,8)