Wykreślanie zliczeń skumulowanych w ggplot2
Istnieje kilka postów o kreśleniu gęstości skumulowanych w ggplot. Obecnie używam zaakceptowanej odpowiedzi zŁatwiejszy sposób wykreślania skumulowanego rozkładu częstotliwości w ggplot? za spiskowanie moich skumulowanych liczb. Ale to rozwiązanie wymaga wcześniejszego obliczenia wartości.
Tutaj szukam czystego rozwiązania ggplot. Pokażmy, co mam do tej pory:
x <- data.frame(A=replicate(200,sample(c("a","b","c"),1)),X=rnorm(200))
ggplot'sstat_ecdf
Mogę używać ggplotastat_ecdf
, ale tylko wykreśla skumulowane gęstości:
ggplot(x,aes(x=X,color=A)) + geom_step(aes(y=..y..),stat="ecdf")
Chciałbym zrobić coś takiego, ale to nie działa:
ggplot(x,aes(x=X,color=A)) + geom_step(aes(y=..y.. * ..count..),stat="ecdf")
cumsum
istat_bin
Znalazłem pomysł na użyciecumsum
istat_bin
:
ggplot(x,aes(x=X,color=A)) + stat_bin(aes(y=cumsum(..count..)),geom="step")
Ale jak widać, następny kolor nie zaczyna się ody=0
, ale gdzie skończył się ostatni kolor.
Co chciałbym mieć od najlepszego do najgorszego:
Idealnie prosta poprawka do niedziałającego
ggplot(x,aes(x=X,color=A)) + geom_step(aes(y=..y.. * ..count..),stat="ecdf")
Bardziej skomplikowany sposób użyciastat_ecdf
z liczeniami.
cumsum
podejście, ponieważ daje gorsze (skumulowane) wyniki.