我想要创建一个简单的图片图:
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)

用diagrammeR
library(DiagrammeR)
mygraph2 <- from_igraph(mygraph)
grViz(mygraph2)产生此错误
File.exists(关系图)中的错误:无效的“文件”参数
我也试过
grViz(readLines(mygraph2)) 以及其他组合或命令plot(),但我找不到合适的方法。
我该怎么做呢?
为了直接在DiagrammeR上得到相同的结果,我打开了一个新的问题,不使用without:
发布于 2017-06-25 17:37:57
好像有几件事在发生。
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)警告消息: 1:在data.frame中(from=as.integer(i图形::ends(igraph,i图形::e(iGraph)[,:NAs通过强制方式引入)
如果您查看mygraph2,就会发现没有节点或边缘信息,而且它没有呈现:render_graph(mygraph2)。但是警告信息丰富,因为它指向代码行( as.integer(ends(mygraph, E(mygraph), names=TRUE)):可能我们想要names=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))发布于 2017-06-25 17:39:58
在您的过程中有两个问题。
第一个是在命令from_igraph中。我不确定,也许是包中的一个bug,也许是我的设置出了问题,但是我不能用它来获得想要的结果。以下内容在我的机器上工作。
mygraph3 <- from_adj_matrix(as.matrix(get.adjacency(mygraph)), mode = "directed")然后你需要render_graph或者类似的东西来得到你的图,grViz是图的字符串表示,而不是图本身。
render_graph(mygraph3)https://stackoverflow.com/questions/44746975
复制相似问题