Соединение узла с ребром между двумя другими узлами - PullRequest
0 голосов
/ 10 апреля 2019

В настоящее время я пытаюсь создать потоковую диаграмму, используя DiagrammeR

library(DiagrammeR)
grViz("
digraph g { 
subgraph cluster_0 {
style=filled;
color=lightgrey;
label= To_Accrue
node [shape = rectangle, style = filled, fillcolor = Linen]
A
B
C
A->B->C
}
subgraph cluster_1 {
style=filled;
color=crimson;
label= Y
node [style=filled,color=blue, shape=folder]
1
2
3
1->2->3
}
}
")

Пожалуйста, обратитесь к ссылке Файл , чтобы увидеть, что он генерирует в данный момент (Tab-Sheet1). Мне было интересно, есть ли способ достичь желаемого результата (Tab-Desired Output).

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Я также отредактировал оригинальный код, чтобы сгенерировать следующее, чтобы приблизиться к ротационному сценарию. введите описание изображения здесь

library(DiagrammeR)

grViz("
digraph g { 
subgraph cluster_0 {
style=filled;
color=lightgrey;
label= To_Accrue
node [shape = rectangle, style = filled, fillcolor = Linen]
a1 [style = invis, shape=point, width = 0, group=g1]
a2 [style = invis, shape=point, width = 0, group=g2]
a3 [style = invis, shape=point, width = 0, group=g3]
A [group=g1]
B
C [group=g1]
C [group=g2]
D
E [group=g2]
edge [arrowhead='none']
A->a1
C->a2
E->a3
edge [arrowhead='normal']
B->a1 {rank=same B a1}
a1->C
D->a2 {rank=same D a2}
a2->E
F->a3 {rank=same F a3}
a3->G
}
subgraph cluster_1 {
style=filled;
color=crimson;
label= Y
node [style=filled,color=blue, shape=folder]
1
2
3
1->2->3
}
}
")
0 голосов
/ 10 апреля 2019

Хитрость здесь в том, чтобы использовать пустой узел (называемый здесь bnode), группы (g1 в этом примере) и ранги (rank=same ...), чтобы принудительно установить желаемое расположение и внешний вид. Узлы с одинаковой группой должны появляться в одной и той же вертикальной плоскости, а узлы с одинаковым рангом - в одной и той же горизонтальной плоскости.

library(DiagrammeR)

grViz("
digraph g { 
subgraph cluster_0 {
style=filled;
color=lightgrey;
label= To_Accrue
node [shape = rectangle, style = filled, fillcolor = Linen]
bnode [style = invis, shape=point, width = 0, group=g1]
A [group=g1]
B
C [group=g1]
edge [arrowhead='none']
A->bnode
edge [arrowhead='normal']
B->bnode
bnode->C
{rank=same B bnode}
}
subgraph cluster_1 {
style=filled;
color=crimson;
label= Y
node [style=filled,color=blue, shape=folder]
1
2
3
1->2->3
}
}
")
...