2017-02-15 94 views
1

我想使用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以外的其他方法的建議。

回答

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