web-dev-qa-db-ja.com

ドットグラフ言語-双方向エッジの作成方法

これが私のドットグラフの非常に単純化された例です。

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

これは作成します alt text

代わりに、AとBの間に二重矢印の頭で表示される単一のエッジが必要です。グローバルオプションとして二重矢印を取得する方法を知っています。

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

しかし、それは非常に見苦しく、すべてのエッジがデュアルヘッドである必要はありません。

alt text

グラフをさらに処理して、二重参照を自分で検出し、2つのエッジを単一のエッジに置き換えると、OKに見えます。しかし、私はむしろこの余分なステップを実行する必要はありません

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

alt text

より良い解決策はありますか?

65
I82Much

「concentrate = true」はどうですか?:

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

with concentrate=true

ドキュメント から:

Trueの場合、エッジコンセントレーターを使用します。これにより、マルチエッジが単一のエッジにマージされ、部分的に平行なエッジがパスの一部を共有します。後者の機能は、ドット以外ではまだ利用できません。

53
spenthil

あなただけを使用する必要があります:

A-> B [dir = "both"]

78
user2598811