【问题标题】:Use googleVis in Shiny在 Shiny 中使用 googleVis
【发布时间】:2016-05-31 13:15:00
【问题描述】:

我正在开发一个闪亮的应用程序,让用户能够为不同的变量选择时间线图。为了说明,我想使用以下数据:

datTL <- data.frame(Position=c(rep("President", 3), rep("Vice", 3)),
                    Name=c("Washington", "Adams", "Jefferson",
                           "Adams", "Jefferson", "Burr"),
                    start=as.Date(x=rep(c("1789-03-29", "1797-02-03", 
                                          "1801-02-03"),2)),
                    end=as.Date(x=rep(c("1797-02-03", "1801-02-03", 
                                        "1809-02-03"),2)))

这是我想出的:

#ui.R
library(shiny)
library(googleVis)
shinyUI(bootstrapPage(
  selectInput('id','select a name',choices = as.character(unique(datTL$Name))),
  htmlOutput('timeline')
))

#server.R
shinyServer(function(input,output){
  datainput=reactive({daTL[daTL$Name==input$id,]})
  output$timeline=renderGvis({gvisTimeline(data=datTL,
                          rowlabel="Name",
                          barlabel="Position",
                          start="start",
                          end="end")})
})

使用我的代码,我可以创建一个带有下拉列表的应用程序,其中包括总统的姓名和所有总统的时间线图。我正在努力的是使用将下拉列表与时间线图链接,以便用户可以通过从列表中选择名称来过滤图。有人可以帮帮我吗?

【问题讨论】:

    标签: r shiny googlevis


    【解决方案1】:

    这是工作服务器代码。您的代码中有一些错字,反应式也用作datainput()。

    shinyServer(function(input,output){
        datainput=reactive({datTL[datTL$Name==input$id,]})
        output$timeline=renderGvis({
            gvisTimeline(data=datainput(),
                                                 rowlabel="Name",
                                                 barlabel="Position",
                                                 start="start",
                                                 end="end")})
    })
    

    【讨论】:

    • 嗨@warmoverflow,感谢您的回答。我只是想知道是否可以将datainput 函数包装到renderGivs 函数中?
    • 应该可以。只需删除reactive。但它不是一个函数,只是一个变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多