diagrammeR指定节点顺序和格式化文本

时间:2018-01-18 23:13:57

标签: r diagrammer

我正在使用diagrammeR grViz来构建流程图。我想指定一些具有相同排名的节点的顺序。在下面的图表中,我希望节点1位于中心而不是左侧。另外,我想在“节点2”下划线,但不是“额外细节”。这是代码:

library("DiagrammeR")

grViz(" 
      digraph CFA {
      # Multiple level nodes
      node [shape = rectangle, color=CornflowerBlue]
      a [label = 'Node 1' ]; 

      node [shape = ellipse, color=CornflowerBlue]
      T1    [label = 'Node 2\\nextra detail']; 
      T2    [label = 'Node 3']; 

      {rank = same; a T1 T2}

      # Connect nodes with edges and labels
      a -> T1
      a -> T2
       }


      ")

enter image description here

非常感谢任何帮助。另外,如果有资源可以帮助我解决diagrammeR中的这些自定义问题,请附上一个链接。

1 个答案:

答案 0 :(得分:1)

有多种方法可以订购节点。这里最简单的可能是按此顺序(而不是T2 -> a)使边a -> T2,因此节点T2是第一个,然后使用dir=back来反转箭头。您可以使用html为节点标签加下划线。 (还必须使用break <br/>,而不是换行符,\n

grViz(" 
      digraph CFA {
      a [label = 'Node 1', shape = rectangle, color=CornflowerBlue ]; 

      node [shape = ellipse, color=CornflowerBlue]
      T1    [label = <Node 2 <br/> <u>extra detail</u>>]; 
      T2    [label = 'Node 3']; 

      {rank = same; a T1 T2}

      # Connect nodes with edges and labels
      a -> T1
      T2 -> a[dir=back]
       }

      ")

enter image description here

来自评论:有没有办法让节点中的部分文本变成不同的颜色(例如只是“额外的细节”,而不是“节点2”)?

是的,从上面的html链接中你可以“设置FONT ... / FONT范围内的字体颜色。例如,将T1的标签更改为

label = <Node 2 <br/> <font color='red'> <u>extra detail</u> </font> >