4

GraphVizで展開型ゲームを図解しようとしています。コードをコンパイルすると、1つを除くすべての点で正しいグラフが作成されます。「War」ラベルをラベル付けするエッジの左側に配置して、エッジが「W」ではなく「r」に最も近くなるようにします。

これは、これまでの私の「ゲーム」またはグラフです。

    digraph hierarchy_of_D  { 

            graph [rankdir ="UD"] 
            node [color=black,shape=circle]
            //splines="polyline"

     I [label="R"] 

     subgraph infoset1 
      { 
       label="whatever" 
       rank="same" 
       1 [label="C"]
       2 [label="C"]
      } 


     I -> 1 [label="War"] //fix how this floats right of the line
     I -> 2 [label="Peace"]
     1 -> 2 [style=dashed, dir=none] 

     subgraph info21 
      { 
        rank="same" 
        3 [label="(2,2)", rank=sink, shape="plaintext"]
        4 [label="(5,1)", rank=sink, shape="plaintext"]
        5 [label="(1,5)", rank=sink, shape="plaintext"]
        6 [label="(4,4)", rank=sink, shape="plaintext"]
       } 

       1 -> 3 [label="War"]
       1 -> 4 [label="Peace"]
       2 -> 5 [label="War"]
       2 -> 6 [label="Peace"]

    } 

何か案は?私はすでに次のことを試しましたが、それは私が望むことをしません:

1 -> 3 [label="War/l"]

この質問その質問も参照してください。どちらにも答えはありません。さあ、これは三重点の価値があります!

4

2 に答える 2

5

三重点?それでは、正解は、エッジラベルの配置を選択できないということです。

ただし、、、およびで遊ぶことがheadlabelできlabeldirectionますlabelangle

digraph hierarchy_of_D  { 

node [color=black,shape=circle]

I [label="R"] 

subgraph infoset1 
{ 
   label="whatever" 
   rank="same" 
   1 [label="C"]
   2 [label="C"]
} 

I -> 1 [headlabel="War", labeldistance=3, labelangle=40]
I -> 2 [headlabel="Peace", labeldistance=3, labelangle=-40]
1 -> 2 [style=dashed, dir=none] 

subgraph info21 
{ 
    rank="same" 
    3 [label="(2,2)", rank=sink, shape="plaintext"]
    4 [label="(5,1)", rank=sink, shape="plaintext"]
    5 [label="(1,5)", rank=sink, shape="plaintext"]
    6 [label="(4,4)", rank=sink, shape="plaintext"]
} 

1 -> 3 [headlabel="War", labeldistance=3, labelangle=40]
1 -> 4 [headlabel="Peace", labeldistance=3, labelangle=-40]
2 -> 5 [headlabel="War", labeldistance=3, labelangle=40]
2 -> 6 [headlabel="Peace", labeldistance=3, labelangle=-40]
} 

出力:

graphviz出力

于 2011-01-08T20:55:32.990 に答える
5

楽しみのために、私が見つけた他の回避策:

エッジを使用してノード間に直線エッジをsplines=false2回強制することにより、エッジは1つの単一エッジであるかのように描画されますが、各エッジのラベルは(ほとんどの場合)エッジの異なる側に描画されます。

したがって、一方のエッジにラベルを付けず、もう一方のエッジにラベルを付けることで、エッジのラベルの配置に影響を与えることができます。

あなたの例:

digraph hierarchy_of_D  { 
splines=false;

node [color=black,shape=circle]

I [label="R"] 

subgraph infoset1 
{ 
   rank="same" 
   1 [label="C"]
   2 [label="C"]
} 

I -> 1 [label="War "]
I -> 1 [label="    "]
I -> 2 [label=""]
I -> 2 [label="Peace"]
1 -> 2 [style=dashed, dir=none] 

subgraph info21 
{ 
    rank="same" 
    3 [label="(2,2)", rank=sink, shape="plaintext"]
    4 [label="(5,1)", rank=sink, shape="plaintext"]
    5 [label="(1,5)", rank=sink, shape="plaintext"]
    6 [label="(4,4)", rank=sink, shape="plaintext"]
} 

1 -> 3 [label="War"]
1 -> 3 [label=""]
1 -> 4 [label=""]
1 -> 4 [label="Peace"]
2 -> 5 [label=""]
2 -> 5 [label="War "]
2 -> 6 [label=""]
2 -> 6 [label="Peace"]} 

そして出力:

graphviz出力

完璧ではなく、グラフによってマイレージが異なる場合がありますが、言及する価値があると思いました。

于 2011-01-13T00:15:23.477 に答える