傾斜レイアウト・モード

放射レイアウト・モードおよび自由レイアウト・モードの描画は、描画領域のアスペクト比に従って調整できます。 描画の縦と横の長さのバランスを取るために、自由レイアウト・モードでは傾斜整列を使用することもできます。
傾斜整列は、個々のノードに明示的に指定できます。 ツリー・レイアウト・アルゴリズムには、必要に応じて傾斜整列を自動的に使用するレイアウト・モードも用意されています。
傾斜レイアウト・モードは以下のように動作します。
自由レイアウト・モードでは、複数の試行レイアウトが実行されます。
試行ごとに、特定の個別ノードに傾斜整列が設定される一方で、その他のすべてのノードの指定整列は保持されます。
アルゴリズムは、描画領域の指定アスペクト比に最も適合する試行レイアウトを選出します。
メソッド setAspectRatio (値は数値) を使用します。
傾斜モードは、他のレイアウト・モードよりも若干時間がかかります。
大きなツリーでは、傾斜モードを使用する場合には、許容レイアウト時間を大きい値 (例えば、50秒) に設定することをお勧めします。
このモードを設定するには、以下のようにします。
以下を呼び出します。
layout.setAllowedTime(50000);
この呼び出しを使用することで、レイアウト・アルゴリズムの十分な反復のための時間が不足しないようにすることができます。 傾斜整列使用のすべての可能性を検査するのはあまりにも時間がかかるため、 下図に示す以下の各種戦略に従って特定の試行のみを検査するヒューリスティックが存在します。

さまざまな傾斜レイアウト・モード・オプションを使用した例を示すツリー・レイアウトの図
傾斜戦略

リーフの傾斜

この傾斜戦略を使用するには、レイアウト・モードを以下のように設定します。
treeLayout.setLayoutMode(ibm_ilog.graphlayout.tree.TreeLayout.TIP_LEAVES_OVER);
ヒューリスティックはまず、追加の傾斜オプションなしでレイアウトを試行します。 次に、リーフ、リーフとその親、さらには親の親、といった順に傾斜を試行します。 結果として、ルートに最も近いノードは通常の整列を使用し、リーフに最も近いノードは傾斜整列を使用します。

ルートの傾斜

この傾斜戦略を使用するには、レイアウト・モードを以下のように設定します。
treeLayout.setLayoutMode(ibm_ilog.graphlayout.tree.TreeLayout.TIP_ROOTS_OVER);
ヒューリスティックはまず、追加の傾斜オプションなしでレイアウトを試行します。 次に、ルート・ノード、ルートとその子ノード、さらには子ノードの子、といった順に傾斜を試行します。 結果として、リーフに最も近いノードは通常の整列を使用し、ルートに最も近いノードは傾斜整列を使用します。

ルートとリーフの傾斜

この傾斜戦略を使用するには、レイアウト・モードを以下のように設定します。
treeLayout.setLayoutMode(ibm_ilog.graphlayout.tree.TreeLayout.TIP_ROOTS_AND_LEAVES_OVER); 
ヒューリスティックはまず、追加の傾斜オプションなしでレイアウトを試行します。 次に、同時にルート・ノードとリーフ、ルートとその子ノード、リーフとその親、さらには子ノードの子と親ノードの親、といった順に傾斜を試行します。 結果として、ツリーの中央のノードは通常の整列を使用し、ルートまたはリーフに最も近いノードは傾斜整列を使用します。
リーフの傾斜 戦略のすべての試行およびルートの傾斜 戦略のすべての試行が含まれるため、 この戦略が最も時間がかかります。

高速傾斜

高速傾斜は、他のすべての戦略を妥協したものです。 ヒューリスティックは、他の戦略の (すべての可能性ではなく) 小規模な選択を試行します。 そのため、大きなグラフでは最も高速な戦略になります。
この戦略を使用するには、レイアウト・モードを以下のように設定します。
treeLayout.setLayoutMode(ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER);
4 つの戦略はばらばらではない (すなわち、特定の試行が 4 つの戦略すべてで実行される) ため、これらの戦略すべてで同じ結果になる可能性があります。 また、傾斜モードでは必ずしも、アスペクト比に最適なレイアウトが作成されるわけではありません。 これは、実行時間が長くなり過ぎないように、傾斜整列の一部のまれな構成が試行されないからです。