Изменение макета DiagrammeR - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь создать график SEM, используя R и DiagrammeR.У меня настроен график, но я пытаюсь разместить некоторые узлы (CSEW, ONS и Police) внизу графика, чтобы их было легче читать.

Вот то, что у меня пока есть,Любые рекомендации о том, как переместить три круга вниз, будут приветствоваться.


library(DiagrammeR)

grViz("

digraph MTMM {

      subgraph  {
      node [shape = box, fixedsize = true, width = 1]
      rank = same; bike_c; bike_p; bike_o
      burg_c; burg_p; burg_o
      theft_c; theft_p; theft_o
      viol_c; viol_p; viol_o
      }



      subgraph  {
      node [shape = circle, fixedsize = true, width = 1]
       Bicycle; Burglary; Theft; Violence
      }

      subgraph  {
      node [shape = circle, fixedsize = true, width = 1]
      CSEW; ONS; Police

      }


      Bicycle -> {bike_c bike_p bike_o} 
      Burglary -> {burg_c burg_p burg_o}
      Theft -> {theft_c theft_p theft_o}
      Violence -> {viol_c viol_p viol_o}

      CSEW -> {bike_c burg_c theft_c viol_c} [label = '1']
      ONS -> {bike_o burg_o theft_o viol_o} [label = '1'] 
      Police -> {bike_p burg_p theft_p viol_p} [label = '1']

{rank = same; CSEW; ONS; Police}
{rank = same; Bicycle; Burglary; Theft; Violence}

}


      ") 

1 Ответ

1 голос
/ 25 июня 2019

Если вы хотите иметь узел A над узлом B, вы должны указать от A -> B, это фундаментальная логика graphviz. Если вы хотите, чтобы стрелка указывала в другом направлении, вы можете сделать это, используя graphviz: A -> B[ dir = back].

В вашем случае замените три соответствующие строки на

  {bike_c burg_c theft_c viol_c} -> CSEW [dir = back, label = '1']
  {bike_o burg_o theft_o viol_o} -> ONS[dir = back, label = '1'] 
  {bike_p burg_p theft_p viol_p} -> Police[dir = back, label = '1']

, что дает вам

enter image description here

...