2016-07-07 5 views
4

私のアプリにはいくつかのチャートがあり、清潔度がserver.Rにはbind_shinyコールしか含まれないようにするために、それらを適切なスクリプトで描画したいと考えています。光沢のあるダイナミックなggvisチャートをモジュール化するには?

また、私は自分のグラフのビルディングブロックの一部をリサイクルしたいので、スクリプトを分割して、グラフの小さな部分にグラフを描画したいと思います。

右は知っている、私はこのようなcharts.Rファイルがあります:

chart1 <- reactive({ 
    cars %>% 
    ggvis(~speed) 

}) 

chart2 <- reactive({ 
    chart1 %>% layer_bars() 
}) 

反応性はもちろん必要ありませんが、それは私の元のアプリケーションになります。

その後、私はこの方法server.R上のチャートを呼び出すしたいと思います:

library(shiny) 
library(ggvis) 
source("charts.R") 
shinyServer(function(input, output) { 

chart2 %>% 
    bind_shiny("test1", "test1_ui") 
}) 

ui.R

library(shiny) 
library(ggvis) 
shinyUI(fluidPage(

    fluidRow(titlePanel("My app")), 

    fluidRow(
      column(12, 
       tags$h1("hello"), 
       ggvisOutput('test1') 
       ) 
    ) 
    ) 
) 

私はすべてがcharts.Rで動作気づきました私はすべてのオブジェクトを1つのオブジェクトに入れますが、グラフを描画する関数を分割して複数の部分に分割してもそれはありません。しかし、このようなものがあります

誰もが問題の解決方法を説明でき、なぜ私の2ステップアプローチはRで動作しますが、Shinyでは動作しないのですか?

答えて

0

2番目のrecativeステートメントでchart1chart1()とする必要があるため、プロットが表示されないという問題が発生した場合は、あなたは反応性についての詳細を知りたい場合は、thisリンクをご覧ください

chart1 <- reactive({ 
      cars %>% 
       ggvis(~speed) 
}) 

chart2 <- reactive({ 
      chart1() %>% layer_bars() 
}) 

言い換えれば、あなたのcharts.R

にCharts.R変更。

関連する問題