首页 > 解决方案 > Graphviz:反转集群内的两个节点位置

问题描述

我正在尝试反转集群 ( ) 内的两个节点 ( producción& ) 的位置。而不是在顶部和底部,我需要在顶部和底部。我怎样才能做到这一点?他们在一个集群中只是因为我认为这是正确的方法,但可能不是。因为我的声誉,我不能直接发布图片,所以我将链接留给 i.stack.imgur.com。funcionescluster_fpproducciónfuncionesfuncionesproducción

[IMG] 问题(节点必须处于反向垂直位置)

代码:

digraph tríada {
  rankdir=LR;
  edge [arrowhead=none];
  label="* socialmente reconocido";
  labeljust=left;

  subgraph cluster_sinonimia_oa {
    style=dashed;
    label="sinonimia obra-texto";

    subgraph cluster_texto {
      style=striped;
      label=texto;

      selección [shape=rect];
    }

    obra [shape=rect, style=striped];
    supuesto [label="supuesto\nexistencial", shape=plain];
  }

  subgraph cluster_autor {
    style=striped;
    label="autor*";
    
    máquinas [shape=hexagon];

    subgraph cluster_fp {
      label="";
      style=invis;

      funciones [label="atribución o\napropiación", shape=plain];
      producción [shape=plain];
    }

    subgraph cluster_sinonimia_nepa {
      style=dashed;
      label="sinonimia nombre-entidad-persona-autor";

      personas [shape=hexagon];
      entidad [shape=rect];
      real [shape=diamond];
      ficticia [shape=diamond];
      nula [shape=diamond];
      denotación [shape=plain];
      nombre [shape=rect];
    }
  }

  {personas máquinas} -> real [arrowhead=normal];
  {real ficticia nula} -> entidad [arrowhead=normal];
  nombre -> funciones -> obra -> supuesto -> selección -> producción -> entidad -> denotación -> nombre;
}

[IMG] 图形图像输出

住在 dreampuf.github.io

谢谢!

标签: graphvizimage-graphviz

解决方案


基于大量实验,问题似乎是dot的算法“权重”多节点边多于两节点边。
这是一个经过大量编辑的输入文件,可以产生您想要的输出:

digraph tríada {
  rankdir=LR;
  edge [arrowhead=none];
  label="* socialmente reconocido";
  labeljust=left;

  subgraph cluster_autor {
    style=striped;
    label="autor*";

    subgraph cluster_sinonimia_nepa {
      style=dashed;
      label="sinonimia nombre-entidad-persona-autor";

      personas [shape=hexagon];
      entidad [shape=rect];
      real [shape=diamond];
      ficticia [shape=diamond];
      nula [shape=diamond];
      denotación [shape=plain];
      nombre [shape=rect];
      node [label="" shape=point width=.01] 
      // bogus1 & bogus2 are needed to flip/swap/invert the funciones & producción nodes
      bogus1  bogus2
    }
    
    subgraph cluster_fp {
      label="";
      style=invis;
      funciones [label="atribución o\napropiación", shape=plain];
      producción [shape=plain];
    }

    máquinas [shape=hexagon];

    {personas máquinas} -> real [arrowhead=normal];
    {real ficticia nula} -> entidad [arrowhead=normal];
    entidad -> denotación ->  nombre
  }

  subgraph cluster_sinonimia_oa {
    style=dashed;
    label="sinonimia obra-texto";

    subgraph cluster_texto {
      style=striped;
      label=texto;
      selección [shape=rect];
    }
    obra [shape=rect, style=striped];
    supuesto [label="supuesto\nexistencial", shape=plain];
  }

  nombre -> funciones -> obra -> supuesto -> selección

  producción -> selección  
  entidad -> bogus1 [headclip=false ]
  bogus1 -> bogus2 [tailclip=false, headclip=false]
  bogus2 -> producción [tailclip=false]
}

在此处输入图像描述

(是的,大部分编辑都是不必要的)


推荐阅读