geom smooth dans ggplot2 ne fonctionne pas/se présente

j'essaie d'ajouter une ligne de régression linéaire à mon graphique, mais quand il est exécuté, il n'apparaît pas. Le code ci-dessous est simplifié. Il y a généralement plusieurs points chaque jour. Le graphique ressort bien autre que cela.

    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

C'est probablement quelque chose de vraiment simple, mais je n'arrive pas à le comprendre. Ou c'est le fait que j'utilise une date pour l'axe x, mais je ne reçois aucune erreur. Si c'est dû à la date, Je ne sais pas comment l'aborder. Grâce.

15
demandé sur E Phillips 2016-02-22 20:49:02

1 réponses

actuellement votre date est un facteur puisque vous êtes entré comme vecteur de caractères. Voir class(b$day).

une fois que vous le Modifiez à une date, la régression linéaire fonctionnera très bien.

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

16
répondu A Toll 2016-02-22 18:14:47