将节点连接到R graphviz中的边

时间:2017-02-15 15:25:17

标签: r graphviz

我想使用diagrammeR在R中绘制点图,其中一些节点的箭头指向边缘。

例如,此图

library(DiagrammeR)
grViz("
digraph PrimC{
  graph [layout = dot]
  node [shape = circle]
  A B
  A -> B [label = 'Rate']
  }")

我想看起来像这样(手工编辑)。注意,这些类型的图表通常用于显示费率何时受到其他数量的影响。

This answer建议使用不可见的节点可以实现这一点,但实际上并没有显示出来。它链接到this answer,它显示了如何使用不可见的节点来处理某个不同类型的图形,其中几个边缘在一个点上相遇,但不包括我要查找的边缘指向的边缘另一条边缘的中点。

我已经尝试了许多隐形节点和边缘的不同组合,但无法将它们中的任何一个接近我想要的。

这里有一个混乱的尝试作为例子

grViz("
digraph PrimC{
  graph [layout = dot]

  node [shape = circle]
  A B
  node[shape=none, width=0, height=0, label=''];
  p1
  node [shape = circle]
  B

  A -> p1 [label = 'Rate']
  p1 -> B
  B -> p1;
  {rank=same; A -> p1; B -> p1;}
  }")

有没有办法让它发挥作用。如果有更好的解决方案,请使用除chartmeR和graphviz之外的其他方法提供建议。

1 个答案:

答案 0 :(得分:3)

我不确定,如果这种情况一般有效,但对于这种情况,我会这样做:

digraph PrimC{

  graph [layout = dot]
  rankdir = LR
  node[shape = circle]
  {rank=same 
    A 
    B
    p1[shape=none, width=0, height=0, label='']
  }

  A -> p1 [label = 'Rate', arrowhead=none]
  p1 -> B
  B:ne -> p1[constraint=no, arrowType=normal]

}

enter image description here