График R-диаграммы

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

Я попробовал следующий код

      library(DiagrammeR)
grViz("
digraph boxes_and_circles {

  graph [layout = circo,
      overlap =T,
      outputorder = edgesfirst,
      bgcolor='white',
      splines=line]#controls l type setup
      edge[labelfontname='Arial',fontSize=13,color='red',fontcolor='navy']
      node [shape = box,style='filled',
      fillcolor='indianred4',width=2.5,
      fontSize=20,fontcolor='snow',
      fontname='Arial']
  a;b;c;d;e

  node [shape = square,
        fixedsize = true,
        width = 0.9] // sets as circles
  # several 'edge' statements
  a->b;a->c;a->d;a->e;c->b;d->b;e->b}")

Это дает мне следующую диаграмму

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

1 ответ

Хм

  • механизм компоновки circo здесь, похоже, не применим, заменен на точку
  • добавлены узлы aPrime и bPrime для желаемого результата
  • использовал Rank=, чтобы начать ранжирование
  • использовали невидимые края для установки ранжирования нижних узлов
  • добавлена ​​спецификация порта для некоторых ребер
  • использован атрибут группы для вертикального выравнивания

Дополнительную информацию об этих атрибутах см.: https://www.graphviz.org/pdf/dotguide.pdf и: https://www.graphviz.org/doc/info/attrs.html.

      digraph boxes_and_circles {

  graph [layout = dot  // not circo
      overlap =false,  // not "T"
      outputorder = edgesfirst,
      bgcolor="white",
      splines=line  //polyline
      nodesep="2.0"
      ]#controls l type setup
      edge[labelfontname="Arial",fontSize=13,color="red",fontcolor="navy"
      ]
      
      node [shape = box,style="filled",
      fillcolor="indianred4",width=2.5,
      fontSize=20,fontcolor="snow",
      fontname="Arial"
      ]
  {rank=min  a [group=g1] ;b [group=g2]}
  {rank=same
    aPrime [label="A on C D E" group=g1]
    bPrime [label="C D E on B" group=g2]
    }
    {
      edge[style=invis]
      c-> d-> e
   }

  // what is the new node definition for ??
  node [shape = square,
        fixedsize = true,
        width = 0.9] // sets as circles
  # several "edge" statements
  a->b;
  a -> aPrime
  aPrime->c:w;  
  aPrime->d:w;
  aPrime->e:w;
  c:e->bPrime;
  d:e->bPrime;
  e:e->bPrime
  bPrime->b
  }

Предоставление:

Другие вопросы по тегам