我有一个问题协调R:
我试图将包含ggplot2
和ggfortify
的R中的一组每日时间序列商品数据绘制成矩阵。我想在x轴上的每个y轴和日期1/1 / 2007,1 / 1/2008 ...上设置标准化值。
视觉概念应如下所示:
有谁知道这是如何运作的?
答案 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)
使用基本图形也可以轻松创建相同类型的布局。只有面板标题位于y轴上,而不是灰色阴影的主标题中:
plot(FX, col = "darkred", xlab = "Time", nc = 6,
panel = function(...) { grid(col = "lightgray"); lines(...) })
最后,
可以创建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(...) })