2017-02-15 3 views
1

다이어그램 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;} 
    }") 

하나 개 지저분한 시도는이 작업을 얻을 수있는 방법이 있습니다. diagrammeR 및 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

관련 문제