2016-02-22 12 views
14

Próbuję dodać linię regresji liniowej do mojego wykresu, ale gdy jest uruchamiana, nie jest wyświetlana. Poniższy kod jest uproszczony. Zwykle jest wiele punktów każdego dnia. Wykres wychodzi dobrze poza tym.geom_smooth w ggplot2 nie działa/wyświetla się

b<-data.frame(day=c('05/22','05/23','05/24','05/25','05/26','05/27','05/28','05/29','05/30','05/31','06/01','06/02','06/03','06/04','06/05','06/06','06/07','06/08','06/09','06/10','06/11','06/12','06/13','06/14','06/15','06/16','06/17','06/18','06/19','06/20','06/21','06/22','06/23','06/24','06/25'), 
        temp=c(10.1,8.7,11.4,11.4,11.6,10.7,9.6,11.0,10.0,10.7,9.5,10.3,8.4,9.0,10.3,11.3,12.7,14.5,12.5,13.2,16.5,19.1,14.6,14.0,15.3,13.0,10.1,8.4,4.6,4.3,4.7,2.7,1.6,1.8,1.9)) 


gg2 <- ggplot(b, aes(x=day, y=temp, color=temp)) + 
    geom_point(stat='identity', position='identity', aes(colour=temp),size=3) 


gg2<- gg2 + geom_smooth(method='lm') + scale_colour_gradient(low='yellow', high='#de2d26') 

gg2 <-gg2 + labs(title=filenames[s], x='Date', y='Temperture (Celsius)') + theme(axis.text.x=element_text(angle=-45, vjust=0.5)) 


gg2 

To prawdopodobnie coś naprawdę prostego, ale nie mogę tego zrozumieć. Albo fakt, że używam daty dla osi X, ale nie otrzymuję żadnych błędów. Jeśli jest to spowodowane datą, nie jestem pewien, jak do tego podejść. Dzięki.

+0

trzeba zrobić dzień zmienną numeryczną, jak w '... ggplot (B, AES (x = as.numeric (dzień), ...' – mtoto

+0

doskonały, dziękuję –

Odpowiedz

14

Obecnie Twoja data jest czynnikiem, ponieważ wszedłeś jako wektor znaków. Zobacz class(b$day).

Po zmianie na datę regresja liniowa będzie działać poprawnie.

b$Day <- as.Date(b$day, format='%m/%d') 
# If dates are from 2015, 
# b$Day <- as.Date(b$day, format='%m/%d') - 366 
# check with head(b$Day) 

gg2 <- ggplot(b, aes(x=Day, y=temp, color=temp)) + 
    geom_point(stat='identity', position='identity', aes(colour=temp),size=3) 

gg2<- gg2 + geom_smooth(method='lm') + 
    scale_colour_gradient(low='yellow', high='#de2d26') 

gg2 <-gg2 + labs(title=filenames[s], x='Date', y='Temperture (Celsius)') + 
    theme(axis.text.x=element_text(angle=-45, vjust=0.5)) 

g2 

Plot with regression line

+0

Dziękuję bardzo, pomyślałem, że to było coś prostego, czego mi brakowało –

+0

Lifesaver! – puslet88

Powiązane problemy