如何模块化闪亮的动态ggvis图表?
How to modularize a dynamic ggvis chart in shiny?
我的应用程序有一些图表,我想用单独的脚本绘制它们,以便更清晰 server.R
,然后只包含 bind_shiny
个调用。
此外,因为我想回收我图表的一些构建块,所以我想拆分脚本以用更小的代码部分绘制图表。
没错,我有一个这样的 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 中的所有内容都有效,但如果我将绘制图表的函数拆分为多个部分,则情况并非如此。然而,像这样的东西是有效的
> 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()
})
如果您想了解有关反应性的更多信息,请查看 this link。
我的应用程序有一些图表,我想用单独的脚本绘制它们,以便更清晰 server.R
,然后只包含 bind_shiny
个调用。
此外,因为我想回收我图表的一些构建块,所以我想拆分脚本以用更小的代码部分绘制图表。
没错,我有一个这样的 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 中的所有内容都有效,但如果我将绘制图表的函数拆分为多个部分,则情况并非如此。然而,像这样的东西是有效的
> 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()
})
如果您想了解有关反应性的更多信息,请查看 this link。