2017-01-22 9 views
0

add_traceで手作業で追加したグラフがたくさんあります。私は、チェックボックスを選択することによってグラフに表示される行を選択できるようにしたいと思います。私はまた、チェックボックスがいくつかの変数を表すことができるようにしたいと思います。たとえば、 "Choice A"というチェックボックスをチェックすると、varoneとvartwoの行が返されます。光沢のあるチェックボックス入力に基づいたRプロットグラフのトレースを選択

私はすべてを試したような気がするが、運がなかった。私はさまざまな反応関数を試しましたが、変数が列にあり、各トレースが個々の列を選択しているので、それらを動作させることができませんでした。したがって、以下のコードに反応性を含めませんでした作業。ヘルプは非常に高く評価されるだろう!

library(shiny) 
library(plotly) 
library(shinythemes) 

mydataset <-data.frame(date = c("12/01/2016", "12/02/2016", "12/03/2016"), 
       varone = c(60, 65, 80), 
       vartwo = c(90, 45, 100), 
       varthree = c(15, 120,201)) 


ui <- shinyUI(
    navbarPage(theme=shinytheme("journal"), "My Dashboard", 
    tabPanel("Data", 
    fluidPage(
     fluidRow(
     column(2, dateRangeInput("daterange1", label = h5("Date Range:"), 
           start = "2001-01-01", 
           end = "2010-12-31"), 
       br(), 
       checkboxGroupInput("mydataset", label = h5("Variables:"), 
            c("Choice A" = "varone", 
            "Choice B" = "vartwo", 
            "Choice C" = "varthree"))),#close column 
     column(10, plotlyOutput("plot")) 
    ))))) 


server <- function(input, output) { 
output$plot <- renderPlotly({ 
plot_ly(x = mydataset$date, y = mydataset$varone, name = 'varone', type = 'scatter', mode = 'lines') %>% 
    add_trace(x = mydataset$date, y = mydataset$vartwo, name = 'vartwo', mode = 'lines+markers')%>% 
    add_trace(x = mydataset$date, y = mydataset$varthree, name = 'varthree', mode = 'lines+markers') 
    })} 

shinyApp(ui ,server) 
+0

多分このhttp://stackoverflow.com/questions/36799857/r-shiny-to-select-traces-for-plotly-line-chartは選択してグラフ上に表示される行を選択し、」 – MLavoie

+0

を助けることができますチェックボックス "btwは既にプロットされて実装されています。凡例で表示したい行をクリック/アンクリックするだけです。 – MLavoie

+0

お返事ありがとうございます。私は、痕跡を選択したり選択解除したりできる伝説について知っています。私はチェックボックスでそれらをグループ化したいので、非常に多くの変数があります。それが前の答えが役に立たない理由でもあります。 – tika

答えて

0

このような機能はありますか?

しかし、まずは、あなたのデータセットを広範囲から長いものに変えることをお勧めします。あなたの選択のたびに、あなたはグループでそれらを持つことができます。

library(reshape2) 

mydataset_long <- melt(mydataset, id.vars=c("date")) 

ui <- shinyUI(
    navbarPage(theme=shinytheme("journal"), "My Dashboard", 
      tabPanel("Data", 
         fluidPage(
         fluidRow(
          column(2, dateRangeInput("daterange1", label = h5("Date Range:"), 
                start = "2001-01-01", 
                end = "2010-12-31"), 
           br(), 
           selectInput("mychoice", "Variables", 
                c("Choice A", 
                 "Choice B", 
                 "Choice C"))),#close column 
          column(10, plotlyOutput("myPlot")) 
         ))))) 


server <- function(input, output) { 
    output$myPlot = renderPlotly({ 

    if(identical(input$mychoice, "Choice A")) { 
     mydataset_long_s <- mydataset_long %>% filter(variable == "varone") 
     plot_ly(data=mydataset_long_s, x=~as.Date(date), y=~value, line = list(shape="linear")) 
    } else { 
     if(identical(input$mychoice, "Choice B")) { 
     mydataset_long_s <- mydataset_long %>% filter(variable == "vartwo") 
     plot_ly(data=mydataset_long_s, x=~as.Date(date), y=~value, line = list(shape="linear")) 
    } else { 
     mydataset_long_s <- mydataset_long %>% filter(variable == "varthree") 
     plot_ly(data=mydataset_long_s, x=~as.Date(date), y=~value, line = list(shape="linear")) 
     } 
    } 

}) 
    } 

shinyApp(ui, server) 
+0

ありがとうございます!とても役に立ちました!明確にするために、 "選択肢A"のプロットを "varone"と "vartwo"の両方にしたい場合、どうすれば "vartwo"をfilter()引数に追加できますか? – tika

+0

これはうまくいくはずです:filter(変数== "varone"&変数== "vartwo")またはフィルタ(変数== "varone" |変数== "vartwo") – MLavoie

+0

もう一度ありがとうございます! – tika

関連する問題