“DiagrammeR”R包上不工作的边的权重属性
我正在尝试使用R中的“DiagrammeR”R包上不工作的边的权重属性,r,graphviz,diagrammer,R,Graphviz,Diagrammer,我正在尝试使用R中的DiagrammeR包将一些边属性添加到GraphViz图中。特别是,我想添加属性箭头和权重,但只有前者被添加到图中,而不是后者。下面的例子不是真实的例子,但为了再现性和清晰度,它是一个超级简化版本 库(tidyverse) 图书馆(图解机) #创建节点 nd我不确定这是一个bug还是故意忽略了“权重”,但不管怎样,罪魁祸首是DiagrammeR中的一个helper函数,它生成允许的属性向量,并且generate_dot()只允许来自该向量的属性 \DiagrammeR/R/
DiagrammeR
包将一些边属性添加到GraphViz图中。特别是,我想添加属性箭头
和权重
,但只有前者被添加到图中,而不是后者。下面的例子不是真实的例子,但为了再现性和清晰度,它是一个超级简化版本
库(tidyverse)
图书馆(图解机)
#创建节点
nd我不确定这是一个bug还是故意忽略了“权重”,但不管怎样,罪魁祸首是DiagrammeR
中的一个helper函数,它生成允许的属性向量,并且generate_dot()
只允许来自该向量的属性
\DiagrammeR/R/utils.R
你说得对。我创建了所有属性,但它确实通过了一些检查。。。
graph %>%
generate_dot() %>%
cat()
#> digraph {
#>
#> graph [layout = 'dot',
#> outputorder = 'edgesfirst',
#> bgcolor = 'white',
#> overlap = 'false']
#>
#> node [fontname = 'Helvetica',
#> fontsize = '10',
#> shape = 'circle',
#> fixedsize = 'true',
#> width = '0.5',
#> style = 'filled',
#> fillcolor = 'aliceblue',
#> color = 'gray70',
#> fontcolor = 'gray50']
#>
#> edge [fontname = 'Helvetica',
#> fontsize = '8',
#> len = '1.5',
#> color = 'gray80',
#> arrowsize = '0.5']
#>
#> '1' [label = 'A']
#> '2' [label = 'B']
#> '3' [label = 'C']
#> '4' [label = 'D']
#> '1'->'2' [arrowhead = 'normal']
#> '1'->'3' [arrowhead = 'normal']
#> '3'->'4' [arrowhead = 'normal']
#> '3'->'2' [arrowhead = 'normal']
#> }
graph <- graph %>%
set_edge_attrs(edge_attr = "weight",
values = "5",
from = 1,
to = 2
)
# digraph {
#
# graph ...
# {trimmed output}
#
# '1'->'2' [arrowhead = 'normal']
# '1'->'3' [arrowhead = 'normal']
# '3'->'4' [arrowhead = 'normal']
# '3'->'2' [arrowhead = 'normal']
# }
graph2 <- "digraph {
graph [layout = 'dot',
outputorder = 'edgesfirst',
bgcolor = 'white',
overlap = 'false']
node [fontname = 'Helvetica',
fontsize = '10',
shape = 'circle',
fixedsize = 'true',
width = '0.5',
style = 'filled',
fillcolor = 'aliceblue',
color = 'gray70',
fontcolor = 'gray50']
edge [fontname = 'Helvetica',
fontsize = '8',
len = '1.5',
color = 'gray80',
arrowsize = '0.5']
'1' [label = 'A']
'2' [label = 'B']
'3' [label = 'C']
'4' [label = 'D']
'1'->'2' [arrowhead = 'normal', weight = 5]
'1'->'3' [arrowhead = 'normal', weight = 0]
'3'->'4' [arrowhead = 'normal', weight = 0]
'3'->'2' [arrowhead = 'normal', weight = 0]
}
"
grViz(graph2)