时间序列图矩阵

时间:2016-04-14 21:53:00

标签: r ggplot2 timeserieschart ggfortify

我有一个问题协调R: 我试图将包含ggplot2ggfortify的R中的一组每日时间序列商品数据绘制成矩阵。我想在x轴上的每个y轴和日期1/1 / 2007,1 / 1/2008 ...上设置标准化值。 视觉概念应如下所示:

enter image description here

有谁知道这是如何运作的?

1 个答案:

答案 0 :(得分:3)

zoo包提供对具有灵活时间索引的时间序列的支持,例如包括Date。该软件包还带有fortify()方法,可用于ggplot2图形。还提供了autoplot()的便捷方法,有关具有不同布局的一系列工作示例,请参阅?autoplot.zoo

对于在3 x 6布局中具有Date索引的18个时间序列的示例,我使用来自包FXRatesCHF的数据集fxregime的子集。这提供了与瑞士法郎(CHF)相对的不同货币的汇率。

library("zoo")
data("FXRatesCHF", package = "fxregime")
FX <- window(FXRatesCHF[, c(1:4, 6:19)], start = as.Date("2000-01-01"))

然后ggplot()可以应用于fortify()方法的输出:

library("ggplot2")
ggplot(aes(x = Index, y = Value), data = fortify(FX, melt = TRUE)) +
  geom_line(color = "darkred") +
  xlab("Time") + ylab("FX") +
  theme_bw() +
  facet_wrap(~ Series, scales = "free_y", ncol = 6)

FX ggplot2

使用基本图形也可以轻松创建相同类型的布局。只有面板标题位于y轴上,而不是灰色阴影的主标题中:

plot(FX, col = "darkred", xlab = "Time", nc = 6,
  panel = function(...) { grid(col = "lightgray"); lines(...) })

FX base graphics

最后,

可以创建lattice版本
library("lattice")
trellis.par.set(theme = standard.theme(color = FALSE))
xyplot(FX, col = "darkred", xlab = "Time", layout = c(6, 3),
  panel = function(...) { panel.grid(col = "lightgray"); panel.lines(...) })

FX lattice