“DiagrammeR”R包上不工作的边的权重属性

“DiagrammeR”R包上不工作的边的权重属性,r,graphviz,diagrammer,R,Graphviz,Diagrammer,我正在尝试使用R中的DiagrammeR包将一些边属性添加到GraphViz图中。特别是,我想添加属性箭头和权重,但只有前者被添加到图中,而不是后者。下面的例子不是真实的例子,但为了再现性和清晰度,它是一个超级简化版本 库(tidyverse) 图书馆(图解机) #创建节点 nd我不确定这是一个bug还是故意忽略了“权重”,但不管怎样,罪魁祸首是DiagrammeR中的一个helper函数,它生成允许的属性向量,并且generate_dot()只允许来自该向量的属性 \DiagrammeR/R/

我正在尝试使用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)