グラフ内の同じノードのペア間に複数のリンクがある場合があります。
これらのリンクが、まっすぐ経路指定されており、ノード上の同じ接続ポイントを使用する場合は、
重なってしまい、区別できません。このように重なることがないように、特定のレイアウトには
多重リンク・モードがあります。これは、リンク・スタイルが「STRAIGHT_LINE_STYLE」に設定されている場合
にのみ適用されます。このモードは、リンク・スタイルが
「NO_RESHAPE_STYLE」の場合には無効になります。
多重リンクの経路指定方法の指定の例
多重リンク・モードを指定するには、以下のメソッドを使用します。
layout.setMultiLinkMode(mode);
mode に指定できる有効な値を、以下にForce-directedレイアウトの例で示します。
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NO_BUNDLE: 同じノード・ペア間の複数のリンクが特別な方法で処理されることはありません。 これらのリンクの配置間隔は狭いため、リンクは重なり合うことがあります。
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.STRAIGHT_LINE_BUNDLE: 同じノードのペア間の複数のリンクは、直線として経路指定されますが、 互いに重ならないようにシフトされます。NARROW モードと違い、 シフト・オフセットがノード・サイズによって制限されることはありません。
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NARROW_STRAIGHT_LINE_BUNDLE: STRAIGHT_LINE_BUNDLE モードと似ていますが、シフト・オフセットがリンク・バンドルの 2 つの終了ノードのサイズにより制限されるため、狭く見えることがあります。このモードでは、同じノード・ペア間に多数のリンクがある場合でも、リンクがノードに接続されていないように見えるほど離れた場所にシフトされることはありません。 このモードはデフォルトです。
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.CONNECTED_ONE_BEND_BUNDLE: 同じノード・ペア間の複数のリンクは重なり合わないようにするため、1 つの曲折点を持つように経路指定されます。バンドルのすべてのリンクは、同じ接続ポイントで開始され、同じ接続ポイントで終了します。
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.FREE_ONE_BEND_BUNDLE: 同じノード・ペア間の複数のリンクは重なり合わないようにするため、1 つの曲折点を持つように経路指定されます。ただし、CONNECTED_ONE_BEND_BUNDLE モードと違って、リンク接続ポイントが強制されません。 すなわち、ノードとリンクでは、接続ポイントを自由に設定できます。 バンドルのすべてのリンクが共通の接続ポイントで開始または終了するという保証はありません。
多重リンク・モードが NO_BUNDLE でない場合、
シフトされたリンク間またはリンクの曲折点間のオフセットは、それぞれ以下のように指定できます。
以下のメソッドを使用します。
layout.setMultiLinkOffset(offset); layout.setMultiLinkMaxSpread(maxSpread);
多重リンク・オフセットとは、隣接する 2 つのリンク (またはリンクの曲折点) 間のオフセットです。
このオフセットは maxSpread の値により制限され、
多数のリンクがある場合にリンク間のスペースが空き過ぎないようにします。
多重リンク・オフセットが 10 で、maxSpread の値が 60 の場合、
多重リンクが 6 個未満であると実際のオフセットは 10 になります。
多重リンクの数がこれを上回ると、実際のオフセットは小さくなります。例えば、
多重リンクが 15 個ある場合、実際のオフセットは 10 ではなく 4 になり、
リンクは互いに最大で 60 ユニット離れてシフトされます。
多重リンク・モードが NARROW_STRAIGHT_LINE_BUNDLE である場合、
実際のオフセットは、リンク・バンドルの両方の終了ノードのバウンディング・ボックスのサイズによりさらに制限されます。
モードおよびオフセットの使用例 | 結果のグラフィック |
---|---|
NO_BUNDLE | ![]() |
STRAIGHT_LINE_BUNDLE を指定したが、 maxSpread 値の設定が大き過ぎる場合。 | ![]() |
NARROW_STRAIGHT_LINE_BUNDLE: STRAIGHT_LINE_BUNDLE でも、 maxSpread の値を小さくすると同じ結果が得られます。 | ![]() |
CONNECTED_ONE_BEND_BUNDLE | ![]() |
FREE_ONE_BEND_BUNDLE を指定し、
リンクが最初にノードの中央に接続されている場合。 CONNECTED_ONE_BEND_BUNDLE を指定して、
connectLinksToNodeCenters を true に設定すると
同じ結果が得られます。例については、ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.setConnectLinksToNodeCenters を参照してください。
|
![]() |