2017-04-20 103 views
2

我想將兩個visNetwork圖並排放置以進行視覺比較。使用帶有par()或layout()的igraph可以實現多圖的定位。有沒有辦法做到這一點visNetwork?解決方案/工具(包括RShiny等)是可接受的答案 - 無論提供並行visNetwork顯示的工作如何。請注意,身份證號碼等重疊,因此將兩個網絡放入同一個圖中將會進行大量我希望避免的數據操作。R vis網絡:多圖形佈局?

這是我嘗試做的事情類型的一個例子。

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') 

乾杯, 添

回答

4

如果完全自由給予我與flexdashboard去。這是一個方便的模板,用於創建交互式儀表板,從簡單快捷的模板到精巧複雜的模板。

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堆查看器窗格中的默認視圖垂直圖形,但是擴展窗格或在外部瀏覽器中打開它們並排顯示它們。使用閃亮

enter image description here

0

溶液通過一個app.R文件:

library(shiny) 
library(visNetwork) 

ui <- fluidPage(
    fluidRow(
    column(6, 
      visNetworkOutput('vis1')), 
    column(6, 
      visNetworkOutput('vis2')) 
) 
) 

server <- function(input, output) { 

    nodes1 <- data.frame(id = 1:3) 
    edges1 <- data.frame(from = c(1,1), to = c(2,3)) 

    nodes2 <- data.frame(id = 1:4) 
    edges2 <- data.frame(from = c(1,1,2,2), to = c(2,3,4,3)) 


    output$vis1 <- renderVisNetwork(
    { 
     visNetwork(nodes1, edges1) %>% 
     visEdges(arrows = 'from') %>% 
     return 
    }) 
    output$vis2 <- renderVisNetwork(
    { 
     visNetwork(nodes2, edges2) %>% 
     visEdges(arrows = 'from') %>% 
     return 
    }) 
} 

shinyApp(ui = ui, server = server)