#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