我正在以点为单位绘制图表。为了使其清晰易读,我需要微调边缘标签的位置,以及(如果可能的话)使某些边缘笔直而其他边缘弯曲。我很欣赏关于如何用dot完成这些事情的一般建议,但为了具体起见,我在下面列出了我的具体问题。
以下是代码,后面是目前的代码:
digraph myGraph {
rankdir=BT;
splines=line;
"AB.BC" -> "AB.AC.BC" [weight=4]
"AB.BC" -> "ABC" [color=red,style=dashed,label="I(A;C|B)"]
"A.B.C" -> "A.BC" [color=red, label="I(B;C)"]
"A.B.C" -> "AC.B" [color=red, label="I(A;C)"]
"A.B.C" -> "AB.C" [color=red, label="I(A;B)"]
"A.BC" -> "AB.BC" [color=red, label="I(A;B)"]
"A.BC" -> "AC.BC" [color=red, label="I(A;C)"]
"AB.AC.BC" -> "ABC" [weight=4]
"AC.B" -> "AC.BC" [color=red, label="I(B;C)"]
"AC.B" -> "AB.AC" [color=red, label="I(A;B)"]
"AC.BC" -> "AB.AC.BC" [weight=4]
"AC.BC" -> "ABC" [color=red,style=dashed, label="I(A;B|C)"]
"AB.AC" -> "AB.AC.BC" [weight=4]
"AB.AC" -> "ABC" [color=red,style=dashed, label="I(B;C|A)"]
"AB.C" -> "AB.BC" [color=red, label="I(A;B)"]
"AB.C" -> "AB.AC" [color=red, label="I(A;C)"]
}
这接近我想要的,但它有一些问题:
我尝试使用rowsep
和nodesep
属性,但无法改进它。如果我删除splines=line
行,它就变得清晰但不是我想要的:
虚线边缘弯曲很好 - 它实际上很好,因为它会阻止它们从顶部重叠第二个节点 - 但实心边缘应该是直的。
我想了解如何微调节点,边缘和标签位置的任何建议(因为文档真的没有用,很难找到很好的例子),但具体来说,我的问题是:
我可以告诉圆点使特定边缘弯曲而保持其他直线吗? (我知道有一个splineType
边缘属性,但文档并没有给我一个如何使用它的线索,我甚至不确定这是它的作用。)
如果上述情况不可能,我如何告诉圆点使直线变直,而不是在标签上弯曲?
对于直边,如何微调标签的位置?我不介意手工做,并且似乎有几个边缘属性可以帮助我做到这一点,但它们似乎都没有任何效果,所以我一定做错了。
作为一个额外的问题:有没有办法让节点更像网格布局,以便它们能够很好地垂直对齐?
任何答案都表示赞赏,但最有帮助的是能够解释如何更普遍地处理这些问题的答案,以便将来访问者,而不仅仅是修复我的代码。