2016-11-24 13 views
0

ハイハターパッケージを使用してR-Shinyプロジェクトに財務時間セリフをプロットしており、ユーザーがインジケータ(移動平均など)をチャートに追加できるようにします。これを行うために、ifステートメントサーバー側にhc_add_series_xts()という条件を付けました。それはうまく動作しますが、誰かが指標を追加するたびに、チャートが完全にリロードされますが、私は動的な更新を望みます。それを作る方法はありますか?R Shiny Highcharter - フルリロードのないシリーズを追加する

より良い私の場合を説明するために、これは、単一のページシャイニー例を次に示します。

library(shiny) 
library(quantmod) 
library(highcharter) 
library(TTR) 


ui <- fluidPage(

     mainPanel(
     highchartOutput("hc"), 
     checkboxInput("indicator","Add Moving Average") 
    ) 
) 


server <- function(input, output) { 

    output$hc <- renderHighchart({ 

    y <- getSymbols("MSFT", auto.assign=FALSE) 

    hc <- highchart() %>% 
      hc_exporting(enabled = TRUE)%>% 
      hc_add_series_ohlc(y) %>% 
      hc_add_theme(hc_theme_538(colors = c("red", "blue", "green"), 
            chart = list(backgroundColor = "white"))) 

    if(input$indicator){hc <- hc %>% hc_add_series_xts(name = "Moving Average", EMA(Cl(y)))} 

    return(hc) 
    }) 

} 


shinyApp(ui = ui, server = server) 

PS:私は意図的に知覚できる「フルreaload」イベントを作るためにavaibleですべての歴史的な価格を呼び出します。

答えて

0

あなたの例では、jbkunstメソッドは私よりはるかに優れています。特に、グラフのレンダリング(ui)は、それを構築するよりもはるかに時間がかかります(server)。

server <- function(input, output) { 
    y <- getSymbols("MSFT", auto.assign=FALSE) 
    hc <- highchart() %>% 
      hc_exporting(enabled = TRUE)%>% 
      hc_add_series_ohlc(y) %>% 
      hc_add_theme(hc_theme_538(colors = c("red", "blue", "green"), 
            chart = list(backgroundColor = "white"))) 

    output$hc <- renderHighchart({ 
    hc_now <- hc 
    if(input$indicator){hc_now <- hc_now %>% hc_add_series_xts(name = "Moving Average", EMA(Cl(y)))} 
    return(hc_now) 
    }) 
} 

初めてそれが取る:彼らは、レイテンシを改善することができ、選択された場合

は、しかし、いくつかのケースでは、server関数の変数に、あなたの基本的なオブジェクトをロードするの溶液は、その後、唯一の新しい指標を追加します表示するには時間がかかりません

+0

:あなたは、チェックボックスを有効にすると、チャートが完全にリロードします。 –

1

現在のところ、図はshinyを使用してチャートを更新しています。

hc_legend(enabled = TRUE)を試しましたか?したがって、凡例をクリックしてシリーズを表示または非表示にすることができます。

hc <- highchart() %>% 
    hc_exporting(enabled = TRUE)%>% 
    hc_add_series_ohlc(y) %>% 
    hc_add_theme(hc_theme_538(colors = c("red", "blue", "green"), 
          chart = list(backgroundColor = "white"))) %>% 
    hc_add_series_xts(name = "Moving Average", EMA(Cl(y)), visible = FALSE) %>% 
    hc_legend(enabled = TRUE) 

hc 

希望私は私が持っていた同じ問題に遭遇したあなたのコードの使用このヘルプ

+0

それは良いトリックですが、私のプロジェクトには多くのインジケータが含まれているので、私はそれを使うことができません。 –

+0

私はそれを得た。私はこれで助けてくれるsomethigで作業します(https://github.com/jbkunst/highcharter/issues/112) – jbkunst

+0

これは本当に面白いです!!私はより多くの更新を待っています! :D –

関連する問題