使用Shiny输入在ggvis图表中创建一个主标题

时间:2016-05-24 16:49:06

标签: r shiny ggvis

我的闪亮应用程序中有一个ggvis图表,其标题我希望与用户输入互动。

在这篇文章之后:Add a plot title to ggvis,我能够为我的图表添加一个标题,但显然使它具有交互性并不像我想象的那么简单。

下面的

是可重复性最小的例子。

library(shiny)
library(ggvis)

example <- data.frame(a=c("apple", "pineapple", "grape", "peach"), b=11:14)

ui <- fluidPage (
    selectInput(inputId="option",
                label=NULL,
                choices= levels(example$a),
                selected="apple"),
    ggvisOutput("chart")
)

server <- function(input, output) {
    dataTable <- reactive({
        df <- example[example$a==input$option, ]
        df
    })

    ggvis(data=dataTable, x=~a, y=~b) %>%
        layer_bars() %>%
        add_axis("x", title="fruits") %>%
        add_axis("x", orient = "top", ticks = 0, title = "???", #I want: paste("chosen option is", input$option),
                 properties = axis_props(
                     axis = list(stroke = "white"),
                     labels = list(fontSize = 0))) %>%
        bind_shiny("chart")
}

shinyApp(ui=ui, server=server)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

对于您的服务器,请执行以下操作:

server <- function(input, output) {
    dataTable <- reactive({
        df <- example[example$a==input$option, ]
        df
    })
    observe({
      ggvis(data=dataTable, x=~a, y=~b) %>%
        layer_bars() %>%
        add_axis("x", title="fruits") %>%
        add_axis("x", orient = "top", ticks = 0, 
                 title = paste("chosen option is", input$option),
                 properties = axis_props(
                     axis = list(stroke = "white"),
                     labels = list(fontSize = 0))) %>%
        bind_shiny("chart")
   })
}

observe将此全部置于“反应式上下文”中,允许您在情节中使用input$option。没有observe闪亮不明白如何处理你的情节中的反应。