在R中加入节点graphviz

问题描述:

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

例如,该图

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;} 
    }") 

有没有什么办法让这个工作。如果有更好的解决方案,请打开使用除图表R和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] 

} 

enter image description here

+0

谢谢你,在我的例子的伟大工程。但我认为我最小的例子可能有点过于微不足道。使用更复杂的图形时,边缘的布局变得非常复杂,并且边缘在不可见节点上会出现尖锐的不连续转弯(特别是如果您尝试指向弯曲而不是直线的边缘)。我会等待看看是否有其他答案出现,但也许这是最好的。如果在几天之后没有更好的事,我会接受。 – dww

+0

也许试试像https://caretdashcaret.com/tag/graphviz/这样的中间节点(不是直接从连接节点指向边缘) – bergant