Как я могу создать интерактивный график диаграмм (quantmod) в R?

#r #plotly #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 интерактивного графика, чтобы я мог выбрать определенный диапазон данных?

Ответ №1:

вы можете использовать пакет 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