0

我正在为 R 中的整个绘图而苦苦挣扎。我希望在彼此下方有 2 个图表并单独格式化它们。此外,我想为它们中的每一个添加一个移动平均线。我怎样才能做到这一点?我已经设法将它们绘制在彼此下方,但我仍在与移动平均线作斗争。作为可重现代码的示例,我使用了 SPY 和 Apple 数据。

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

plot(AAPL,main="AAPL")

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

4

1 回答 1

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.

在此处输入图像描述

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

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

在此处输入图像描述

于 2013-10-30T19:30:25.603 回答