我想根据各自具有自己的网络图图(networkD3)的数据在Shiny中动态创建n个选项卡。每次调用该应用程序时,它都会读取具有不断变化的数据的csv。
理想情况下,将有一个选项卡显示一个包含所有组的图形,并且每个组及其关联节点都有一个单独的选项卡。
这是针对闪亮的应用程序。我能够为每个组动态创建一个选项卡,并在一个选项卡上显示所有组的图,但是a组和b组的选项卡为空。
#### Load necessary packages and data ####
library(shiny)
library(networkD3)
#### Server ####
server <- function(input, output) {
nodes <- reactive({ # read_csv
v <- data.frame(name = LETTERS[1:6],
id = c(0, 1, 2, 3, 4, 5),
group = c('a', 'a', 'a', 'b', 'b', 'b'),
stringsAsFactors = FALSE)
return(v)
})
edges <- reactive({ #read csv
e <- data.frame(source = c(0, 1, 2, 3, 4, 5, 0),
target = c(1, 2, 0, 4, 5, 3, 5),
width = rep(1, 7),
stringsAsFactors = FALSE)
v <- nodes()
groups <- v %>%
select(group) %>%
distinct(group) %>%
arrange(group)
groups = groups$group
for (g in groups) {
v_group <- filter(v, group == g)
l <- filter(e, source %in% v_group$id | target %in% v_group$id)
n <- filter(v, id %in% l$source | id %in% l$target)
print(g)
print(l)
print(n)
p <- renderForceNetwork({
forceNetwork(Links = l,
Nodes = n,
Source = 'source',
Target = 'target',
NodeID = 'name',
Value = 'width',
Group = 'group',
opacity = 0.9,
zoom = TRUE,
arrows = TRUE,
opacityNoHover = 1,
fontSize = 14,
charge = -35)
})
appendTab(inputId = "tabs",
tabPanel(
g,
p
) # tab panel
) # append tab
}
return(e)
})
output$force <- renderForceNetwork({
forceNetwork(Links = edges(),
Nodes = nodes(),
Source = 'source',
Target = 'target',
NodeID = 'name',
Value = 'width',
Group = 'group',
opacity = 0.9,
zoom = TRUE,
arrows = TRUE,
opacityNoHover = 1,
fontSize = 14,
charge = -35)
})
}
#### UI ####
ui <- shinyUI(
fluidPage(
titlePanel("Job graph"),
mainPanel(
tabsetPanel(
id = 'tabs',
tabPanel('All jobs',
fillPage(
tags$style(
type = "text/css",
"#force {height: calc(100vh - 100px) !important; width: calc(100vw - 100px) !important;}"),
forceNetworkOutput("force")
) # fill page
) # tab panel
) # tabset Panel
) # main panel
) # fluid page
) # shiny ui
#### Run ####
shinyApp(ui = ui, server = server)
我除了类似的东西: 一个具有n个标签的仪表板,一个包含所有图解的标签,以及每个组和所有关联节点的一个标签。
在reprex中,将有三个选项卡。总而言之,组a的选项卡和组b的选项卡。
谢谢。