2016-05-30 7 views
0

Angenommen, ich habe einen Datenrahmen wie folgt und habe eine ggplot mit der linearen Linie für die letzten paar Perioden meiner Daten, ich frage mich, ob es möglich ist, eine andere Farbe auf der Geom_smooth Linie basierend auf seinem Gradienten (z sein Aufwärtstrend, rot, wenn Abwärtstrend und Schwarz des Trends ungefähr konstant sind)?Wie werden verschiedene Farben der geom_smooth-Linie basierend auf ihrem Gradienten übernommen?

Date <- as.yearqtr(seq(as.Date("2005/1/1"), as.Date("2016/1/1"), by = "quarter")) 
GDP<- as.vector(sample(1000:4000,length(Date), replace=T)) 
df <- data.frame(Date, GDP) 
ggplot(df, aes(Date, GDP)) + geom_line(colour="darkblue") + 
    geom_smooth(data=subset(df, Date >= as.numeric(df$Date[length(Date)-8])), method="lm") + 
    xlab("Date") + ylab("GDP") + ggtitle("Nominal GDP") 

Antwort

0

Wahrscheinlich nicht die beste Person, um dies zu beantworten. Aber es scheint mir, dass wenn Sie lm für Ihre Daten ausführen, extrahieren Sie die Koeffizienten (die die Linienneigungen sind), und fügen Sie sie in Ihren Daten als Spalte ein, sollte es einfach sein.

model <- lm(y~x, df) ## You'll have to run your lm here. 
model$coeffecients ## Can be used to extract the slope of each line. 

Nachdem Sie, dass aus figre, so etwas wie dies würde Sinn für mich:

ggplot(df, aes(Date, GDP)) + 
geom_line(colour = "darkblue") + 
geom_smooth((data=subset(df, Date >= as.numeric(df$Date[length(Date)-8])), 
      method="lm", 
      colour = coefficient) + 
scale_fill_gradient2(high = "green", 
        low = "red", 
        mid = "black", 
        midpoint = 0) 
Verwandte Themen