如何将输入连接到图形输出

时间:2019-04-05 00:54:28

标签: r shiny

很抱歉,如果这是一个简单的问题。我已经尝试了一段时间以解决这个问题,但我仍然感到困惑。我正在为我的班级构建一个简单的闪亮应用程序,但仍然无法弄清或理解我如何将输入连接到实际的图形输出,因此当我选择图形时,图形就会发生变化。

我正在研究的是基本的“飞机失事”数据集,并试图显示崩溃随时间的变化等。下面是我的代码。我可以设置输入和图形输出,但是我不知道在哪里缺少连接两者的部分。

pri_der = key.private_bytes(
    encoding=serialization.Encoding.DER,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption(),
)

1 个答案:

答案 0 :(得分:1)

下面是一个有效的示例。我编辑的内容:

一个。将pro_am选择输入选项更改为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)