ドットグラフ言語-双方向エッジを自動的に作成する方法は?


83

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

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

これにより、 代替テキスト

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

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

しかし、それは非常に醜く見えます、そして私のエッジのすべてが双頭であるべきではありません。

代替テキスト

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

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

代替テキスト

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

回答:


67

'concentrate = true'はどうですか?:

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

コンセントレート= trueの場合

ドキュメントから:

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


私のラベルで動作し、古いバージョンを実行しています。
アーロンホール

1
それが助けになるなら...これは私にとってはうまくいきませんでした、それは端を合体させたのですが、最後に1本の矢印を置くだけでした。それから私は「厳密な有向グラフ」を試みました...そしてそれは完全に機能します。
philw 2015年

これはばかげていますが、OPが望んでいたことです。
ダンローゼンスターク

@philwそれは私にとっても機能しません、私は単一の矢じりだけでエッジを取得します。pygraphvizを使用していますが、試しましたがpgv.AGraph(directed=True, strict=True)、どちらも機能しません。再び2つのエッジが表示されます...何か提案はありますか?
トロピリウム

101

あなたはただ使うべきです:

A -> B [dir=both]

4
これは私にいくつかの冗長な行を節約しました、そして私はそれと適切な場合にはトップアンサーを使用しています。
アーロンホール

2
「両方」を引用符で囲む必要はありません
Yetti99 2018

@NoahSussman実際には質問に答えていないため、受け入れられる答えにはなりません;)
DanRosenstark19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.