如何创建部分实线和部分虚线的趋势线?
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)
我正在进行时间序列数据分析,为此我创建了一个图。 除了显示数据点外,我还想显示一条趋势线。为此,干预前趋势应该是实线,而 "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)