使用时间序列对象在基础 R 中添加 V 线以绘图

Adding v-lines to plot in base R using time series object

提问人:confusedindividual 提问时间:7/12/2022 最后编辑:Philconfusedindividual 更新时间:7/12/2022 访问量:71

问:

我正在尝试将垂直线添加到我在 R 基础中制作的时间序列图中。该图内部共有 5 个图。有两个相同的enter image description here x 轴(见当前图)plot(data1,type = 'l',lwd = 1.5, family = "A", ylab ="", xlab = "", main = "")

添加 vlines 时,我得到这个结果abline(v=c(27,87, 167, 220, 280, 329), lty=2)enter image description here

有没有办法让他们出现在图表上,所以它看起来像这样,但有虚线和图中的线。
或者,如果您知道在 ggplot 中绘制此内容的更好方法,那也很棒。提前非常感谢你。

enter image description here

R 时间序列

评论


答:

0赞 Adam Quek 7/12/2022 #1

这是一个使用 ggplot 放入 vlines 的玩具示例。

library(tidyverse)


iris2 <- iris %>% pivot_longer(cols=Sepal.Length:Petal.Length)


ggplot(iris2, aes(x = Petal.Width, y = value)) +
  geom_line() +
  facet_wrap(~name, scales="free_y", ncol=2) +
  geom_vline(xintercept=c(.25, .75, 1.25, 1.75, 2.25), 
             linetype='dashed', col = 'blue')

enter image description here

0赞 jay.sf 7/12/2022 #2

plot调用。这有一个参数,您可以在其中定义一个函数,即面板中应该发生什么。既然你想要一个和通常的,你可以很容易地做到:plot.tspanel=gridlines

panel <- function(...) {grid(col=1, ny=NA, lty=1); lines(...)}
plot(z, panel=panel)

enter image description here

grid通常使用 和 您可以定义单元格的数量,请参阅。axTicks?grid

这也适用于 .abline

panel <- function(...) {abline(v=seq(1961, 1969, 2), col=1,lty=1); lines(...)}
plot(z, panel=panel)

enter image description here


数据:

set.seed(42)
z <- ts(matrix(rnorm(300), 100, 5), start = c(1961, 1), frequency = 12)