2016-05-02 2 views
1

Im пытается создать блестящее приложение, которое позволяет мне фильтровать данные лиг. Это пример набора данных:Связывание параметров выбора в блестящем

list <- c(2.3, 2.5, 2.6, 2.8, 4.12, 5.3, 6.2, 8.2) 
team <- c("A", "A", "A", "A", "B", "B", "B", "B") 
time <- c(1,2,3,4,5,6,7,8) 
league <- c("A", "B","A", "B","A", "B","A", "B") 

df <- data.frame(list, team, time, league) 

Im черчения данные теперь используют следующие сценарии:

#ui script 
shinyUI(fluidPage(
titlePanel("Basic widgets"), 

fluidRow(

    column(3, 
     h3("Buttons"), 

     selectInput("select", label = h3("Select box"), 
        choices = list("Choice 1" = 1, "Choice 2" = 2), selected = 1)), 

    mainPanel(
    plotOutput("distPlot") 
    ) 
) 
)) 

и сценарий сервера:

library(shiny) 

shinyServer(function(input, output) { 

output$distPlot <- renderPlot({ 

list <- c(2.3, 2.5, 2.6, 2.8, 4.12, 5.3, 6.2, 8.2) 
team <- c("A", "A", "A", "A", "B", "B", "B", "B") 
time <- c(1,2,3,4,5,6,7,8) 
league <- c("A", "B","A", "B","A", "B","A", "B") 

df <- data.frame(list, team, time, league) 
ggplot(df, aes(x = time, y = list, colour = team)) + geom_line() 
}) 
}) 

Это показывает мне линию обе эти лиги. Но я хотел бы добиться того, что я могу выбрать «Choice1» и «Choice2», а соответствующие точки данных показаны на графике. Любое предложение, как я могу связать избранные варианты с уникальными значениями лиги?

ответ

0

Не совсем ясно, каков ваш ожидаемый результат. Однако, я думаю, что вы спрашиваете, как изменить сюжет, учитывая выбор в selectInput?

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

Примечание: Я сделал свое приложение в single-file shiny app

library(shiny) 
library(ggplot2) 

ui <- fluidPage(
    titlePanel("Basic widgets"), 

    fluidRow(

     column(3, 
        h3("Buttons"), 

        selectInput("select", label = h3("Select box"), 
              choices = list("A", "B"), selected = 1, multiple = TRUE)), 

     mainPanel(
      plotOutput("distPlot") 
     ) 
    ) 
) 

server <- function(input, output) { 

    list <- c(2.3, 2.5, 2.6, 2.8, 4.12, 5.3, 6.2, 8.2) 
    team <- c("A", "A", "A", "A", "B", "B", "B", "B") 
    time <- c(1,2,3,4,5,6,7,8) 
    league <- c("A", "B","A", "B","A", "B","A", "B") 

    df <- data.frame(list, team, time, league) 

    output$distPlot <- renderPlot({ 

     ## make the plot reactive depending on the input of the selectInput 'select'. 
     df_plot <- df[df$league %in% input$select, ] 
     ## every time you make a change to selectInput 'select', this plot will update 

     ggplot(df_plot, aes(x = time, y = list, colour = team)) + 
      geom_line() 

    }) 
} 

shinyApp(ui = ui, server = server) 
Смежные вопросы