【问题标题】:Force GraphViz to align subgraphs one below other强制 GraphViz 将子图对齐在另一个之下
【发布时间】:2017-07-24 15:09:15
【问题描述】:

我有一个包含 3 个子图的图表,这些子图一个接一个地放置,我希望它们彼此堆叠在一起(我不希望子图内容的方向发生变化)。

简单的例子:

digraph G {
rankdir=TB;
    subgraph cluster_lkg{
        subgraph cluster_sentence_1{
            "A1","A2","A3"
            "A1" -> "A2"
            "A1" -> "A3"
        }
        subgraph cluster_concepts_1{
            "B1","B2","B3"
            "B1" -> "B2"
            "B1" -> "B3"
        }
    }
    subgraph cluster_fkgs{
            "C1","C2","C3"
            "C1" -> "C2"
            "C1" -> "C3"
    }

}

【问题讨论】:

    标签: graphviz subgraph


    【解决方案1】:

    为了使rankdir = TB 有效,您需要连接集群(或更准确地说,集群内的节点)。你可以通过使用不可见的边缘来做到这一点:

    digraph G 
    {
        rankdir=TB;    
        subgraph cluster_lkg
        {
            subgraph cluster_sentence_1
            {
                "A1","A2","A3"
                "A1" -> "A2"
                "A1" -> "A3"
            }
            subgraph cluster_concepts_1{
                "B1","B2","B3"
                "B1" -> "B2"
                "B1" -> "B3"
            }
            //A1 -> B1;
        }
        subgraph cluster_fkgs
        {
                "C1","C2","C3"
                "C1" -> "C2"
                "C1" -> "C3"
        }
        edge[ style = invis ];
        { A2 A3 } -> B1;
        { B2 B3 } -> C1;
    }
    

    产生

    节点 C1 未对齐 - 我猜这是来自嵌套集群,但我没有针对它的方法。无论如何,希望它有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2021-08-22
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多