有光泽的:根据输入从源文件中绘制图形

时间:2014-12-06 14:08:52

标签: r graph shiny

所以我尝试闪亮,我有一个问题。

我想要的是一个selectinput你可以选择不同的选项并得到一个特定的图表。这些不同的图是已在源文件中创建的ggplot2图。所以只需要调用图表。但是,我似乎并没有弄清楚如何做到这一点。图是ggplot2图,它们很好,它们加载完美,所以我认为这不是问题。

我还想要一个取决于selectinput的文本输出。

所以这是我的服务器脚本:

shinyServer(
  function(input, output) {
    output$map <- renderPlot({
      plot <- switch(input$activity, 
                    "" = NULL,
                    "act1" = plot1,
                    "act2" = plot2,
                    "act3" = plot3,
                    "act4" = plot4,
                    "act5" = plot5,
                    "act6" = plot6)
     plot
   }),
   output$text1 <- renderText({ 
     text <- switch(input$Activiteit, 
            "" = NULL,
            "act1" = paste("blabla"),
            "act2" = paste("blabla2"),
            "act3" = paste("blabla3"),
            "act4" = paste("blabla4"),
            "act5" = paste("blabla5"),
            "act6" = paste("blabla6")
            )
     text
   })

 }
 )

有一件事我不确定是否必须加载源文件。我现在加载它在主文件中你运行的应用程序。我也可以理解你必须在服务器文件中加载它。

然而,这不是唯一的问题,因为文本也没有显示在闪亮的输出中。所以我的代码必须出错。 ui脚本提供正确的输出,因此这不是问题。我希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

.Hi,您不需要在server.R中的2个输出之间使用逗号,而"" = NULL,中不需要switch。试试这个例子:

## ui.R
shinyUI(fluidPage(
selectInput(inputId = "Activiteit", label = "", choices = c("", paste0("act", 1:6))),
h2("Your text"),
textOutput(outputId = "text1"),
h2("Your graph"),
plotOutput(outputId = "map")
))

## server.R
shinyServer(
function(input, output) {
   output$map <- renderPlot({
     p <- switch(input$Activiteit, 
                 "act1" = p1,
                 "act2" = p2,
                 "act3" = p3,
                 "act4" = p4,
                 "act5" = p5,
                 "act6" = p6)
    print(p)
  })
  # no comma here
  output$text1 <- renderText({ 
   text <- switch(input$Activiteit, 
                 "act1" = paste("blabla"),
                 "act2" = paste("blabla2"),
                 "act3" = paste("blabla3"),
                 "act4" = paste("blabla4"),
                 "act5" = paste("blabla5"),
                 "act6" = paste("blabla6")
  )
  return(text)
  })

  }
 )

## global.R
# you can source files here
library(ggplot2)
p1 <- qplot(1:10, rnorm(10), colour = runif(10))
p2 <- qplot(1:20, rnorm(20), colour = runif(20))
p3 <- qplot(1:30, rnorm(30), colour = runif(30))
p4 <- qplot(1:40, rnorm(40), colour = runif(40))
p5 <- qplot(1:50, rnorm(50), colour = runif(50))
p6 <- qplot(1:60, rnorm(60), colour = runif(60))

希望它有所帮助。