2
我想在GraphViz中显示类图。我希望它主要是水平布局的 - 但是有一个问题,因为它将水平方向上的每个类的三个部分分开(即类名,属性和方法)也会水平显示。我试过每个节点的rankdir = LR的子图,但它不起作用。混合垂直和水平布局(水平布局类图)
这里是我的代码:
digraph hierarchy {
node[shape=record,style=filled,fillcolor=gray95]
edge[dir=back, arrowtail=empty]
graph[size="20,10"]
rankdir=LR
1[label = "{Hazards|+ ID\n + Description\n + RiskLevel|+f Topics}" ]
2[label = "{Faults|+ ID\n + Fault\n + Likelihood\n + Impact\n + Mitigation|+f Topics}"]
3[label = "{User Requirements|+ ID\n + Requirement\n + Status\n + Priority\n + Contributors|+f NFR Types\n+fTopics\n +f Find-the-expert\n+f Volatility}"]
4[label = "{Acceptance Tests|+ TestID\n + Script\n +CurrentStatus|+f Coverage}"]
5[label = "{Acceptance Test Log|+ TestID\n +DateRun\n + Relevance}"]
6[label = "{Regulatory Codes|+ ID\n + Regulation\n + Likelihood\n + Impact\n + Mitigation|+f Topics}"]
7[label = "{State Transition Diagram|+ ID\n + States\n + Transitions\n + Model}"]
8[label = "{System Requirements|+ ID\n + Description\n +Status\n + Priority|+f Topics}"]
9[label = "{Work Item|+ ID\n +Description\n + AssignedTo\n + DateCompleted\n + Comments|+f ProjectVelocity}"]
10[label = "{Bug Tracker|+ ID\n + Title\n +ReportedOn\n + FixedOn\n + Symptoms\n + State\n + Effort|+f Find-the-expert}"]
11[label = "{Source Code|+ ClassName\n +Code\n + CreatedBy\n + CreatedOn\n + LastModifiedBy\n + LastModifiedOn|+f Fault Likelihood\n + f Topics}"]
12[label = "{Unit Tests|+ TestID\n + Script\n +CurrentStatus|+f Coverage}"]
13[label = "{Unit Test Log|+ TestID\n + DateRun\n + ByWhom\n +Status\n + ActionItems}"]
14[label = "{Components|+ ID\n + Name|+f Fault Likelihood}"]
1->2
2->3
3->4
4->5
2->8
3->8
8->6
8->7
8->9
10->9
8->11
14->11
11->12
12->13
11->9
}
不幸的是,我不允许作为我没有一个StackOverflow上的声誉,发布图片。但是,您可以通过将rankdir = LR替换为rankdir = TB来查看垂直解决方案。
有谁知道如何将两个布局结合起来,以便类保持堆叠状态,即类名高于属性上面的函数等,但总体布局是LR?
如果有一种方法可以直接在GraphVis中指定,我宁愿不要使用UMLGraph.lib。
非常感谢 简因此
我要回答我的问题 - 因为我一直试图在过去几年来解决这个天。事实证明,我只需要在标签中定义文本的开头和结尾处省略{}。 因此,现在单个标签看起来像这样: 这给了我正是我想要的东西。一个架构(类似于一个类图)从左到右布置,“类”的三个部分垂直堆叠。 –