3

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

在此处输入图像描述

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

4

1 回答 1

4

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

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

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)

外汇 ggplot2

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

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

FX 基础图形

最后,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点阵

于 2016-04-15T09:01:50.063 回答