首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用quantmod绘制SPX与VIX

在R中使用quantmod绘制SPX与VIX
EN

Stack Overflow用户
提问于 2012-01-23 09:17:50
回答 2查看 5.1K关注 0票数 3

我刚被介绍到quantmod,看了这里的例子,http://www.r-chart.com/2010/06/stock-analysis-using-r.html我尝试了下面的代码,

代码语言:javascript
复制
getSymbols(c("^GSPC","^VIX"))
head(as.xts(merge(GSPC,VIX)))
chartSeries(c(GSPC, VIX), subset='last 3 months')

但是这个图表完全超出了比例,所以我希望这个论坛上的一些专家能告诉我如何正确地绘制这个图表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-23 10:04:52

下面是一个不使用chartSeries的示例。

代码语言:javascript
复制
ind <- function(x) {
  # Divide each column by the first non-NA value
  # (There may already be a function to do that.)
  coredata(x) <- t(t(coredata(x)) / apply(coredata(x),2,function(u){ c(u[!is.na(u)&u!=0],NA)[1] }))
  x
}
x <- cbind( Ad(GSPC), Ad(VIX) )
x <- x["2011-11::"]

# Using base graphics
matplot( 
  index(x), coredata(ind(x)), 
  xlab="", ylab="", main="",
  type="l", lty=1, lwd=3, axes=FALSE 
)
abline(h=1, lty=3, col="lightgrey")
axis(2, las=1)
axis.Date(1, index(x))
box()
legend( "topleft", gsub("\\..*", "", names(x)), lty=1, lwd=3, col=1:2 )

# If you prefer ggplot2
library(ggplot2)
library(reshape2)
d <- data.frame( date = index(x), coredata(ind(x)) )
names(d) <- gsub("\\..*", "", names(d))
d <- melt(d, id.vars="date")
ggplot(d, aes(date, value, color=variable)) + geom_line(size=2)
票数 2
EN

Stack Overflow用户

发布于 2012-01-24 02:51:23

试试这个:

代码语言:javascript
复制
chart_Series(GSPC)
add_Series(OHLC(VIX)+1000,on=1)

您需要使用OHLC从VIX中删除该卷,因为它始终为零,并且似乎会影响自动ylim计算。我还添加了1000个,以使两个系列的关卡更接近。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8966292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档