You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Graphviz生成无重叠规则树形图?现有方案存问题

Graphviz树形图排版优化求助

我尝试用Graphviz生成目标树形图:
目标树形图

当前实现已接近需求,效果如下:
当前实现效果

但存在以下问题:

  • 子树不应重叠,但PP子树与(.)子树发生重叠;
  • 子树布局应规整,多子节点需分布在父节点左右,但PP子树未满足该要求。

使用subgraph clusters解决重叠问题后,又出现新问题:边不直,且无法在隐藏边框的同时避免大量留白,效果如下:
clusters优化后效果

特此询问是否有更优的树形排版方法,以下是Python生成的Graphviz代码:

graph {
    subgraph 0 {
        subgraph 1 {
            0 [label=ROOT group=0 shape=plain]
            subgraph 8 {
                1 [label=S group=1 shape=plain]
                subgraph 11 {
                    2 [label=NP group=2 shape=plain]
                    subgraph 15 {
                        3 [label=PRP group=3 shape=plain]
                        4 [label=I shape=plain]
                        3 -- 4
                        4 [label=I group=3]
                    }
                    2 -- 3
                    3 [label=PRP group=2]
                }
                subgraph 24 {
                    5 [label=VP group=5 shape=plain]
                    subgraph 28 {
                        6 [label=VBD group=6 shape=plain]
                        7 [label=solved shape=plain]
                        6 -- 7
                        7 [label=solved group=6]
                    }
                    subgraph 41 {
                        8 [label=NP group=8 shape=plain]
                        subgraph 45 {
                            9 [label=DT group=9 shape=plain]
                            10 [label=the shape=plain]
                            9 -- 10
                            10 [label=the group=9]
                        }
                        subgraph 63 {
                            11 [label=NN group=11 shape=plain]
                            12 [label=problem shape=plain]
                            11 -- 12
                            12 [label=problem group=11]
                        }
                        8 -- 9
                        8 -- 11
                    }
                    subgraph 77 {
                        13 [label=PP group=13 shape=plain]
                        subgraph 81 {
                            14 [label=IN group=14 shape=plain]
                            15 [label=on shape=plain]
                            14 -- 15
                            15 [label=on group=14]
                        }
                        subgraph 89 {
                            16 [label=NP group=16 shape=plain]
                            subgraph 93 {
                                17 [label=DT group=17 shape=plain]
                                18 [label=the shape=plain]
                                17 -- 18
                                18 [label=the group=17]
                            }
                            subgraph 102 {
                                19 [label=NN group=19 shape=plain]
                                20 [label=bus shape=plain]
                                19 -- 20
                                20 [label=bus group=19]
                            }
                            16 -- 17
                            16 -- 19
                        }
                        13 -- 14
                        13 -- 16
                    }
                    5 -- 6
                    5 -- 8
                    5 -- 13
                }
                subgraph 114 {
                    21 [label="." group=21 shape=plain]
                    22 [label="." shape=plain]
                    21 -- 22
                    22 [label="." group=21]
                }
                1 -- 2
                1 -- 5
                1 -- 21
            }
            0 -- 1
            1 [label=S group=0]
        }
    }
    ranksep=0.2
}

内容的提问来源于stack exchange,提问作者mginn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:15:57