如何根据渐变采用不同颜色的geom_smooth线?

时间:2016-05-30 04:10:41

标签: r date

假设我有一个如下数据框并且在我的数据的最后几个周期中使用线性线做了ggplot,我想知道是否可以基于它为geom_smooth线应用不同的颜色渐变(例如绿色,如果它的上升趋势,红色,如果下降趋势和黑色趋势大致恒定)?

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")

1 个答案:

答案 0 :(得分:0)

可能不是回答此问题的最佳人选。但在我看来,如果你为你的数据运行lm,提取系数(这是线斜率),并将它们作为列放在你的数据中,它应该很容易。

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.

在你搞清楚之后,这样的事情对我来说是有道理的:

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)