web-dev-qa-db-fra.com

geom_smooth dans ggplot2 ne fonctionne pas/ne s'affiche pas

J'essaie d'ajouter une ligne de régression linéaire à mon graphique, mais lorsqu'il est exécuté, il ne s'affiche pas. Le code ci-dessous est simplifié. Il y a généralement plusieurs points chaque jour. Le graphique est parfait, à part 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 très simple, mais je n'arrive pas à comprendre. Ou bien c'est le fait que j'utilise une date pour l'axe des x, mais je ne reçois aucune erreur. Si c'est à cause de la date, je ne sais pas comment l'aborder. Merci.

15
E Phillips

Actuellement, votre date est un facteur puisque vous avez entré un vecteur de caractère. Voir class(b$day).

Une fois la date modifiée, la régression linéaire se déroulera correctement.

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

17
A Toll
# sample data
d <- data.frame(expand.grid(x=letters[1:4], g=factor(1:2)), y=rnorm(8))   
# Try the below three different scripts to draw.
ggplot(d, aes(x=x, y=y, colour=g)) + geom_line() + geom_point()
ggplot(d, aes(x=x, y=y, colour=g, group=g))+ geom_line() + geom_point()
ggplot(d, aes(x=x, y=y, colour=g, group=1)) + geom_line() + geom_point()

Règles clés: geom_line () tente de connecter des points de données appartenant au même groupe . différents niveaux de variable factorielle appartiennent à un groupe différent.

0
Love_qq_xq