2015-07-21 153 views
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。

非常感谢 简因此

+0

我要回答我的问题 - 因为我一直试图在过去几年来解决这个天。事实证明,我只需要在标签中定义文本的开头和结尾处省略{}。 因此,现在单个标签看起来像这样: 这给了我正是我想要的东西。一个架构(类似于一个类图)从左到右布置,“类”的三个部分垂直堆叠。 –

回答

0

答案是:

digraph hierarchy { 
node[shape=record,style=filled,fillcolor=gray95] 
edge[dir=back, arrowtail=empty] 
graph[size="15,20"] 
rankdir=LR 

1[label = "Hazards|+ ID\n + Description\n + RiskLevel\n+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 

}