【问题标题】:Dot graph language - how to make bidirectional edges automatically?点图语言 - 如何自动制作双向边?
【发布时间】:2011-03-28 14:33:36
【问题描述】:

这是我的点图的一个非常简化的示例:

strict digraph graphName {
A->B
B->A
}

这会创建

相反,我希望在 A 和 B 之间显示一条边,但带有双箭头。我知道如何将双箭头作为全局选项:

strict digraph graphName {
  edge [dir="both"]
A->B
B->A
}

但这看起来很丑,而且不是我所有的边缘都应该是双头的。

如果我对图形进行更多处理并自己检测双重参考并将两条边替换为一条边,它看起来还可以。但我宁愿不必做这个额外的步骤

strict digraph graphName {
A->B [dir="both"]
}

有更好的解决方案吗?

【问题讨论】:

    标签: graph graphviz dot


    【解决方案1】:

    你应该只使用:

    A -> B [dir=both]
    

    【讨论】:

    • 这为我节省了一些多余的行,我正在使用它以及适当的最佳答案。
    • “both”不需要引号
    • @NoahSussman 这不是公认的答案,因为它实际上并没有回答问题;)
    【解决方案2】:

    'concentrate=true' 怎么样?:

    strict digraph graphName {
    concentrate=true
    A->B
    B->A
    }
    

    来自documentation

    如果为真,请使用边缘集中器。这 将多边合并为一条边 并导致部分平行的边缘 分享他们的部分路径。后者 功能在外面尚不可用 点。

    【讨论】:

    • 适用于我的标签,并且我正在运行旧版本。
    • 如果有帮助...这对我不起作用,因为它合并了边缘,但只在末端放了一个箭头。然后我尝试“严格的有向图”......然后它完美地工作了。
    • 这很愚蠢,但这是 OP 想要的,所以大了!
    • @philw 它对我也不起作用,我只用一个箭头得到边缘。我正在使用 pygraphviz,我尝试了pgv.AGraph(directed=True, strict=True),但它也不起作用,我又得到了两个优势......有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多