[英]How to modularize a dynamic ggvis chart in shiny?
我的應用程序有幾個圖表,我想在一個sperate腳本中繪制它們,以便有一個更干凈的server.R
,然后只包含bind_shiny
調用。
此外,因為我想回收我的圖表的一些構建塊,我想分割腳本以在較小的代碼部分中繪制圖表。
是的,我有一個chart.R文件是這樣的:
chart1 <- reactive({
cars %>%
ggvis(~speed)
})
chart2 <- reactive({
chart1 %>% layer_bars()
})
當然不需要反應性,但它將在我的原始應用中。
然后,我想在服務器上調用圖表.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')
)
)
)
)
我注意到一切都在chart.R中,當我把所有東西都放在一個對象中時,如果我拆分了多個部分繪制圖表的功能,那就不行了。 但是,這樣的事情有效
> a <- cars %>%
+ ggvis(~speed)
> a
Guessing layer_histograms()
Guessing width = 0.5 # range / 42
> a %>% layer_bars()
任何人都可以解釋如何解決這個問題以及為什么我的兩步法在R中起作用但在Shiny中不起作用?
如果你的問題是,你不能看到的情節,那是因為在你的第二個recative
語句,你需要參考chart1
為chart1()
換句話說,將charts.R
更改為
Charts.R
chart1 <- reactive({
cars %>%
ggvis(~speed)
})
chart2 <- reactive({
chart1() %>% layer_bars()
})
如果您想了解更多有關反應性的信息,請查看此鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.