首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R visNetwork:多图形布局?

R visNetwork:多图形布局?
EN

Stack Overflow用户
提问于 2017-04-20 20:23:48
回答 2查看 1.2K关注 0票数 3

我想并排放置两个visNetwork图,以便进行直观比较。可以使用带有par()或layout()的igraph进行多图定位。有没有办法为visNetwork做到这一点?变通方法/杂乱无章(包括RShiny等)都是可以接受的答案--只要能提供并排的visNetwork显示。请注意,ID号等是重叠的,因此将两个网络放入同一个图中将是我希望避免的大量数据操作。

下面是我想做的这类事情的一个例子。

代码语言:javascript
复制
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')

干杯,蒂姆

EN

回答 2

Stack Overflow用户

发布于 2017-04-20 21:13:14

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

代码语言:javascript
复制
install.packages('flexdashboard')

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

代码语言:javascript
复制
---
title: "DASHBOARD"
output: 
    flexdashboard::flex_dashboard:
        orientation: rows
---

```{r, echo=FALSE}

库(VisNetwork)

网络1

nodes1 <- data.frame(id = 1:3)

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

网络2

nodes2 <- data.frame(id = 1:4)

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

代码语言:javascript
复制
Row 
-------------------------------------

### Chart 1

```{r}

visNetwork(nodes1,edges1) %>%箭头(visEdges= 'from')

代码语言:javascript
复制
### Chart 2

```{r}

visNetwork(nodes2,edges2) %>%箭头(visEdges= 'from')

代码语言:javascript
复制

请注意,当布局响应时,Rstudio中Viewer窗格中的默认视图会垂直堆叠图形,但扩展窗格或在外部浏览器中打开该窗格时,它们会并排显示。

票数 5
EN

Stack Overflow用户

发布于 2017-04-20 22:43:29

通过一个app.R文件使用Shiny的解决方案:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43519451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档