2017-02-15 6 views
1

graphmeを使用してRで点グラフを描きたい場合、いくつかのノードが矢印をエッジに向けています。例えばR graphvizのノードにノードを結合する

、この図

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

は、私が(手動で編集)この1のようになりたいと思います。これらのタイプの図は、レートが何かの量によっていつ影響を受けるかを示すために一般的に使用されます。

This answer見えないノードを使用すると、これを達成することができますことを示唆しているが、実際にどのように表示されません。これはthis answerにリンクしています。これは、いくつかのエッジが1つのポイントで出会うが、別のエッジの中点を指しているエッジでは探していないグラフの種類のために、目に見えないノードを使用する方法を示しています。

私は、目に見えないノードとエッジのさまざまな組み合わせを試しましたが、私が望むものに近いものは得られません。

ここでは一例

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

として1つの厄介な試みは、この作業を取得する方法はあります。 graphmeRとgraphviz以外のアプローチを使用して提案を公開してください。

答えて

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

+0

を。しかし私は、私の最小限の例はおそらくあまりにも些細なものだと思う。より複雑なグラフでは、エッジのルーティングが非常に畳み込まれ、目に見えないノードでエッジが鋭く不連続に回転します(特に、直線ではなく曲線であるエッジを指す場合)。私は他の答えが出てくるのを見るのを待つつもりですが、おそらくこれは得られるほど良いものです。私は数日後には何も改善しなければ、これを受け入れるでしょう。 – dww

+0

おそらくhttps://caretdashcaret.com/tag/graphviz/のような中間ノードを試してみてください(接続されたノードからエッジに直接向かわない) – bergant

関連する問題