【发布时间】:2017-03-23 16:08:25
【问题描述】:
我是 graphviz 的新手,需要一些帮助来改进布局。
对于我的 uni 课程,我必须为有限状态机绘制图表。代码如下:
digraph fsm{
//rankdir=LR; //left-right orientation
node[shape=Mrecord]
S00[label="{S0|1111111111}"];
S01[label="{S1|0110010101}"];
S02[label="{S2|1000010110}"];
S03[label="{S3|1000010110}"];
S04[label="{S4|0100010101}"];
S05[label="{S5|0010110101}"];
S06[label="{S6|0011001001}"];
S07[label="{S7|0011001001}"];
S08[label="{S8|0010100101}"];
S09[label="{S9|0100100000}"];
S10[label="{S10|0100100000}"];
S11[label="{S11|0000000000}"];
S12[label="{S12|0100100000}"];
//S0
S00 -> S00[label="t<8s"];
S00 -> S01[label="t>8s"];
S00 -> S09[label="NM"];
//S1
S01 -> S01[label="t<1s"];
S01 -> S02[label="t>1s"];
S01 -> S09[label="NM"];
//S2
S02 -> S02[label="t<6s"];
S02 -> S03[label="t>6s"];
S02 -> S09[label="NM"];
//S3
S03 -> S03[label="t<7s"];
S03 -> S04[label="t>7s OR I_NS OR I_HS-F"];
S03 -> S09[label="NM"];
//S4
S04 -> S04[label="t<1s"];
S04 -> S05[label="t>1s"];
S04 -> S09[label="NM"];
//S5
S05 -> S05[label="t<1s"];
S05 -> S06[label="t>1s"];
S05 -> S09[label="NM"];
//S6
S06 -> S06[label="t<2s"];
S06 -> S07[label="t>2s"];
S06 -> S09[label="NM"];
//S7
S07 -> S07[label="t<4s"];
S07 -> S08[label="t>4s OR I_HS OR I_NS-F"];
S07 -> S09[label="NM"];
//S8
S08 -> S08[label="t<1s"];
S08 -> S01[label="t>1s"];
S08 -> S09[label="NM"];
//S9
S09 -> S09[label="t<1.5s"];
S09 -> S10[label="t>1.5s"];
//S10
S10 -> S10[label="t<0.5s"];
S10 -> S11[label="t>0.5s"];
S10 -> S12[label="t>0.5s"];
//S11
S11 -> S11[label="t<0.5s"];
S11 -> S10[label="t>0.5s"];
S11 -> S12[label="t>0.5s"];
//S12
S12 -> S12[label="t<1.5s"];
S12 -> S00[label="t>1.5s"];
}
输出是这样的:
所以是的,它有效。但是很丑。
关于如何改进布局的任何建议?
最困扰我的是边缘和文字之间的距离很小,边缘的重叠以及从S4-S7到S9边缘的曲线。
非常感谢任何意见。
【问题讨论】: