将节点连接到 R graphviz 中的边

Join nodes to edges in R graphviz

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

比如这张图

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

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

This answer suggests that using invisible nodes can achieve this, but does not actually show how. It links to 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;}
  }")

有什么方法可以让它工作吗?如果有更好的解决方案,请接受使用除 diagrammeR 和 graphviz 以外的其他方法的建议。

我不确定这是否会在一般情况下起作用,但对于这种情况,我会这样做:

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]

}