IT干货网

R visNetwork : Multiple graph layout

xmjava 2024年10月25日 编程设计 20 0

我想并排放置两个 visNetwork 图以进行视觉比较。使用带有 par() 或 layout() 的 igraph 可以进行多图定位。有没有办法为 visNetwork 做到这一点?解决方法/问题(包括 RShiny 等)是可以接受的答案 - 提供并排 visNetwork 显示的任何方法。请注意,ID 号等重叠,因此将两个网络放入同一个图中将需要大量数据操作,而我希望避免这种操作。

这是我正在尝试做的事情的示例。

library(visNetwork) 
 
# Network 1 
nodes1 <- data.frame(id = 1:3) 
edges1 <- data.frame(from = c(1,1), to = c(2,3)) 
 
# Network 2 
nodes2 <- data.frame(id = 1:4) 
edges2 <- data.frame(from = c(1,1,2,2), to = c(2,3,4,3)) 
 
# Plot both networks side-by-side? 
par(mfrow=c(1,2))  # Want something like this (does not work) 
visNetwork(nodes1, edges1) %>% visEdges(arrows = 'from')   
visNetwork(nodes2, edges2) %>% visEdges(arrows = 'from') 

干杯, 蒂姆

请您参考如下方法:

如果给予完全的自由,我会选择 flexdashboard。这是一个方便的 rmarkdown 模板,用于创建交互式仪表板,从简单快速的仪表板到精心设计的复杂仪表板。

install.packages('flexdashboard') 

然后从模板 'Flex Dashboard' 创建一个新的 Rmd,或者将以下内容复制到一个新的 .Rmd 文件中

--- 
title: "DASHBOARD" 
output:  
    flexdashboard::flex_dashboard: 
        orientation: rows 
--- 
 
```{r, echo=FALSE} 
library(visNetwork) 
 
# Network 1 
nodes1 <- data.frame(id = 1:3) 
edges1 <- data.frame(from = c(1,1), to = c(2,3)) 
 
# Network 2 
nodes2 <- data.frame(id = 1:4) 
edges2 <- data.frame(from = c(1,1,2,2), to = c(2,3,4,3)) 
 
``` 
 
Row  
------------------------------------- 
 
### Chart 1 
 
```{r} 
visNetwork(nodes1, edges1) %>% visEdges(arrows = 'from') 
``` 
 
 
### Chart 2 
 
```{r} 
visNetwork(nodes2, edges2) %>% visEdges(arrows = 'from') 
``` 

请注意,由于布局是响应式的,Rstudio 查看器 Pane 中的默认 View 垂直堆叠图表,但扩展 Pane 或在外部浏览器中打开它会并排显示它们。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!