问题描述
在以下可见网络中,我有 2 组节点。通过在生成 layput_as_tree
后访问节点位置,我已将 2 组节点分为左侧和右侧。现在想在节点组周围画一个圆或椭圆。
这是一个可重现的例子
require(shiny)
require(visNetwork)
server <- function(input,output) {
output$network <- visNetwork::renderVisNetwork({
edges <- data.frame(
from = sample(1:10,8),to = sample(1:10,label = paste("interaction type",1:8),length = c(100,500),width = c(4,1),arrows = c("to","from","middle","middle;to"),dashes = c(TRUE,FALSE),title = paste("interaction name",smooth = c(FALSE,TRUE),shadow = c(FALSE,TRUE,FALSE,TRUE)
)
nodes <- data.frame(
id = 1:10,group = c("A","B"),label = paste("Node",1:10),shape = "ellipse"
)
# save the graph in variable
g <-
visNetwork::visNetwork(nodes,edges,height = "500px",width = "100%") %>%
visNetwork::visIgraphLayout(layout = "layout_as_tree")
# access the x and y co-ordinates to arrange the groups
coords <- g$x$nodes %>%
dplyr::mutate(x = abs(x)) %>%
dplyr::mutate(y = abs(y)) %>%
dplyr::mutate(x = ifelse(group %in% "A",-x,x)) %>%
dplyr::select(x,y) %>%
as.matrix()
#' replot the network with the new co-ordinates
visNetwork::visNetwork(nodes,width = "100%") %>%
visNetwork::visIgraphLayout(
layout = "layout.norm",layoutMatrix = coords,randomSeed = 1,smooth = T
)
})
}
ui <- shiny::fluidPage(
visNetwork::visNetworkOutput("network",width = "1000px",height = "700px"
)
)
shiny::shinyApp(ui = ui,server = server)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)