Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于复选框输入为R plotly graph选择轨迹_R_Shiny_Plotly_Reactive - Fatal编程技术网

基于复选框输入为R plotly graph选择轨迹

基于复选框输入为R plotly graph选择轨迹,r,shiny,plotly,reactive,R,Shiny,Plotly,Reactive,我有一个带有许多线的绘图仪,这些线是我用add_trace手动添加的。我希望能够通过选中复选框来选择图表上显示的线条。我还希望能够让复选框代表几个变量。例如,选中名为“Choice A”的复选框将返回varone和vartwo的行 我觉得我什么都试过了,但运气不好。我尝试了各种反应性函数,但无法让它们工作,因为我的变量在列中,每个跟踪选择一个单独的列,所以我没有在下面的代码中包含反应性,因为我无法让它工作。非常感谢您的帮助 library(shiny) library(plotly) libra

我有一个带有许多线的绘图仪,这些线是我用add_trace手动添加的。我希望能够通过选中复选框来选择图表上显示的线条。我还希望能够让复选框代表几个变量。例如,选中名为“Choice A”的复选框将返回varone和vartwo的行

我觉得我什么都试过了,但运气不好。我尝试了各种反应性函数,但无法让它们工作,因为我的变量在列中,每个跟踪选择一个单独的列,所以我没有在下面的代码中包含反应性,因为我无法让它工作。非常感谢您的帮助

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)
库(闪亮)
图书馆(绘本)
图书馆(shinythemes)

mydataset您喜欢这项工作吗

但首先,我建议您将数据集从宽改为长。对于您的每一项选择,您都可以分组进行

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)
library(重塑2)

mydataset_long也许这有助于“通过选择复选框选择图形上显示的线”,顺便说一句,它已经在plotly中实现了。只需单击/取消单击图例中要显示的行。感谢您的回复。我知道图例可以选择和取消选择轨迹。我有太多的变量,我想按复选框对它们进行分组。这也是为什么前面的答案没有那么有用的原因。也许你可以编辑你的帖子来反映这个要求谢谢!非常非常有帮助!为了澄清-如果我想让“选择A”同时绘制“varone”和“vartwo”,我如何将“vartwo”添加到filter()参数中?类似的操作应该可以:filter(variable==“varone”&variable==“vartwo”)或filter(variable==“varone”| variable==“vartwo”)