gpt4 book ai didi

r - 使用DiagrammeR 绘制igraph 网络

转载 作者:行者123 更新时间:2023-12-02 20:45:03 25 4
gpt4 key购买 nike

我想创建这个简单的 igraph 绘图:

library(igraph)
mydata <- data.table(from=c("John", "John", "Jim"),to=c("John", "Jim", "Jack"))
mygraph <- graph_from_data_frame(d=mydata, directed=T)
plot(mygraph, vertex.label.dist=2)

enter image description here

带有图表

library(DiagrammeR)
mygraph2 <- from_igraph(mygraph)
grViz(mygraph2)

产生此错误

Error in file.exists(diagram) : invalid 'file' argument

我也尝试过

grViz(readLines(mygraph2)) 

以及其他组合或命令plot(),但我找不到正确的方法。

我该怎么做?

我打开了一个新问题,直接使用DiagrammeR获得相同的结果,无需igraph:

How to create a network graph with DiagrammeR?

最佳答案

似乎发生了一些事情。

library(igraph)
library(DiagrammeR)

mydata <- data.table(from=c("John", "John", "Jim"),to=c("John", "Jim", "Jack"))
mygraph <- graph_from_data_frame(d=mydata, directed=TRUE)

以下代码会引发警告

mygraph2 <- from_igraph(mygraph)

Warning messages: 1: In data.frame(from = as.integer(igraph::ends(igraph, igraph::E(igraph))[, : NAs introduced by coercion

如果您查看mygraph2,则没有节点或边缘信息,并且它不会渲染:render_graph(mygraph2)。但是警告是信息性的,因为它指向代码行( as.integer(ends(mygraph, E(mygraph), names=TRUE)) :也许我们想要的名称=FALSE),所以尝试删除名称,但设置标签

V(mygraph)$label = V(mygraph)$name
V(mygraph)$name = factor(V(mygraph)$name, levels=as.character(V(mygraph)$name))

没有警告和渲染

mygraph2 <- from_igraph(mygraph)
render_graph(mygraph2)

如果您想查看 dot 代码,您可以使用 generate_dot ,然后将其传递给 grViz,但是,这就是render_graph 正在做。

grViz(generate_dot(mygraph2))

关于r - 使用DiagrammeR 绘制igraph 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com