Слияние стрелок сбоку на диаграммах русалок

Как я могу добавить боковые слитые стрелки в последовательную диаграмму русалки R? В примере ниже:

library(DiagrammeR)
mermaid("
graph TB
    A[GE Solution]-->C{1:1}
    B[GA Solution]-->C{1:1} 
    C{1:1}-->D[Stir 10 mins at 500 r/min]
    D[Stir 10 mins at 500 r/min]-->E[Homogenisation at 10000 r/min]
    ")

Как я могу создать что-то вроде следующего?

введите описание изображения здесь


person Scientist    schedule 16.07.2018    source источник


Ответы (1)


Я поигрался с mermaid и не уверен, что для этого есть функциональность, похоже, это было простое решение для документации, а не гибкое. Однако вы можете сделать ту же диаграмму с помощью graphViz:

library(DiagrammeR)

grViz("digraph dot {
    node [shape=rectange];

    d1 [shape=point,width=0.01,height=0.01];
    {'GE Solution', 'GA Solution'}->d1[dir=none];
    d1->'Stir 10 mins at 500 r/min';
    'Stir 10 mins at 500 r/min'->'Homogenisation at 10000 r/min'}")

введите описание изображения здесь

Редактировать, чтобы ответить на комментарий: используйте подграф и ранжируйте невидимую точку (d2 в этом примере) и узел, с которым вы хотите, чтобы она была на одном уровне (здесь 40oC).

grViz("digraph dot {
node [shape=rectange];

d1 [shape=point,width=0.01,height=0.01];
d2 [shape=point, width=0.01, height=0.01];
{'GE Solution', 'GA Solution'}->d1[dir=none];
d1->'Stir 10 mins at 500 r/min';
'Stir 10 mins at 500 r/min'->d2[dir=none];
subgraph {
    rank=same;
    d2; '40oC';
}
d2->'40oC'[dir=none];
d2->'Homogenisation at 10000 r/min'}")

введите описание изображения здесь

person august    schedule 18.07.2018
comment
Спасибо! Первоначально я стремился найти решение в Mermaid, так как мне кажется, что писать намного проще. Тем не менее, что касается бокового элемента на 40oC, который косо соединен со стрелкой, не могли бы вы также знать, как это реализовать, пожалуйста? - person Scientist; 18.07.2018
comment
я добавил правку в свой ответ, отвечая на ваш вопрос, но решение состоит в том, чтобы использовать подграф - person august; 18.07.2018
comment
очень приятно: я думаю, вы можете обойтись без подграфа, просто используя { rank=same; d2 -> '40oC'[dir=none] }; - person user20650; 19.07.2018