Я хочу использовать пакет rAmCharts
в своем блестящем приложении в основном для графиков временного ряда (я хочу заменить dygraphs
графики). В целом, оболочка R хорошо документирована , но я все еще пытаюсь понять, как реализовать следующие функции:
извлечение минимальной и максимальной дат из chart.ScrollBarX
- см. Пример вертикальной полосы прокрутки в оригинале amCharts
pkg здесь . Например, dygraphs
эквивалент будет input$dygraph_date_window[1]
& input$dygraph_date_window[2]
(если объект графика называется dygraph
) и
создайте несколько осей Y: вот оригинальный пример . Эквивалентом в dygraphs
является добавление / изменение name
и valueRange
аргументов в dygraphs::dyAxis()
или указание axis
аргумента в dygraphs::dySeries()
.
сюжетные пули: отличный пример тех, в оригинальном pkg можно найти здесь . Эквивалент в dygraphs
будет dyAnnotations()
, что очень сложно. Здесь вы можете найти пример блестящего приложения, которое их использует.
Ниже вы найдете простое приложение Shiny, иллюстрирующее обе функции. Код взят из этого поста .
library(xts)
library(shiny)
library(shinydashboard)
library(dygraphs)
library(dplyr)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
dygraphOutput('plot1')
)
)
server <- function(input, output, session) {
m_df <- data.frame(date=as.Date(zoo::as.yearmon(time(mdeaths))), Y=as.matrix(mdeaths))
subdata <- reactive({
if(!is.null(input$plot1_date_window)){
subdata <- m_df[m_df$date >= as.Date(input$plot1_date_window[1]) & m_df$date <= as.Date(input$plot1_date_window[2]), ]
subdata$cumsum <- cumsum(subdata$Y)
subdata$Y <- NULL
} else {
subdata <- NULL
}
return(subdata)
})
subdata_d <- subdata %>% debounce(100)
output$plot1 <- renderDygraph({
input_xts <- xts(select(m_df, -date), order.by = m_df$date)
if(is.null(subdata_d())){
final_xts <- input_xts
} else {
subdata_xts <- xts(select(subdata_d(), - date), order.by = subdata_d()$date)
final_xts <- cbind(input_xts, subdata_xts)
}
p <- dygraph(final_xts) %>% dySeries(name="Y") %>%
dyRangeSelector(retainDateWindow = TRUE)
if("cumsum" %in% names(final_xts)){
p <- dySeries(p, name="cumsum", axis = "y2")
}
p
})
}
shinyApp(ui, server)