2016-10-04 4 views
3

私はdygraphsライブラリを使用して光り輝くアプリにいくつかの非常に素晴らしいタイムシリーズのプロットを入れました。私は特にと組み合わせてdygraphgroup引数を使用して、ズームレベルを複数のグラフに同期させるのが好きです。dyRangeSelectorの値を光沢のあるアプリでdygraphから抽出します

他のの出力は、レンジセレクタのユーザ操作に反応しますか?私は現在、ユーザが選択した時間間隔でのみ合計にそのテーブルが欲しい

# app.R 
library(shiny) 
library(dygraphs) 
library(dplyr) 

indoConc <- Indometh[Indometh$Subject == 1, c("time", "conc")] 

ui <- fluidPage(
    dygraphOutput("plot"), 
    tableOutput("table") 
) 

server <- shinyServer(function(input, output) { 

    output$plot <- renderDygraph({ 
    indoConc %>% 
     dygraph %>% 
     dyRangeSelector 
    }) 

    output$table <- renderTable({ 
    indoConc %>% 
     filter(time >= min(indoConc$time), time <= max(indoConc$time)) %>% 
     summarise(total_conc = sum(conc)) 
    }) 
}) 

shinyApp(ui, server) 

:シンプルdygraphを示し、以下の表のシリーズを合計し、この例のアプリを取ります。これは、filterラインを変更して、最小/最大ポイント以外のものを使用することを意味します(フィルタリングは発生しません)。

レンジセレクタから適切な形式でこれらの2つの値を抽出して、filterコールで使用できるようにするにはどうすればよいですか?また、ユーザがスライダを動かすと反応的にテーブルが更新されますか?

+1

私は、theresのこの回答のおかげで、私は使用することができますplot_date_window' 'のようないくつかの隠し入力を見ることができます:http://stackoverflow.com/questions/30955578/r-shiny-dygraphs -series-reacting-to-date-window。トリックは、私の非timeseriesのy値をそれから抽出しています。出来ますか? – ClaytonJY

答えて

2

dataframeであなたのtime変数は、私はあなたがcharacterdatetimeオブジェクトを変換することを示唆していると、あなたが必要とする最後の3桁の数字を選択し、さらに使用するためnumericにそれを粗い、希望の3桁の変数であるので、そう:

rm(list = ls()) 
library(shiny) 
library(dygraphs) 
library(dplyr) 
library(stringr) 

indoConc <- Indometh[Indometh$Subject == 1, c("time", "conc")] 
takeLastnvalues <- -3 
ui <- fluidPage(dygraphOutput("plot"),tableOutput("table")) 

server <- shinyServer(function(input, output,session) { 

    values <- reactiveValues() 
    observeEvent(input$plot_date_window,{ 
    value1 <- input$plot_date_window[[1]] 
    value2 <- input$plot_date_window[[2]] 
    value1 <- sub("Z", "", value1) 
    value2 <- sub("Z", "", value2) 
    value1 <- str_sub(value1,takeLastnvalues,-1) 
    value2 <- str_sub(value2,takeLastnvalues,-1) 
    values$v1 <- as.numeric(value1) 
    values$v2 <- as.numeric(value2) 
    }) 

    output$plot <- renderDygraph({ 
    indoConc %>% 
     dygraph %>% 
     dyRangeSelector 
    }) 

    output$table <- renderTable({ 
    indoConc %>% 
     filter(time >= min(values$v1), time <= max(values$v2)) %>% 
     summarise(total_conc = sum(conc)) 
    }) 
}) 

shinyApp(ui, server) 

enter image description here

+0

整数だけを抽出できることに注意してください。 (あなたのスクリーンショット 'values $ v1 = 2'と' values $ v2 = 4') – GyD

+0

@GyD私はそれも気付きました。私の設定に固有の制限か、またはこれらのエンドポイントの「完全な」価値を得る方法があるのでしょうか? – ClaytonJY

+0

私は修正に取り組んでいましたが、タイムスタンプがミリ秒の範囲にある 'dygraphs'自身と関係していました。あなたは 'time'変数を何千ものに変更し、選択時にそれを戻すことができます –

関連する問題