标签: r-graphviz

使用Rgraphviz中的`pos`参数来修复节点位置

基于这个问题当它与另一个重叠时自动弯曲一个弧,我试图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)

r graph graphviz r-graphviz

12
推荐指数
0
解决办法
360
查看次数

bnlearn + Rgraphviz:自定义绘图时,双箭头而不是无向边

我正在尝试自定义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然后使用绘图)似乎改变了图形的外观.

r bayesian-networks bnlearn r-graphviz

2
推荐指数
1
解决办法
625
查看次数

标签 统计

r ×2

r-graphviz ×2

bayesian-networks ×1

bnlearn ×1

graph ×1

graphviz ×1