2016-05-24 2 views
1

私はgigvisチャートを、ユーザーの入力とインタラクティブにしたいという私の光沢のあるアプリに入れました。ggvisチャートのメインタイトルをShiny入力で対話的にする

次の投稿: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

貼り付けと同じようにタイトルを付けることができます。しかし、これを動作させるには 'ggvis'の部分を' ggivs(... ')から' bind_shiny'を使って 'observe({}) 'にラップする必要があります。 –

+0

私は理解していません。私はobserve()をShinyでまだ使っていません...また、なぜこれがエラーを投げているのか知っていますか? – chungkim271

答えて

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光沢がなければ、あなたのプロットの反応性をどのように処理するのか理解できません。

+0

説明に余分に感謝! – chungkim271

+0

コードがadd_axis( "x"、orient dataTable()$ a [1]は、リアクティブ関数を実行すると固定の文字列であるため、私は奇妙に思えます。また、dataTable $ a [1]で無駄にしようとしました) – chungkim271

関連する問題