以下是我的示例数据,我想写一个闪亮的应用程序来显示我的页面上的反应情节,但它有问题。
我的问题是当我在条形图中选择x轴时,闪亮的情节不会更新,但y轴可以更新,所以我不知道问题出在哪里以及如何解决这个问题?
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")
})
})
答案 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")
})
})
})
试试这个并告诉我。