Как мне подключить мои входы к выходам моего графика - PullRequest
1 голос
/ 05 апреля 2019

Извинения, если это простой вопрос.Некоторое время я пытался понять это, и я все еще в замешательстве.Я создаю простое блестящее приложение для своего класса и до сих пор не могу понять или понять, как я соединяю свои входы с фактическим выходом графика, чтобы при выборе чего-то график менялся.

Я работаю над базовым набором данных о падениях самолетов и пытаюсь показать, как с течением времени менялись сбои и т. Д. Ниже приведен мой код.Я могу настроить входы и график, но я не знаю, где мне не хватает той части, которая соединяет их.


crash_year <- c(2016,2016,2015,2014,2015,2015)
amateur_built <- c('yes','yes','no','no','no','no')
ac_type <- c('Airplane','Airplane,'Airplane,'Helicopter','Airplane','Unknown')

dt <- data.table(crash_year,amateur_built,ac_type)

ui <- fluidPage(


  sidebarLayout(

  sidebarPanel(

    selectInput(inputId = "ac", label = "Aircraft Type:",
                choices = c('Airplane','Helicopter','Glider','Balloon','Unknown','Gyroplane','Weight-Shift','Powered Parachute','Ultralight','Rocket','Gyrocraft','Powered-Lift','Blimp'),
                selected = 'Airplane'),
    selectInput(inputId = 'pro_am', label = "Amateur Built?",
                choices = c('Yes','No'),
                selected = 'Yes')
  ),

  mainPanel(
    plotOutput(outputId = 'bar'),

    dataTableOutput(outputId = 'data'),
    br()
    )
  )
)


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


  #create barchart object
  output$bar <- renderPlot({
    ggplot(data = dt, aes(x=crash_year,y=input$ac)) + 
      geom_bar(stat = "identity")
  })

}

shinyApp(ui, server)

1 Ответ

1 голос
/ 05 апреля 2019

Ниже приведен рабочий пример. Вещи, которые я отредактировал:

One. Измените выбор pro_am select на choices = c('yes','no'), чтобы он соответствовал элементам таблицы данных.

Два. Добавьте reactive, чтобы создать реактивный объект, который поднастроит вашу таблицу данных на основе входных данных. Обратите внимание, что crash_year - конвертированный коэффициент для построения графика.

В-третьих. Измените код ggplot. Я не совсем понимаю, что вы хотите сделать, но код ggplot, который я использую, может построить гистограмму на основе значений счетчика.

Четыре. Добавьте renderDataTable, чтобы создать вывод DT.

library(shiny)
library(ggplot2)
library(data.table)
library(DT)

crash_year <- c(2016,2016,2015,2014,2015,2015)
amateur_built <- c('yes','yes','no','no','no','no')
ac_type <- c('Airplane','Airplane', 'Airplane','Helicopter','Airplane','Unknown')

dt <- data.table(crash_year,amateur_built,ac_type)


ui <- fluidPage(


  sidebarLayout(

    sidebarPanel(

      selectInput(inputId = "ac", label = "Aircraft Type:",
                  choices = c('Airplane','Helicopter','Glider','Balloon','Unknown','Gyroplane','Weight-Shift','Powered Parachute','Ultralight','Rocket','Gyrocraft','Powered-Lift','Blimp'),
                  selected = 'Airplane'),
      selectInput(inputId = 'pro_am', label = "Amateur Built?",
                  choices = c('yes','no'),
                  selected = 'yes')
    ),

    mainPanel(
      plotOutput(outputId = 'bar'),

      dataTableOutput(outputId = 'data'),
      br()
    )
  )
)


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

  # Subset dt based on the input
  dt_sub <- reactive({
    dt2 <- dt[, crash_year := factor(crash_year)][amateur_built == input$pro_am & ac_type == input$ac, ]
    return(dt2)
    })

  #create barchart object
  output$bar <- renderPlot({
    ggplot(data = dt_sub(), aes(x = crash_year, fill = ac_type)) + 
      geom_bar(position = "dodge")
  })

  # Output the data table
  output$data <- renderDataTable({
    dt_sub()
  })
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...