首页 > 解决方案 > 提供以闪亮的方式绘制或显示图像的选项

问题描述

我已经编写了这个闪亮的应用程序,我想在其中提供选项来选择在主面板中绘制输出或显示图像,但这不起作用,知道可以在哪里添加此选项吗?

ui <- fluidPage(
  titlePanel("time-profilling"),

  sidebarLayout(
    sidebarPanel(   
      selectInput("vari", "x-Variable:",
              c("M","N","K","heatmap" )),
    uiOutput("ui1"),
    uiOutput("ui2")
  ),

  mainPanel(
    if(input$vari == "M" || input$vari == "N" || input$vari == "K" ){
      plotlyOutput("results", height = "800px", width = "800px")
    }
    else if(input$vari == "heatmap"){
      imageOutput("image1")
      imageOutput("image2")
    }  
  )
 )
)

标签: rshinyshinydashboard

解决方案


您的示例中没有足够的内容可以使用 - 一些数据或一些绘图会有所帮助。但这里有两个想法和一个代码结构,希望能帮助你走上正确的道路......

  1. 您不能在闪亮应用程序的 UI 中放置任何逻辑。ifelse 语句应该都在服务器中,而您在这里没有。
  2. 该服务器代码应与您拥有的每个输出(绘图或图像)配对,如下所示。

修改后的代码和附加代码如下:

library(shiny)
library(plotly)
ui <- fluidPage(
  titlePanel("time-profilling"),
  sidebarLayout(
    sidebarPanel(   
      selectInput("vari", "x-Variable:",
                  c("M","N","K","heatmap" )),
      uiOutput("ui1"),
      uiOutput("ui2")
    ),
    mainPanel(
        plotlyOutput("results", height = "800px", width = "800px"),
        imageOutput("image1"),
        imageOutput("image2")
    )
  )
)

server <- function(input, output) {
  output$results <- renderPlotly({
    if(input$vari == "M" || input$vari == "N" || input$vari == "K" ) {
      ## Plotly code goes here
    }
    return(NULL)
  })

  output$image1 <- renderImage({
    if(input$vari == "heatmap"){
      ## Pre-rendered image code goes here
    }
    return(NULL)
  })

  output$image2 <- renderImage({
    if(input$vari == "heatmap"){
      ## Pre-rendered image code goes here
    }
    return(NULL)
  })
}

shinyApp(ui, server)

现在输入不提供任何东西,因为您需要输入代码来绘制绘图或查找图像,但结构应该可以正常工作。


推荐阅读