Graphviz、エッジのサイズを変更する


90

ドット(graphviz)でエッジのサイズを変更するには?一部のエッジを「太字」にしたい。

回答:


132

私はシュバロフの答えを補足したかった。ペン幅は確かに正しいコマンドです。さらに、シュバロフの答えではペン幅はノードとエッジの両方のプロパティです-これも正しいです。

私が作りたかった区別:

  • ペン幅は、ノードプロパティとして使用されると(たとえば、 "NodeA" [penwidth = 5])、そのノードの境界線の太さに影響します

  • penwidthをエッジプロパティとして使用すると、エッジの線の太さに影響します(デフォルト値は "1"、penwidth = 2を指定すると、エッジが太字で表示されます)タイプ

  • エッジの線の太さを変更する場合は、ペン幅を変更する必要はありません 、そのエッジで接続されている2つのノードの(shuvalevの答えが示唆するように)

  • ための有向グラフ(エッジが方向を有する)はまた、サイズ/重量変更したいかもしれない矢印arrowtailをとともに、エッジ重みすべての3つは、比例残るように、

  • 重みを設定することでエッジの長さを変更できます他の場所と同様にプロパティを。デフォルト値は1.0です。その値を大きくすると、レンダリング中にこのエッジを引き伸ばすコストが増加します(つまり、描画アルゴリズムは、このエッジが長いソリューションに高いペナルティを適用します)。1から4のエッジが1から2のエッジよりも短いことに注意してください。

次のコードは、このすべてを示しています。レンダリングされたグラフはコードの下に表示されます。

digraph {
    /* declare the node & style them */
    "Node 1" [shape=diamond, penwidth=3, style=filled, fillcolor="#FCD975"];
    "Node 2" [style=filled,fillcolor="#9ACEEB" ];
    "Node 3" [shape=diamond, style=filled, fillcolor="#FCD975" ];
    "Node 4" [style=filled, fillcolor="#9ACEEB" ]

    /* declare the edges & style them */
    "Node 1" -> "Node 2" [dir=none, weight=1, penwidth=3] ;
    "Node 1" -> "Node 3" [dir=none, color="#9ACEEB"] ;
    "Node 1" -> "Node 4" [arrowsize=.5, weight=2.]
}

ここに画像の説明を入力してください


なんらかの理由で、weightプロパティは私のために何も変更していません。残りはとても役に立ちます、しかし…ありがとう!
clozach、2018

これは特に画像で非常に役に立ちました。ここでの関係を理解するのに役立ちました。graphvizの構文は少し変わっているので、そのような素晴らしい画像は本当に役に立ちました。上の部分で変更する場合、唯一の部分はペン幅に関してもう少し説明を追加することです。現在のところ、線はすべて太字になっています(上記のおかげで変更しました)が、周囲の境界線は個々のノードは、私が最初にしたかった厚さではありません。最終的にはこの問題を解決できるかもしれませんが、ここでソリューションを公開するのを忘れた場合は、代わりにこれを追加します。:)
シェビー

20

これを試して:

"NodeA" [ penwidth = 5]
"NodeB" [ penwidth = 5]
NodeA->NodeB [ penwidth = 3]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.