【问题标题】:Directly Adding Titles and Labels to Visnetwork直接向 Visnetwork 添加标题和标签
【发布时间】:2022-07-04 13:57:29
【问题描述】:

我有以下网络图:

library(tidyverse)
library(igraph)


set.seed(123)
n=15
data = data.frame(tibble(d = paste(1:n)))

relations = data.frame(tibble(
  from = sample(data$d),
  to = lead(from, default=from[1]),
))

data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )

graph = graph_from_data_frame(relations, directed=T, vertices = data) 

V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")

plot(graph, layout=layout.circle, edge.arrow.size = 0.2, main = "my_graph")

我能够将此图转换为“visnetwork”图:

library(visNetwork)

visIgraph(graph)

现在,我想在这张图上加上一个标题:

visIgraph(graph, main = "my title")

虽然这不起作用:

Error in layout_with_fr(graph, dim = dim, ...) : 
  unused argument (main = "my title")

我找到了这个链接https://datastorm-open.github.io/visNetwork/legend.html,它显示了如何将标题添加到“visnetwork”图表:

nodes <- data.frame(id = 1:3, group = c("B", "A", "B"))
edges <- data.frame(from = c(1,2), to = c(2,3))

# default, on group
visNetwork(nodes, edges, 
           main = "A really simple example", 
           submain = list(text = "Custom subtitle",
                          style = "font-family:Comic Sans MS;color:#ff0000;font-size:15px;text-align:center;"), 
           footer = "Fig.1 minimal example",
           width = "100%")

这似乎很简单,但它需要您使用“visNetwork()”函数而不是“visIgraph()”函数。

  • 是否可以使用“visIgraph()”函数直接添加标题?

谢谢!

【问题讨论】:

    标签: r data-visualization igraph visnetwork


    【解决方案1】:

    如果您愿意,我们可以尝试这种方法

    toVisNetworkData(graph) %>%
      c(list(main = "my title")) %>%
      do.call(visNetwork, .)
    

    toVisNetworkData(graph) %>%
      {
        do.call(visNetwork, c(., list(main = "my title", submain = "subtitle")))
      }
    

    你会看到

    【讨论】:

    • 谢谢!这太酷了!您知道是否也可以在此图表中添加“字幕”?例如。 “我的标题”,然后在“我的副标题”下方?
    • 你能解释一下你使用的逻辑吗?为什么需要“toVisNetworkData()”和“call”?
    • 我想我刚刚想通了:
    • toVisNetworkData(graph) %>% c(., list(main = "my title", submain = "sub title")) %>% do.call(visNetwork, .)
    • 我正在处理这个问题(我正在重复使用您在之前的问题中提供的代码)并且遇到了一些死胡同stackoverflow.com/questions/71244872/… - 请您检查一下吗?非常感谢!
    【解决方案2】:

    我无法弄清楚如何使用“visIgraph()”函数来执行此操作 - 但我想我能够弄清楚如何生成随机图(满足某些条件:Generating Random Graphs According to Some Conditions)并使用常规"visNetwork()" 函数,然后在此图上放置一个标题:

    n=15
    
    data = data.frame(id = 1:n)
    data$color = ifelse(data$id == 1, "Red", "Orange")
    data$label = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
    
    relations = data.frame(tibble(
      from = sample(data$id),
      to = lead(from, default=from[1]),
    ))
    
    visNetwork(data, relations, main = "my graph") %>%  visEdges(arrows = "to")
    

    解决我自己的问题感觉很棒(有点)!

    • 但这是否可以直接使用“visNetwork()”函数实现?

    【讨论】:

      猜你喜欢
      • 2018-10-29
      • 2015-12-19
      • 1970-01-01
      • 2015-12-17
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多