基于这个问题当它与另一个重叠时自动弯曲一个弧,我试图pos在一个RGraphviz图中设置该属性.
有人可以展示如何正确使用该pos属性或建议更强大的解决方法.谢谢.
例
为了与上述链接问题保持一致,以下示例从bnlearn包含网格布局中的节点的图形开始.
library(bnlearn)
library(Rgraphviz)
library(igraph)
# Create graph
adj <- matrix(0L, ncol = 9, nrow = 9, dimnames = list(LETTERS[1:9], LETTERS[1:9]))
adj[upper.tri(adj)] <- 1
e <- empty.graph(LETTERS[1:9])
amat(e) <- adj
g <- as.graphNEL(e)
# layout in grid
ig <- igraph.from.graphNEL(g)
lay <- layout.grid(ig)
lay <- setNames(data.frame(norm_coords(lay, -100, 100, -100, 100)), c("x", "y"))
Run Code Online (Sandbox Code Playgroud)
帮助页面?GraphvizAttributes表明pos应该设置为
节点的位置(对于neato布局,这是节点的初始位置).使用概念val指定val,其中每个val是double.
更进一步,neato只有属性
pin:如果TRUE且节点在输入上有pos属性,则neato会阻止节点从输入位置移动.此属性的默认值为FALSE.
我找不到应用此参数的正确方法.
我试过的各种事情没有成功
# Passed named list …Run Code Online (Sandbox Code Playgroud) 我正在尝试自定义bnlearn使用图表学习的图表RGraphviz.当我有无向边时,RGraphviz当我尝试自定义图形的外观时,将它们转向两个方向的有向边.
一个可重复的例子可能是:
set.seed(1)
x1 = rnorm(50, 0, 1)
x2 = rnorm(50, 0, 1)
x3 = x2 + rnorm(50, 0, 1)
x4 = -2*x1 + x3 + rnorm(50, 0, 1)
graph = data.frame(x1, x2, x3, x4)
library(bnlearn)
library(Rgraphviz)
res = gs(graph)
options(repr.plot.width=3, repr.plot.height=3)
g1 <- graphviz.plot(res)
Run Code Online (Sandbox Code Playgroud)
图未定制:
到现在为止还挺好.但是,如果我尝试自定义它:
plot(g1, attrs = list(node = list(fontsize=4, fillcolor = "lightgreen")))
Run Code Online (Sandbox Code Playgroud)
自定义图表
无向边缘被转换.
即使我只使用情节(g1),我也会遇到这个问题.问题是这(保存g1然后使用绘图)似乎改变了图形的外观.