在闪亮的应用程序图上只获得一条直线

时间:2018-03-08 23:07:00

标签: r ggplot2 shiny

我有一个名为datatest的数据框,有3列(第一个名为Date,包含日期(按顺序),字符格式,另外两个包含数值(命中数),分别命名为Hits1和Hits2)。我想创建一个Shiny应用程序,我选择了Hits1或Hits2,它会显示作为日期函数的命中数。

当我运行下面的代码时,我没有收到任何错误消息,但图表只显示一条扁平线......

library(shiny)
library(ggplot2)        

ui <- fluidPage(    

      # Generate a row with a sidebar
      sidebarLayout(      

        # Define the sidebar with one input
        sidebarPanel(
          selectInput("word", "Word", 
                      choices=c('Hits1','Hits2'),
                      selected='Hits1'
          )),

      # Create a spot for the lineplot
      mainPanel(
        plotOutput(outputId="lineplot")  
      )
    ))


    # Define a server for the Shiny app
    server <- function(input, output) {

      # Fill in the spot we created for a plot
      output$lineplot <- renderPlot({

        # Render a lineplot
        ggplot(datatest, aes(x=Date, y=input$word, group=1)) + geom_line()
      })
    }
    shinyApp(ui, server)

我真的不明白问题出在哪里,因为当我只是运行ggplot行时图表是正确的

ggplot(datatest, aes(x=Date, y=Hits1,group=1)) + geom_line()

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当您在命令行中键入它时,您将y变量作为y=Hits1传递,但在Shiny应用程序中input$word是一个字符串,所以它是{{ 1}}。

在ggplot中,创建y="Hits1"用于传入字符串而不是直接声明它(see here)。您还需要添加aes_以将每个字符串转换为as.name对象(R知道指的是数据集中的变量)。

name