2016-05-14 11 views
2

В настоящее время я использую stat_ecdf для построения графика моей совокупной частоты.Как построить обратную (дополнительную) ecdf с помощью ggplot?

Вот код, который я использовал

cumu_plot <- ggplot(house_total_year, aes(download_speed, colour = ISP)) + 
       stat_ecdf(size=1) 

Однако я хочу ecdf быть обратным (комплементарный ecdf). Любые идеи самого простого способа сделать это?

Cheers!

+0

делает установки 'stat_ecdf (размер = 1, отображение = AES (-download_speed))' работу? – chappers

+0

Это не работает так, как я хочу :(. Я хочу, чтобы значение оси y было (1-y) вместо y, поэтому при просмотре сюжета мы можем получить информацию о «... % от образца имеет .... или больше 'вместо' ....% от выборки имеет .... или меньше ' –

ответ

0

Так как кажется, нет более простого способа построить обратную ecdf, вот что я сделал в случае, если кто-то ищет решение:

  1. извлечь информацию из функции ecdf и хранить ее в новый столбец

    house_total_year_ecdf <- ddply(house_total_year, c("ISP"), mutate, 
         ecdf = ecdf(download_speed)(unique(download_speed))*length(download_speed)) 
    
    #transforming the scale to (0,1) 
    house_total_year_ecdf_2 <- ddply(house_total_year_ecdf, "ISP", mutate, 
         ecdf =scale(ecdf,center=min(ecdf),scale=diff(range(ecdf)))) 
    
  2. Участок график с помощью geom_step и у = 1-ecdf

    ggplot(house_total_year_ecdf_2, aes(download_speed,1-ecdf, colour = ISP)) + 
    geom_step() 
    

enter image description here

7

на странице справки о stat_ecdf:

вычисляемые переменные

х

х в данных

у

кумулятивная плотность, соответствующая х

Так это работает:

p <- ggplot(dataframe_with_column_Z, aes(x=Z)) 

p + geom_line(aes(y = 1 - ..y..), stat='ecdf') 

Output

 Смежные вопросы

  • Нет связанных вопросов^_^