2016-02-22 2 views
14

Я пытаюсь добавить линейную линию регрессии к моему графику, но когда она запускается, она не появляется. Приведенный ниже код упрощен. Обычно в каждый день есть несколько точек. Граф выходит отлично, кроме этого.geom_smooth в ggplot2 не работает/показывается

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 

Это, вероятно, что-то действительно простое, но я не могу понять это. Или это факт, что я использую дату для оси x, но я не получаю никаких ошибок. Если это связано с датой, я не уверен, как подойти к ней. Благодарю.

+0

вам нужно сделать день числовую переменную, как в '... ggplot (б, Айз (х = as.numeric (день), ...' – mtoto

+0

совершенны, спасибо –

ответ

14

В настоящее время ваша дата является фактором, с которого вы вошли в качестве символьного вектора. См. class(b$day).

Как только вы измените его на дату, линейная регрессия будет работать нормально.

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

Большое спасибо. Я подумал, что это было что-то простое, что мне не хватало. –

+0

Lifesaver! – puslet88

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