【问题标题】:Graphviz: how to rotate a node (or a subgraph)?Graphviz:如何旋转节点(或子图)?
【发布时间】:2011-05-29 17:35:41
【问题描述】:

我正在尝试旋转一个节点(或一个子图,包含一个节点 - 无论哪个可能/更容易),如下图所示:

(请注意,“B”标签是否旋转对我来说并不重要 - 只是 'verti-*' 记录中的文本[或者更确切地说,整个记录节点]如图所示旋转)

 

但是,我能做到的最接近的是以下dot 代码:

digraph graphname {
    node [fontname=Monospace, fontsize=14]; 
    subgraph clusterMasterBox {
        node [shape=record];
        l1 [label = "{ horiz-1 \r| \
 horiz-2 \r| \
 horiz-3 \r| \
 horiz-4 \r} \
"];
        subgraph clusterSubRotateBox {
            rotate=90;
            node [shape=record,rotate=90];
            l2 [label = "{ verti-1 \r| \
 verti-2 \r| \
 verti-3 \r| \
 verti-4 \r} \
"];     
            label="B";
        }
    label="A"
    }
}

我在那里有subgraph clusterSubRotateBox 的唯一原因(以及它嵌套在clusterMasterBox 内的唯一原因)是因为我希望我可以为它分配旋转,但显然我不能——因为上面的代码生成这张图片:

所以我的问题是 - 有没有办法旋转记录节点?如果不是单独的,那么可能作为子图的一部分(或不同类型的“对象”)?

提前感谢您的任何建议,
干杯!

【问题讨论】:

    标签: rotation graphviz subgraph


    【解决方案1】:

    如果您想旋转单个基于 record 的节点,那么 rankdir 将起作用。我为我的图表试了一下,

    digraph plugnoid {
        rankdir=LR;
        node[shape=Mrecord];
        plugnoid [label="swarm| {<load0> onLoad|<plugin0> Plugin|<quit0> onQuit}|{<run0>run|<rehash0>rehash}"];}
    

    rankdir 可以有值 LRRLTB(默认)。当我将 rankdir 更改为 TB 时,输出发生了变化,

    您可能想在图表上尝试它们以获得所需的结果。我经历过,当我使用 subgraph 并设置不同的 rankdir 时,结果并没有那么好。请参阅http://www.graphviz.org/doc/info/shapes.html#record 了解更多详情。

    【讨论】:

      【解决方案2】:

      对于单个节点,有orientation 属性。我刚用过

      node[shape=hexagon, orientation=30]

      制作一个顶部有一点而不是平顶的六边形。

      不幸的是,它似乎不适用于“记录”类型 :-(

      【讨论】:

      • 这适用于形状,但不幸的是,不会旋转标签。
      【解决方案3】:

      图形对象上应该有一个“旋转”属性(请参阅http://www.graphviz.org/doc/info/attrs.html#drotation),但在我的测试中它没有做任何事情。并且,根据文档,它仅适用于整个图(而不是集群/子图)。 我想您首先将子图呈现为 postscript,然后将其作为单个占位符节点的自定义形状包含在最终图中。如果你不能让“旋转”来做它的事情,那么 postscript 肯定有一种简单的方法来应用变换(在这种情况下是旋转),可能就像在生成的代码前面加上一些坐标定义一样简单。很抱歉挥手,但我现在没有时间尝试。

      【讨论】:

      • 感谢@mwx 的评论!这是迄今为止最好的答案(只是确认旋转属性仅适用于整个图表很好),所以 +1 并接受...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 2018-08-23
      • 2023-03-12
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多