我的闪亮应用程序中有一个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)
感谢您的帮助。
答案 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
闪亮不明白如何处理你的情节中的反应。