2

我有一个由 3 种类型的边组成的 UMLish 图。组成、协会和专业化。我希望图表根据组合和专业化边缘分层布局,但我主要关心的是我希望它是可读的。我在布局中遇到的问题是重叠的边缘使得无法跟随边缘并理解图形。

是否有任何设置可以产生更好的布局?我使用 splines=ortho 得到了一些改进的结果,但该设置似乎导致 dot 在 OSX 上崩溃。

这是我的图表:

    digraph G{
    label="reference"
    node [
        fontname = "Bitstream Vera Sans" 
        fontsize = 8 
        shape = "record" 
    ]
    Node_84 [
        label = "{Node_84|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\l}"
    ]

    Node_82 [
        label = "{Node_82|A\lB\lC\lD\l}"
    ]

    Node_21 [
        label = "{Node_21|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\l}"
    ]

    Node_74 [
        label = "{Node_74|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_59 [
        label = "{Node_59|A\lB\lC\l}"
    ]

    Node_8 [
        label = "{Node_8|A\lB\lC\lD\lE\lF\lG\l}"
    ]

    Node_58 [
        label = "{Node_58|A\l}"
    ]

    Node_30 [
        label = "{Node_30|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\l}"
    ]

    Node_4 [
        label = "{Node_4|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\l}"
    ]

    Node_53 [
        label = "{Node_53|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\l}"
    ]

    Node_48 [
        label = "{Node_48|A\lB\lC\lD\lE\lF\lG\lH\lI\l}"
    ]

    Node_56 [
        label = "{Node_56|A\lB\lC\lD\lE\l}"
    ]

    Node_80 [
        label = "{Node_80|A\l}"
    ]

    Node_65 [
        label = "{Node_65|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_50 [
        label = "{Node_50|A\lB\lC\lD\lE\lF\lG\lH\lI\l}"
    ]

    Node_32 [
        label = "{Node_32|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\l}"
    ]

    Node_55 [
        label = "{Node_55|A\lB\l}"
    ]

    Node_96 [
        label = "{Node_96|A\lB\lC\lD\l}"
    ]

    Node_83 [
        label = "{Node_83|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\l}"
    ]

    Node_57 [
        label = "{Node_57|A\lB\lC\lD\l}"
    ]

    Node_86 [
        label = "{Node_86|A\lB\lC\l}"
    ]

    Node_73 [
        label = "{Node_73|A\lB\lC\lD\lE\lF\lG\lH\lI\l}"
    ]

    Node_12 [
        label = "{Node_12|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_69 [
        label = "{Node_69|A\lB\lC\l}"
    ]

    Node_1 [
        label = "{Node_1|A\l}"
    ]

    Node_64 [
        label = "{Node_64|A\lB\lC\lD\lE\lF\l}"
    ]

    Node_61 [
        label = "{Node_61|A\lB\lC\lD\lE\l}"
    ]

    Node_17 [
        label = "{Node_17|A\lB\lC\lD\lE\l}"
    ]

    Node_6 [
        label = "{Node_6|A\lB\lC\lD\lE\l}"
    ]

    Node_3 [
        label = "{Node_3|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\l}"
    ]

    Node_42 [
        label = "{Node_42|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\l}"
    ]

    Node_45 [
        label = "{Node_45|A\lB\lC\lD\l}"
    ]

    Node_19 [
        label = "{Node_19|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\l}"
    ]

    Node_63 [
        label = "{Node_63|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\l}"
    ]

    Node_7 [
        label = "{Node_7|}"
    ]

    Node_91 [
        label = "{Node_91|A\lB\lC\lD\lE\lF\lG\l}"
    ]

    Node_76 [
        label = "{Node_76|A\l}"
    ]

    Node_34 [
        label = "{Node_34|A\lB\lC\lD\lE\lF\lG\lH\l}"
    ]

    Node_62 [
        label = "{Node_62|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_46 [
        label = "{Node_46|A\lB\lC\lD\lE\lF\lG\l}"
    ]

    Node_11 [
        label = "{Node_11|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_26 [
        label = "{Node_26|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\l}"
    ]

    Node_54 [
        label = "{Node_54|A\lB\lC\lD\lE\lF\lG\lH\lI\l}"
    ]

    Node_94 [
        label = "{Node_94|A\l}"
    ]

    Node_51 [
        label = "{Node_51|A\l}"
    ]

    Node_44 [
        label = "{Node_44|A\lB\lC\lD\lE\l}"
    ]

    Node_70 [
        label = "{Node_70|A\lB\lC\lD\lE\lF\lG\lH\l}"
    ]

    Node_18 [
        label = "{Node_18|A\lB\lC\l}"
    ]

    Node_41 [
        label = "{Node_41|A\lB\lC\lD\lE\lF\lG\lH\lI\l}"
    ]

    Node_72 [
        label = "{Node_72|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_67 [
        label = "{Node_67|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_92 [
        label = "{Node_92|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\l}"
    ]

    Node_14 [
        label = "{Node_14|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_85 [
        label = "{Node_85|A\lB\l}"
    ]

    Node_15 [
        label = "{Node_15|A\lB\l}"
    ]

    Node_79 [
        label = "{Node_79|A\lB\lC\l}"
    ]

    Node_49 [
        label = "{Node_49|}"
    ]

    Node_10 [
        label = "{Node_10|A\lB\l}"
    ]

    Node_0 [
        label = "{Node_0|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\l}"
    ]

    Node_13 [
        label = "{Node_13|A\lB\l}"
    ]

    Node_2 [
        label = "{Node_2|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\l}"
    ]

    Node_88 [
        label = "{Node_88|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_52 [
        label = "{Node_52|A\lB\lC\lD\lE\lF\lG\l}"
    ]

    Node_23 [
        label = "{Node_23|A\lB\lC\lD\lE\l}"
    ]

    Node_39 [
        label = "{Node_39|A\lB\l}"
    ]

    Node_87 [
        label = "{Node_87|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\l}"
    ]

    Node_93 [
        label = "{Node_93|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\l}"
    ]

    Node_20 [
        label = "{Node_20|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\l}"
    ]

    Node_35 [
        label = "{Node_35|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_66 [
        label = "{Node_66|A\lB\lC\lD\lE\l}"
    ]

    Node_5 [
        label = "{Node_5|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\l}"
    ]

    Node_71 [
        label = "{Node_71|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\l}"
    ]

    Node_22 [
        label = "{Node_22|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\l}"
    ]

    Node_27 [
        label = "{Node_27|A\l}"
    ]

    Node_33 [
        label = "{Node_33|A\lB\lC\lD\lE\lF\lG\lH\l}"
    ]

    Node_24 [
        label = "{Node_24|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\l}"
    ]

    Node_16 [
        label = "{Node_16|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\lY\lZ\l}"
    ]

    Node_75 [
        label = "{Node_75|A\l}"
    ]

    Node_38 [
        label = "{Node_38|A\lB\lC\lD\l}"
    ]

    Node_43 [
        label = "{Node_43|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\lX\l}"
    ]

    Node_78 [
        label = "{Node_78|A\lB\lC\lD\lE\lF\l}"
    ]

    Node_68 [
        label = "{Node_68|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\l}"
    ]

    Node_89 [
        label = "{Node_89|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\l}"
    ]

    Node_29 [
        label = "{Node_29|A\lB\lC\lD\lE\lF\lG\lH\l}"
    ]

    Node_60 [
        label = "{Node_60|A\l}"
    ]

    Node_90 [
        label = "{Node_90|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\l}"
    ]

    Node_31 [
        label = "{Node_31|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\l}"
    ]

    Node_28 [
        label = "{Node_28|A\lB\lC\l}"
    ]

    Node_81 [
        label = "{Node_81|A\lB\lC\lD\lE\l}"
    ]

    Node_37 [
        label = "{Node_37|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\l}"
    ]

    Node_95 [
        label = "{Node_95|A\lB\lC\lD\lE\l}"
    ]

    Node_9 [
        label = "{Node_9|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\lL\lM\lN\lO\lP\lQ\lR\lS\lT\lU\lV\lW\l}"
    ]

    Node_47 [
        label = "{Node_47|A\l}"
    ]

    Node_40 [
        label = "{Node_40|A\lB\lC\lD\lE\lF\lG\lH\lI\lJ\lK\l}"
    ]

    Node_25 [
        label = "{Node_25|A\lB\l}"
    ]

    Node_36 [
        label = "{Node_36|A\lB\lC\l}"
    ]


    edge [
        dir="both"
        arrowtail="diamond"
        arrowhead="open"
    ]

    Node_84 -> Node_85[taillabel="*"]
    Node_84 -> Node_86[taillabel="*"]
    Node_74 -> Node_60[taillabel="*"]
    Node_48 -> Node_72[taillabel="*"]
    Node_65 -> Node_58[taillabel="*"]
    Node_50 -> Node_51[taillabel="*"]
    Node_83 -> Node_9[taillabel="*"]
    Node_83 -> Node_12[taillabel="*"]
    Node_83 -> Node_14[taillabel="*"]
    Node_83 -> Node_54[taillabel="*"]
    Node_83 -> Node_78[taillabel="*"]
    Node_83 -> Node_79[taillabel="*"]
    Node_83 -> Node_80[taillabel="*"]
    Node_83 -> Node_81[taillabel="*"]
    Node_83 -> Node_82[taillabel="*"]
    Node_12 -> Node_13[taillabel="*"]
    Node_17 -> Node_18[taillabel="*"]
    Node_3 -> Node_4[taillabel="*"]
    Node_3 -> Node_5[taillabel="*"]
    Node_42 -> Node_32[taillabel="*"]
    Node_19 -> Node_41[taillabel="*"]
    Node_91 -> Node_1[taillabel="*"]
    Node_11 -> Node_42[taillabel="*"]
    Node_54 -> Node_55[taillabel="*"]
    Node_70 -> Node_38[taillabel="*"]
    Node_70 -> Node_71[taillabel="*"]
    Node_72 -> Node_0[taillabel="*"]
    Node_72 -> Node_3[taillabel="*"]
    Node_72 -> Node_4[taillabel="*"]
    Node_72 -> Node_5[taillabel="*"]
    Node_72 -> Node_11[taillabel="*"]
    Node_72 -> Node_17[taillabel="*"]
    Node_72 -> Node_19[taillabel="*"]
    Node_72 -> Node_21[taillabel="*"]
    Node_72 -> Node_22[taillabel="*"]
    Node_72 -> Node_31[taillabel="*"]
    Node_72 -> Node_35[taillabel="*"]
    Node_72 -> Node_38[taillabel="*"]
    Node_72 -> Node_39[taillabel="*"]
    Node_72 -> Node_47[taillabel="*"]
    Node_72 -> Node_48[taillabel="*"]
    Node_72 -> Node_50[taillabel="*"]
    Node_72 -> Node_56[taillabel="*"]
    Node_72 -> Node_57[taillabel="*"]
    Node_72 -> Node_61[taillabel="*"]
    Node_72 -> Node_64[taillabel="*"]
    Node_72 -> Node_66[taillabel="*"]
    Node_72 -> Node_68[taillabel="*"]
    Node_72 -> Node_69[taillabel="*"]
    Node_72 -> Node_70[taillabel="*"]
    Node_72 -> Node_72[taillabel="*"]
    Node_72 -> Node_73[taillabel="*"]
    Node_72 -> Node_75[taillabel="*"]
    Node_72 -> Node_76[taillabel="*"]
    Node_72 -> Node_37[taillabel="*"]
    Node_72 -> Node_87[taillabel="*"]
    Node_72 -> Node_89[taillabel="*"]
    Node_72 -> Node_91[taillabel="*"]
    Node_72 -> Node_93[taillabel="*"]
    Node_72 -> Node_94[taillabel="*"]
    Node_72 -> Node_95[taillabel="*"]
    Node_67 -> Node_59[taillabel="*"]
    Node_14 -> Node_15[taillabel="*"]
    Node_35 -> Node_0[taillabel="*"]
    Node_35 -> Node_3[taillabel="*"]
    Node_35 -> Node_11[taillabel="*"]
    Node_35 -> Node_19[taillabel="*"]
    Node_35 -> Node_73[taillabel="*"]
    Node_35 -> Node_87[taillabel="*"]
    Node_35 -> Node_89[taillabel="*"]
    Node_5 -> Node_92[taillabel="*"]
    Node_5 -> Node_6[taillabel="*"]
    Node_5 -> Node_8[taillabel="*"]
    Node_71 -> Node_2[taillabel="*"]
    Node_71 -> Node_20[taillabel="*"]
    Node_71 -> Node_33[taillabel="*"]
    Node_71 -> Node_34[taillabel="*"]
    Node_71 -> Node_40[taillabel="*"]
    Node_71 -> Node_52[taillabel="*"]
    Node_71 -> Node_53[taillabel="*"]
    Node_71 -> Node_90[taillabel="*"]
    Node_22 -> Node_23[taillabel="*"]
    Node_22 -> Node_24[taillabel="*"]
    Node_22 -> Node_25[taillabel="*"]
    Node_22 -> Node_26[taillabel="*"]
    Node_22 -> Node_27[taillabel="*"]
    Node_22 -> Node_28[taillabel="*"]
    Node_22 -> Node_29[taillabel="*"]
    Node_22 -> Node_30[taillabel="*"]
    Node_43 -> Node_44[taillabel="*"]
    Node_43 -> Node_45[taillabel="*"]
    Node_43 -> Node_46[taillabel="*"]
    Node_68 -> Node_21[taillabel="*"]
    Node_68 -> Node_38[taillabel="*"]
    Node_68 -> Node_57[taillabel="*"]
    Node_68 -> Node_64[taillabel="*"]
    Node_68 -> Node_69[taillabel="*"]
    Node_68 -> Node_70[taillabel="*"]
    Node_89 -> Node_41[taillabel="*"]
    Node_31 -> Node_3[taillabel="*"]
    Node_31 -> Node_39[taillabel="*"]
    Node_37 -> Node_36[taillabel="*"]
    Node_37 -> Node_43[taillabel="*"]
    Node_37 -> Node_7[taillabel="*"]
    Node_95 -> Node_96[taillabel="*"]
    Node_9 -> Node_10[taillabel="*"]

    edge [
        dir="both"
        arrowtail="onormal"
        arrowhead="none"
    ]

    Node_37 -> Node_84
    Node_7 -> Node_21
    Node_7 -> Node_74
    Node_49 -> Node_48
    Node_7 -> Node_65
    Node_7 -> Node_83
    Node_7 -> Node_6
    Node_7 -> Node_63
    Node_7 -> Node_62
    Node_7 -> Node_67
    Node_7 -> Node_88
    Node_7 -> Node_16
    Node_37 -> Node_36

    edge [
        dir="both"
        arrowtail="none"
        arrowhead="none"
        constraint=false
        color="blue"
    ]

    Node_84 -> Node_56[taillabel="*"]
    Node_21 -> Node_6[taillabel="*"]
    Node_21 -> Node_61[taillabel="*"]
    Node_21 -> Node_63[taillabel="*"]
    Node_53 -> Node_71[taillabel="*"]
    Node_48 -> Node_41[taillabel="*"]
    Node_65 -> Node_66[taillabel="*"]
    Node_50 -> Node_56[taillabel="*"]
    Node_6 -> Node_5[taillabel="*"]
    Node_6 -> Node_61[taillabel="*"]
    Node_6 -> Node_71[taillabel="*"]
    Node_63 -> Node_38[taillabel="*"]
    Node_63 -> Node_91[taillabel="*"]
    Node_34 -> Node_71[taillabel="*"]
    Node_72 -> Node_37[taillabel="?"]
    Node_72 -> Node_76[taillabel="*"]
    Node_2 -> Node_71[taillabel="*"]
    Node_52 -> Node_71[taillabel="*"]
    Node_20 -> Node_71[taillabel="*"]
    Node_71 -> Node_38[taillabel="*"]
    Node_71 -> Node_70[taillabel="*"]
    Node_33 -> Node_71[taillabel="*"]
    Node_90 -> Node_71[taillabel="*"]
    Node_37 -> Node_17[taillabel="*"]
    Node_37 -> Node_41[taillabel="*"]
    Node_37 -> Node_47[taillabel="*"]
    Node_37 -> Node_50[taillabel="*"]
    Node_37 -> Node_73[taillabel="*"]
    Node_37 -> Node_94[taillabel="*"]
    Node_40 -> Node_71[taillabel="*"]
}

图形

4

0 回答 0