R:在彼此之下绘制2个图表,并为每个图表添加移动平均值

时间:2013-10-30 15:35:34

标签: r plot

我正在努力完成R中的整个绘图。我希望​​彼此之间有2张图表并单独格式化。此外,我想为每个人添加移动平均线。我怎样才能做到这一点?我已经设法将它们拉到彼此之下,但我仍在努力应对移动平均线。 作为可重现代码的一个例子,我使用了SPY和Apple数据。

getSymbols("SPY")
getSymbols("AAPL")
par(mfrow=2:1)
plot(SPY, main="SPY")

plot(AAPL,main="AAPL")

我如何单独格式化它们?并且不要在两个图表上显示网格线?

1 个答案:

答案 0 :(得分:3)

以下是使用rollmean库中的zoo的解决方案:

library(quantmod)

getSymbols("SPY")
getSymbols("AAPL")

par(mfrow=2:1)
plot(SPY[, "SPY.Open"], main="SPY", auto.grid=F)
lines(rollmean(SPY, k=30, fill=NA)[, "SPY.Open"], col="red")
plot(AAPL[, "AAPL.Open"], main="AAPL", auto.grid=F)
lines(rollmean(AAPL, k=30, fill=NA)[, "AAPL.Open"], col="red")

绘制开盘价以及30日移动平均线。您可以更改k以调整窗口,rollmean也可以选择对齐窗口的方式。默认情况下,它居中。

要删除网格线,添加auto.grid=F似乎可以解决问题,来自?plot.xts

enter image description here

您还可以通过将系列转换为纯数字向量来强制它:

spy.open <- as.vector(SPY[, "SPY.Open"])
plot(spy.open, type="l")

enter image description here