所以刚从Rgraphviz开始,出于某种原因,它在我真正简单的图表上划线。
A = matrix(c(0,0,0,0,1,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
0,1,1,1,0),
ncol=5, byrow=TRUE)
rownames(A)=c(1,2,3,4,5)
colnames(A)=c(1,2,3,4,5)
library(Rgraphviz)
am.graph<-new("graphAM", adjMat=A, edgemode="directed")
am.graph
plot(am.graph, attrs = list(node = list(fillcolor = "lightblue"),
edge = list(arrowsize=0.5)))
感谢任何帮助
答案 0 :(得分:3)
RGraphiviz
提供了许多布局算法,请参阅?GraphvizLayouts。在您的示例中使用的默认值是“点”算法,它提供了分层布局。其中一个替代方案“twopi”将其中一个节点作为根,并将剩余节点排列在围绕此根的一系列同心圆中。这里可以使用第二种算法来避免图中的交叉线。
默认情况下,“twopi”使用节点1作为根:
plot(am.graph, "twopi",
attrs = list(node = list(fillcolor = "lightblue"),
edge = list(arrowsize=0.5)))
但是,我们可以通过属性更改它(参见?GraphvizAttributes)以将节点2设置为根:
plot(am.graph, "twopi",
attrs = list(graph = list(root = 2),
node = list(fillcolor = "lightblue"),
edge = list(arrowsize=0.5)))
这可能会使布局更接近您的期望: