r语言 - 这个闪亮的代码有什么问题?Ggplot 不渲染,下拉菜单渲染



我正在学习如何使用Shiny,我试图在ggplot2中创建一个非常简单的条形图,带有下拉菜单,允许用户使用下拉菜单从学校选择班级,并且应该创建一个条形图,考试成绩百分比在y轴上和x轴上的名称。我的代码如下:

ui = fluidPage(selectInput(inputId = "Class", label = "Pick a Class", choices = levels(fulldata$Class), plotOutput("bar"), multiple = FALSE, selectize = FALSE))
server = function(input, output){

output$bar = renderPlot({
plotdata = reactive({data %>% filter(Class == input$Class)})
ggplot(plotdata(), aes(x = Name, y = Percent_full) + geom_bar())
})
}
shinyApp(ui = ui, server = server)

最终结果正确地呈现下拉菜单,但它不呈现任何情节。我已经尝试将ggplot调用更改为简单的hist(rnorm(1000)),但它也不渲染。

我解决了这个问题:fluidPage函数中的plotOutput函数被定义为输入函数的参数,而不是fluidPage的参数。它现在工作了!

可能是您的代码需要在创建ggplot之前声明响应数据。

试试这个:

plotdata = reactive(
data %>% filter(Class == input$Class)
)
output$bar = renderPlot({
ggplot(plotdata(), aes(x = Name, y = Percent_full) + geom_bar())
})

下面是一个使用ggplot响应式数据的闪亮应用程序的示例代码:

data <- reactive(
merged_clean_data %>% filter(between(date, as.POSIXct(input$dateRange[1]),
as.POSIXct(input$dateRange[2])))
)  
#Output plot for any selected variable
output$timePlot <- renderPlot({
ggplot(data(), aes(x = date, !!input$selection)) +
theme_classic() + geom_line() +
coord_cartesian(xlim = as.POSIXct(ranges$x, origin = "1970-01-01"), expand = FALSE) +
theme(text = element_text(size = 16), axis.title.x=element_blank(), axis.text.y = element_text(angle=90, vjust=1, hjust=1)) + {if(input$hlineadd)geom_hline(yintercept = input$hline)} + 
{if(input$smoothingadd)geom_smooth()} 
}, res = 80)

最新更新