FL の特定パラメーター

以下のパラメーターは、ForceDirectedLayout クラスに固有のものです。

リンク・スタイル (FL)

レイアウト・アルゴリズムによりノードが移動されると、直線 リンクは、エンド・ノードの新しい位置に自動的に「追従」します。グラフにその他のタイプのリンクが含まれる場合、 リンクの形状は、リンクの中間点が移動されないため、適切ではなくなる場合があります。この場合には、レイアウト・アルゴリズムで、 リンクの中間点がすべて自動的に削除されるようにすることができます (存在する場合)。
アルゴリズムで、リンクのすべての中間点 (存在する場合) を削除するように指定するには、以下のようにします。
リンク・スタイルの設定例
forceDirectedLayout.setLinkStyle(
  ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.STRAIGHT_LINE_STYLE);  
スタイルの有効な値は、次のとおりです。
  • ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NO_RESHAPE_STYLE
    リンクは、方法を問わず、形状変更されることはありません。
    ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.STRAIGHT_LINE_STYLE
    リンクの中間点はすべて削除されます (存在する場合)。この値はデフォルトです。

リンクをノードの中心に接続する (FL)

この機能は、基本リンク・スタイル・レイアウトのすべてのサブクラスで共有されます。 詳しくは、リンクをノードの中心に接続する を参照してください。

多重リンク・フィーチャーおよびセルフリンク・フィーチャー (FL)

これらの機能は、基本リンク・スタイル・レイアウトのすべてのサブクラスで共有されます。 詳しくは、多重リンク機能とセルフリンク機能 を参照してください。

反復数 (FL)

時間が許容時間 (許容時間 を参照) を超過した場合、 または反復数が許容反復数を超過した場合に、レイアウト・アルゴリズムの反復計算は停止します。
反復数を指定するには、以下のようにします。
許容反復数の設定例
forceDirectedLayout.setAllowedNumberOfIterations(100);  

優先長 (FL)

このレイアウト・アルゴリズムの主目的は、すべてのリンクが同じ長さ (“優先長” と呼ぶ) を持つレイアウトを得ることです。
優先長を指定するには、以下のようにします。
グローバルに指定する場合
  • 優先長をグローバルに指定する例
    forceDirectedLayout.setPreferredLinksLength(200);
    
    デフォルト値は 60.0 です。
個別に指定する場合
個別リンクの長さを指定することも可能です。
  • 優先長を個別に指定する例
    forceDirectedLayout.setPreferredLength(link, 100);  
    
    現行値を取得するには、以下のメソッドを使用します。
    var length = forceDirectedLayout.getPreferredLength(link);  
    
リンクに特定の長さが指定されなかった場合は、グローバル設定が使用されます。

ノード・サイズを尊重 (FL)

デフォルトでは、レイアウト・アルゴリズムはノードのサイズ (幅および高さ) を考慮します。 効率性のため、ノードは、ノードのバウンディング・ボックスの中心に配置されたポイントに近似できます。 大きなノードを扱う場合は、ノードがオーバーラップしないように優先長パラメーターを大きくすることができます。
一定のノード・サイズのグラフのパフォーマンスを改善するために、アルゴリズムには、個々のノード固有のサイズを考慮しない特殊なモードが用意されています。
このモードを設定するには、以下のようにします。
ノードのサイズを考慮しない場合の例
forceDirectedLayout.setRespectNodeSizes(false);     
デフォルト値は true です。

レイアウト領域に強制的に合わせる (FL)

このレイアウト・アルゴリズムのレイアウト領域に適したサイズを選択することは困難です。 指定されたレイアウト領域が特定のグラフには小さすぎる場合、結果として生じるレイアウトは最適なものにはなりません。 そのため、デフォルトでは、Force-directed レイアウト・アルゴリズムはレイアウト領域パラメーターを使用しません。
グラフをレイアウトするために必要なだけスペースを使用する可能性があります。
レイアウト・アルゴリズムがレイアウト領域を使用する必要があるかどうかを指定するには、以下のようにします。
レイアウト領域パラメーターの使用例
forceDirectedLayout.setForceFitToLayoutRegion(true);  
このパラメーターのデフォルト値は false です。

レイアウト・モード

さまざまなニーズに合わせるために、アルゴリズムは以下の 3 つのオプションのレイアウト・モードを用意しています。
インクリメンタル・モード
アルゴリズムは現在位置から開始して、最適なレイアウトに向けて反復的に収束を試行します。 場合によっては、このモードではグラフの大きな再編成が回避されるため、可能な限りユーザーのメンタル・マップの保持に役立ちます。 ただし、これは保証されているものではなく、ノードの初期位置が、アルゴリズムの基準を満たす位置からどれくらい離れているかに依存します。
非インクリメンタル・モード
アルゴリズムは、初期位置の近くに留まろうとせず、グラフを自由に再編成します。 多くの場合、非インクリメンタル・モードは、品質が低下する場合がありますが、インクリメンタル・モードより高速です。
高速マルチレベル・モード
アルゴリズムは、速度面で大幅なメリットが得られるマルチレベルのグラフの分解戦略を使用します。 このモードは通常、中規模および大規模のグラフで、最も高速なモードになります。
デフォルト値は ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.INCREMENTAL_MODE です。
レイアウト・モードを設定するには、以下のようにします。
レイアウト・モードの設定例
forceDirectedLayout.setLayoutMode(
  ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.FAST_MULTILEVEL_MODE);