条形图的X轴在Rshiny中不会更新

时间:2017-11-27 06:49:56

标签: r rstudio shiny

以下是我的示例数据,我想写一个闪亮的应用程序来显示我的页面上的反应情节,但它有问题。

enter image description here

我的问题是当我在条形图中选择x轴时,闪亮的情节不会更新,但y轴可以更新,所以我不知道问题出在哪里以及如何解决这个问题?

enter image description here

ui.R

library(shiny)
library(dplyr)
library(ggplot2)

#Data Input# 
Sample <- read.table("D:/Sample.csv", sep = ",", header = T) %>%
  subset(., select = c(2, 3, 4, 5, 6))

#Data Manipulation#
Sample[, c(3:5)] <- sapply(Sample[, c(3:5)], as.factor)
Catego.x <- colnames(Sample[, 3:5])
Catego.y <- colnames(Sample[, 3:5])
Conti <- colnames(Sample[, 1:2])

#ui.R#
shinyUI(navbarPage(
  "Recommendation System",
  navbarMenu(
    "Plot",
    tabPanel("Boxplot", 
             sidebarPanel(
               selectInput(inputId = "Conti",
                           label = "Continuous Variables:",
                           choices = Conti),
               selectInput(inputId = "Catego.x",
                           label = "Categories Variables:",
                           choices = Catego.x)
             ),
             mainPanel(
               plotOutput("boxplot")
             )),
    tabPanel("Barchart",
             sidebarPanel(
               selectInput(inputId = "Catego.x",
                           label = "Categories Variables.x:",
                           choices = Catego.x),
               selectInput(inputId = "Catego.y",
                           label = "Categories Variables.y:",
                           choices = Catego.y)
             ),
             mainPanel(
               plotOutput("barchart")
             ))
  )
))

server.R

library(shiny)

#Data Input#
Sample <- read.table("D:/Sample.csv", sep = ",", header = T) %>%
  subset(., select = c(2, 3, 4, 5, 6))

#Data Manipulation#
Sample[, c(3:5)] <- sapply(Sample[, c(3:5)], as.factor)
Catego.x <- colnames(Sample[, 3:5])
Catego.y <- colnames(Sample[, 3:5])
Conti <- colnames(Sample[, 1:2])

#server.R#
shinyServer(function(input, output){
  output$boxplot <- renderPlot({
    ggplot(data = Sample, aes_string(x = input$Catego.x, y = input$Conti, group = input$Catego.x)) +
      geom_boxplot()
  })
  output$barchart <- renderPlot({
    ggplot(data = Sample, aes_string(x = input$Catego.x, y = input$Catego.y, fill = input$Catego.y)) + 
      geom_bar(stat = "identity")
  })
})

1 个答案:

答案 0 :(得分:0)

我的猜测是造成问题的原因是eventHandler

您应该在用户界面中添加actionButton,在服务器部分添加eventHandler

UI:

shinyUI(navbarPage(
  "Recommendation System",
  navbarMenu(
    "Plot",
    tabPanel("Boxplot", 
             sidebarPanel(
               selectInput(inputId = "Conti",
                           label = "Continuous Variables:",
                           choices = Conti),
               selectInput(inputId = "Catego.x",
                           label = "Categories Variables:",
                           choices = Catego.x)
             ),
             mainPanel(
               plotOutput("boxplot")
             )),
    tabPanel("Barchart",
             sidebarPanel(
               selectInput(inputId = "Catego.x",
                           label = "Categories Variables.x:",
                           choices = Catego.x),
               selectInput(inputId = "Catego.y",
                           label = "Categories Variables.y:",
                           choices = Catego.y),
actionButton(
          inputId = "submit_loc",
          label = "Submit"),
             ),
             mainPanel(
               plotOutput("barchart")
             ))
  )
))

服务器:

shinyServer(function(input, output){
  observeEvent(
    eventExpr = input$submit_loc,
    handlerExpr = 
    {
  output$boxplot <- renderPlot({
    ggplot(data = Sample, aes_string(x = input$Catego.x, y = input$Conti, group = input$Catego.x)) +
      geom_boxplot()
  })
  output$barchart <- renderPlot({
    ggplot(data = Sample, aes_string(x = input$Catego.x, y = input$Catego.y, fill = input$Catego.y)) + 
      geom_bar(stat = "identity")
  })
})
})

试试这个并告诉我。