R - построение двух временных рядов показывает только первый - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь построить два временных ряда, используя следующий код:

yq <- zoo::as.yearqtr(df1$var1)
plot(yq, df1$var2, type = "l", col = "red")
lines(df1$var3, col = "blue")

, но он строит только первый временной ряд (var2). Как я могу построить второй график на том же графике?

Вот мой набор данных:

> dput(df1)
structure(list(var1 = c("2012Q1", "2012Q2", "2012Q3", "2012Q4", 
"2013Q1", "2013Q2", "2013Q3", "2013Q4", "2014Q1", "2014Q2", "2014Q3", 
"2014Q4", "2015Q1", "2015Q2", "2015Q3", "2015Q4", "2016Q1", "2016Q2", 
"2016Q3", "2016Q4", "2017Q1", "2017Q2", "2017Q3", "2017Q4", "2018Q1", 
"2018Q2", "2018Q3", "2018Q4", "2019Q1", "2019Q2"), var2 = c(NA, 
NA, NA, NA, 444618.290581211, 1556125.2312821, 744145.122633215, 
844862.245210837, 773188.163309878, 1204732.23940684, 1832308.19798703, 
1732186.62322613, 1475089.69403864, 1238791.22680584, 772358.984604352, 
927111.535808541, 982978.903715697, 581415.120412662, 489457.818616084, 
446419.025443493, 403840.992700758, 654630.928503824, 753729.397874631, 
513754.997587623, 587031.503365487, 465808.650890606, 462710.391792817, 
537923.914536013, 409037.838465172, 785118.681845306), var3 = c(NA, 
NA, NA, NA, 3544407.49, NA, NA, NA, 5254709.85, NA, NA, NA, 4430302.745, 
NA, NA, NA, 2499437.24, NA, NA, NA, 2216217.61, NA, NA, NA, 2024459.22, 
NA, NA, NA, 2537232.26, NA)), row.names = c(NA, -30L), class = "data.frame")

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Преобразование df1 в объект зоопарка, а затем вы можете сделать это за один вызов графика. Используйте na.approx, чтобы АН не разбили сюжет. Пропустите screen=1, если вы хотите несколько панелей. (продолжение после графика c)

library(zoo)

z1 <- read.zoo(df1, FUN = as.yearqtr)

cols <- c("red", "blue")
plot(na.approx(z1), col = cols, screen = 1, xlab = "", ylab = "")
legend("topright", names(z1), col = cols, lty = 1)

screenshot

В качестве альтернативы мы можем использовать решетку или ggplot2:

library(lattice)
key <- list(space = "right", text = list(names(z1)), lines = list(col = cols))
xyplot(na.approx(z1), xlab = "", col = cols, screen = 1, key = key)

library(ggplot2)
autoplot(na.approx(z1), facet = NULL) + xlab("")
1 голос
/ 05 февраля 2020
yq <- zoo::as.yearqtr(df1$var1)

# plot var2 and set the limit of y axis
plot(yq, df1$var2, type = "l", col = "red", ylim = c(min(c(df1$var2, df1$var3), na.rm = T), 
                                                     max(c(df1$var2, df1$var3), na.rm = T)))
# plot var3 after removing any NAs
lines(yq[!is.na(df1$var3)], df1$var3[!is.na(df1$var3)], col = "blue")

enter image description here

Вы также можете удалить NA из var2 аналогичным образом, поэтому ваш график начинается с 2013 по оси x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...