Как использовать интерактивный график временных рядов с использованием dygraphs в R

Опубликовано: 8 Сентября, 2022

Dygraphs называют динамической графикой, которая позволяет легко создавать взаимодействие между пользователем и графиком. Диграфы в основном используются для анализа временных рядов. Пакет dygraphs представляет собой интерфейс R для библиотеки построения диаграмм JavaScript dygraphs на языке программирования R.

Создание простых диграфов

Давайте возьмем биржевые данные для лучшего понимания временных рядов.

Загрузите биржевые данные (Tesla) из библиотеки quantmod с помощью getSymbols(). Мы построим 5 различных динамических сюжетов.

  • Цвет серии
  • Вертикальное и горизонтальное затенение
  • Подсвечник
  • Верхняя/нижняя полоса
  • Селектор диапазона

Прежде всего, установите пакет dygraphs и quantmod в rstudio.

install.packages(“dygraphs”)

install.packages(“quantmod”)

Вы можете скачать данные прямо по этой ссылке: TSLA Stock Data

Здесь OHLC представляет цену открытия, максимума, минимума и закрытия каждого периода в биржевых данных. Итак, мы извлекаем этот параметр и сохраняем его в переменной цены.

R




# import library
library(dygraphs)
library(quantmod)
  
# download data 
getSymbols("TSLA")
  
# view top 5 row data
head(TSLA,n=5)
  
# Get OHLC data 
price<-OHLC(TSLA)
head(price, n=5)

Выход:

Цветовой график серии

Dygraph может назначать разные цветовые палитры для каждой строки визуализации. Например, наш четырехпараметр в данных TSLA (open, high, low, close) может быть представлен разными цветами. Dygraph предоставляет функцию dyOptions(), в которой параметр цветов может быть полезен для плавной идентификации каждой линии акций.

R




# RColorBrewer used to create nice color palettes 
# display.brewer.pal(n, name)
dygraph(price, main = "TSLA Stock price analysis") %>% 
    dyOptions(colors = RColorBrewer::brewer.pal(4, "Dark2"))

Выход:

Вертикальное и горизонтальное затенение

Вертикальное затенение:

Dygraph может назначать функции затенения на временной шкале для анализа различных временных интервалов. Используя затенение, мы можем назначить временной интервал, соответствующий цвету, для лучшего анализа части акций.

R




dygraph(price, main = "TSLA Stock price analysis") %>% 
     dySeries(label = "Temp (F)",
              color = "black") %>%
     dyShading(from = "2018-1-1",
               to = "2019-12-1"
               color = "#FFE6E6") %>%
     dyShading(from = "2020-1-1"
               to = "2021-1-1",
               color = "#CCEBD6")

Выход:

Горизонтальное затенение

Диграфы обеспечивают горизонтальное затенение с использованием среднего и стандартного отклонения. Мы можем назначить интервалы в затенении и назначить параметры оси для y. Здесь функция ROC используется для создания кривой ROC.

Выход:

Свечной график

Свечные графики чаще всего используются профессиональными трейдерами на фондовом рынке для прогнозирования движения цены на основе прошлых данных. dygraph может легко построить этот график всего одной строкой команды. Здесь мы сохраняем данные о запасах за последние 30 дней, чтобы создать свечной график. Красная полоса показывает наличие на складе, а зеленая полоса показывает наличие на складе.

R




TSLA <- tail(TSLA, n=30)
graph <- dygraph(OHLC(TSLA))
dyCandlestick(graph)

Выход:

Верхняя/нижняя полоса

Мы можем создать несколько серий, в которых каждая серия имеет верхнюю/нижнюю полосу с точки зрения оттенка, точно так же, как полоса погрешности. На графике ниже показан пример серий amazon и tesla.

R




# import tesla and amazon stock price
getSymbols("AMZN")
stocks <- cbind(AMZN[,2:4], TSLA[,2:4])
  
# plot graph
dygraph(stocks, main = "Amazon and Tesla Share Prices") %>% 
     dySeries(c("AMZN.Low", "AMZN.Close",
                "AMZN.High"), label = "AMZN") %>%
     dySeries(c("TSLA.Low", "TSLA.Close"
                "TSLA.High"), label = "TSLA")

Выход:

Селектор диапазона

Мы можем добавить селектор диапазона в нижней части диаграммы dygraph для простого интерфейса панорамирования и масштабирования с помощью функции dyRangeSelector().

R




dygraph(TSLA, 
        main = "Tesla Stock Price Analysis")
%>% dyRangeSelector()

Выход: