r - 调整图表布局

标签 r data-visualization igraph visnetwork

我有以下图表:

library(tidyverse)
library(igraph)
library(visNetwork)

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)

enter image description here

我尝试使用“visNetwork”库制作完全相同的图表,但该图表现在显示为“圆形”而不是“随机”:

  visIgraph(graph)

enter image description here

我尝试研究是否可以使用“visNetwork”库生成“随机排序”图而不是圆形图。例如:

 visIgraph(graph) %>%
 visLayout(randomSeed = 123) 

但这仍然会产生圆形图。

我意外地发现这段代码可以正常工作( https://www.rdocumentation.org/packages/visNetwork/versions/2.1.0/topics/visIgraphLayout ):

visIgraph(graph) %>%
    visIgraphLayout(layout = "layout_in_circle") %>%
    visOptions(highlightNearest = list(enabled = T, hover = T), 
               nodesIdSelection = T)

enter image description here

为什么“随机种子”选项仍然会产生圆形图,但上述选项会产生所需的结果?有没有解释一下?

谢谢!

最佳答案

不确定完全理解您在寻找什么,但是:

  1. 如果您希望顶点随机放置而不是在圆上,则只需使用参数 layout = "layout_randomly"里面visIgraph()功能。

  2. 如果您希望顶点随机放置在圆上,则需要使用permute()函数,然后只需添加参数 layout = "layout_circle"里面visIgraph()功能。

请在下面找到一个代表。

Reprex

  • 您的数据
library(dplyr)
library(igraph)
library(visNetwork)

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")
  • 建议的代码

    1。随机顶点放置

visIgraph(graph, layout='layout_randomly')

2。圆上的随机顶点放置

permute(graph, permutation = sample(vcount(graph))) %>% 
  visIgraph(layout='layout_in_circle')

reprex package 于 2022 年 2 月 25 日创建(v2.0.1)

关于r - 调整图表布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71261431/

相关文章:

graph - 是否有比 "rainbow"颜色图更好的色标?

R:收集列表中与选定节点相邻的 igraph 节点

r - 如何将多边形修改为孔(SpatialPolygons)并更改其槽

机器学习的R和PCA解释

python - 移动图形时 matplotlib trisurf 缓慢

r - 如何求最短路径矩阵?

r - igraph包中的ncol格式数据

R Shiny tabBox 标题中断

iphone - R可以打包在iOS应用中吗?

c++ - vtkCharts 库既不适用于 Visual Studio 也不适用于 GCC 编译器 - 为什么?