微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 R 中制作 chartSeries (quantmod) 的交互式图形?

如何解决如何在 R 中制作 chartSeries (quantmod) 的交互式图形?

我有 quantmod 包中的图形,我从 SPY 获取数据,我想制作一个交互式图形,类似于我们使用 ggploty 包中的 plotly 来做的。这是我的代码的基本形式。

library(quantmod)
library(plotly)
getSymbols("SPY",from="2016-01-01",to="2020-01-01")
chartSeries(SPY,subset = "2017-11-18::2017-12-16")
addSMA(n=50,on=1,col = "blue")

这就是我尝试做的

p <- chartSeries(SPY,subset = "2017-11-18::2017-12-16")
ggplotly(p)

这段代码不起作用,我认为它有一个不同的类对象。有没有办法将 chartSeries 中的图表制作成交互式图表,以便我可以选择特定范围的数据?

解决方法

您可以使用 dygraphs 包创建带有 xts 类对象的交互式图表

试试下面的代码, 它将创建一个带有价格烛台的交互式图表

library(quantmod)
library(dygraphs)
library(tidyverse)
library(lubridate)
library(htmlwidgets)
getSymbols("SPY",from="2016-01-01",to="2020-01-01")


SPY <- SPY[,c(1:4)] ## remove the volume and adjusted columns
SPY$SMA50 <- SMA(Cl(SPY),n = 50) #create SMA50 line
p <- dygraph(SPY,xlab = "Date",ylab = "Price",main = "SPY Price") %>%
  dySeries("SPY.Open",label = "Open",color = "black") %>%
  dySeries("SPY.Low",label = "Low",color = "red") %>%
  dySeries("SPY.High",label = "High",color = "green") %>%
  dySeries("SPY.Close",label = "Close",color = "orange") %>%
  dySeries("SMA50",label = "SMA50",color = "blue") %>%
  dyRangeSelector() %>%
  dyCandlestick()%>%
  dyCrosshair(direction = "vertical") %>%
  dyHighlight(highlightCircleSize = 3,highlightSeriesBackgroundAlpha = 0.2,hideOnMouseOut = T)  %>%
  dyRoller(rollPeriod = 1)
p

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。