微调边缘和标签放置点

时间:2017-12-07 01:11:44

标签: graphviz

我正在以点为单位绘制图表。为了使其清晰易读,我需要微调边缘标签的位置,以及(如果可能的话)使某些边缘笔直而其他边缘弯曲。我很欣赏关于如何用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)"]

}

enter image description here

这接近我想要的,但它有一些问题:

  • 标签的放置方式使您无法轻易看到哪个标签与哪个边缘相关
  • 由于某种原因,某些边缘在标签处有一个弯曲。 (在我添加标签之前,它们是直线出现。)

我尝试使用rowsepnodesep属性,但无法改进它。如果我删除splines=line行,它就变得清晰但不是我想要的:

enter image description here

虚线边缘弯曲很好 - 它实际上很好,因为它会阻止它们从顶部重叠第二个节点 - 但实心边缘应该是直的。

我想了解如何微调节点,边缘和标签位置的任何建议(因为文档真的没有用,很难找到很好的例子),但具体来说,我的问题是:

  1. 我可以告诉圆点使特定边缘弯曲而保持其他直线吗? (我知道有一个splineType边缘属性,但文档并没有给我一个如何使用它的线索,我甚至不确定这是它的作用。)

  2. 如果上述情况不可能,我如何告诉圆点使直线变直,而不是在标签上弯曲?

  3. 对于直边,如何微调标签的位置?我不介意手工做,并且似乎有几个边缘属性可以帮助我做到这一点,但它们似乎都没有任何效果,所以我一定做错了。

  4. 作为一个额外的问题:有没有办法让节点更像网格布局,以便它们能够很好地垂直对齐?

    任何答案都表示赞赏,但最有帮助的是能够解释如何更普遍地处理这些问题的答案,以便将来访问者,而不仅仅是修复我的代码。

0 个答案:

没有答案