闪亮的用户界面仅显示一个图

时间:2019-06-13 15:24:38

标签: r ggplot2 shiny

我使用Shiny和ggplot2创建了一个交互式图。我在有4个绘图的地方使用radioButtons,并通过为2个radioButtons中的每一个选择两个可能的按钮之一来打印图形(年龄/性别)。

ui <- fluidPage(
            titlePanel(title=h3("Life", align="center")),
            sidebarPanel( 
            radioButtons('gender', "Choose Gender:", choices = c('Males' = 'm', 'Females' ='f')),
            radioButtons('age', "Choose Age:", choices = c('At birth' = 'b', 'At Age 65' ='s'))),

            mainPanel(plotOutput("plot2"))
            )

。     服务器<-功能(输入,输出){

output$plot2<-renderPlot({
    if (input$gender == 'f' & input$age == 'b') { 
        ggplot(df, aes(x = year, y = value, group = variable, color=variable)) +  ...

为了打印第二个:

if (input$gender == 'm' & input$age == 'b') 
    { 
        ggplot() ...}

为了打印第三个图:

if (input$gender == 'm' & input$age == 's') 
    { ggplot ...}

为了打印4个图:

if (input$gender == 'm' & input$age == 's') 
    {etc.... }

每个图都有4个数据框,没有光泽的图效果很好。

我的问题是,闪亮的ui仅显示最后一个图,对于其他3个,输出为空白?

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您必须使用else if

output$plot2 <- renderPlot({
    if (input$gender == 'f' && input$age == 'b') { 
        ggplot(df, aes(x = year, y = value, group = variable, color=variable)) + ...
    } else if (input$gender == 'm' && input$age == 'b') { 
        ggplot() ...
    } else if ....
})

否则,您的表达式仅返回最后一个if,如果不满足条件,则返回NULL