如何创建部分实线和部分虚线的趋势线?

How to create trendlines that are partly solid and partly dashed?

我正在进行时间序列数据分析,为此我创建了一个图。 除了显示数据点外,我还想显示一条趋势线。为此,干预前趋势应该是实线,而 "counterfactual scenario"(post-干预趋势线)应该是虚线。 所以我需要的是一条在 2005 年之前都是实线,然后是虚线的线。

到目前为止,我只是设法创建了一条连续的实线。这是我的情节到目前为止的样子(恐怕我不知道如何使用语法高亮):

Q=ts(c(7.5,6.9,6.2,6.4,7.4,7.2,6.9,6.5,8.1,12.3,10.6,11.7,12.2,13.07,12.48,14.54,15.06,15.1,13.46,13.1,13.75,11.81,13.33,15.75), start = 1995, end =2018, frequency = 1)

tQ<-c(1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018)

plot(Q,type = "n", main = "Numbers per Year", xlab = "Year", ylab = "Q Number", ylim = c(0,35), xaxt='n')

rect(2005,-1,2018.5,36,col=grey(0.9),border=F) #post-intervention period

points(AR)

axis(side=1,at=c(1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018) , las = 2)

abline(v = 2005, lty = 2)

text(Q, labels = Q, cex = 0.7, pos = 3, offset = 1)

abline(lm(Q~tQ))

到目前为止,我还没有发现任何关于如何更改趋势线的无用信息。

非常感谢您的帮助!

我不太确定这是否是您要找的,但是。这些代码在 2005 之后给出一条虚线。您只需要取消代码中最后的 abline() 并在下面添加这些行,

 #abline(lm(Q~tQ))
 x <- tQ[11:length(tQ)]
 y <- Q[11:length(Q)]
 lines(x,fitted(lm(y~x)),col="blue",lty = 2)

或者,如果你想添加一条趋势线,直到 2005 年开始为虚线,

#abline(lm(Q~tQ))
fit <- lm(Q~tQ)
lines(tQ[1:11],fitted(fit)[1:11],col="blue")
lines(tQ[11:length(tQ)],fitted(fit)[11:length(tQ)],col="blue",lty = 2)

最后,如果您想得到 2005 年前后的趋势线,

 #abline(lm(Q~tQ))
 x1 <- tQ[1:11]
 y1 <- Q[1:11]
 x2 <- tQ[11:length(tQ)]
 y2 <- Q[11:length(Q)]
 lines(x1,fitted(lm(y1~x1)),col="blue")
 lines(x2,fitted(lm(y2~x2)),col="blue",lty = 2)