有向グラフの階層的な描画

LayeredGraphPlotは,グラフの頂点を「主」頂点を最上層とする階層的な一連の「層」で描こうとする.

LayeredGraphPlot[{vi1->vj1,vi2->vj2,...}]
頂点 が頂点 と接続しているグラフの階層的なプロットを生成する
LayeredGraphPlot[{{vi1->vj1,lbl1},...}]
ラベル をグラフ中の辺と関連付ける
LayeredGraphPlot[g,pos]グラフ中の主頂点を位置 pos に置く
LayeredGraphPlot[m]隣接行列 m で表されるグラフの階層的なプロットを生成する

階層的なグラフの描画

LayeredGraphPlotは,辺の方向が主に下向きになるようにグラフを描画する. LayeredGraphPlotの第2引数は根の位置を指定する.この引数に可能な値はRightLeftTopBottomである.

有向グラフをプロットする.
In[1]:=
Click for copyable input
Out[1]=
次も同じグラフのプロットだが,矢印が左から右へ向かっている.
In[2]:=
Click for copyable input
Out[2]=

浮動小数点の相違のため,LayeredGraphPlotはプラットフォームによって異なる出力を生成することがある.

LayeredGraphPlotのオプション

Graphicsのオプションに加え,LayeredGraphPlotでは以下のオプションが使える.

オプション名
デフォルト値
DataRangeAutomatic生成する頂点座標の範囲
DirectedEdgesTrue辺を有向の矢印として示すかどうか
EdgeLabelingTrue辺に与えられたラベルを含めるかどうか
EdgeRenderingFunctionAutomatic辺の明示的なグラフィックスを与える関数
MultiedgeStyleAutomatic頂点間の多重辺をどのように描くか
PackingMethodAutomatic要素のパッキングに使用するメソッド
PlotRangePaddingAutomaticプロット周囲にどの程度の充填を行うか
PlotStyleAutomaticオブジェクトを描画するスタイル
SelfLoopStyleAutomatic頂点をそれ自身と結ぶ辺をどのように描くか
VertexCoordinateRulesAutomatic明示的な頂点座標の規則
VertexLabelingAutomatic頂点名をラベルとして示すかどうか
VertexRenderingFunctionAutomatic頂点の明示的なグラフィックスを与える関数

LayeredGraphPlotのオプション

DirectedEdges

オプションDirectedEdgesは,辺を矢印として描くかどうかを指定する.このオプションが取り得る値はTrueまたはFalseである.このオプションのデフォルト値はTrueである.

次は,辺が矢印ではなく線で示されているグラフである.
In[3]:=
Click for copyable input
Out[3]=

EdgeLabeling

オプションEdgeLabelingは,辺に与えられたラベルを表示するかどうか,またどのように表示するかを指定する.このオプションが取り得る値はTrueFalseまたはAutomaticである.このオプションのデフォルト値はTrueで,グラフの辺のラベルを表示する.EdgeLabeling->Automaticではラベルはツールチップとして表示される.

指定された辺のラベルを表示する.
In[4]:=
Click for copyable input
Out[4]=
ラベルはツールチップとして示される.カーソルを頂点3と頂点6の間の辺の上に置くと,ツールチップが見られる.
In[5]:=
Click for copyable input
Out[5]=
次は,Tooltip[vi->vj, lab]を使って辺のツールチップを指定している.カーソルを頂点3と頂点6の間の辺の上,または頂点3と5の間の辺の上に置くとツールチップが見られる.
In[6]:=
Click for copyable input
Out[6]=

EdgeRenderingFunction

オプションEdgeRenderingFunctionは,グラフの辺の視覚的表現を指定する.このオプションに可能な値はAutomaticNone,あるいはグラフィックスプリミティブとグラフィックス指示子との適切な組合せを与える関数である.デフォルト設定のAutomaticでは,各辺が暗赤色の線で描画される.EdgeRenderingFunction->Noneでは,辺は描画されない.

頂点だけを描画する.
In[7]:=
Click for copyable input
Out[7]=

EdgeRenderingFunction->g のとき,各辺は関数 g で与えられるグラフィックスプリミティブとグラフィックス指示子で描画される.この関数は という形式で3つ以上の引数を取ることができ, は辺の始点と終点の座標, は最初の頂点と最後の頂点, は辺に指定された任意のラベルあるいはNoneである.EdgeRenderingFunction->g の明示的な設定値はEdgeLabelingDirectedEdgesの設定値に優先する.

この例では,グラフの座標系で辺が0.3後退した灰色の矢印でプロットされている.
In[8]:=
Click for copyable input
Out[8]=
この例では,辺は黒い矢印で,自己ループは赤い矢印で描かれている.矢印の70%のところにラベルを加えるのにグラフユーティリティパッケージLineScaledCoordinate関数が使われている.
In[9]:=
Click for copyable input
In[10]:=
Click for copyable input
Out[10]=

MultiedgeStyle

オプションMultiedgeStyleは,2つの頂点間の多重辺を描くかどうかを指定する.MultiedgeStyleが取り得る値はAutomatic(デフォルト),TrueFalse,正の実数である.デフォルト設定のMultiedgeStyle->Automaticでは,規則のリストで指定されたグラフに対しては多重辺が表示されるが,隣接行列により指定された場合は表示されない.MultiedgeStyle-> では,多重辺はスケールされた距離 にまで広げられる.

デフォルトでは,グラフが規則のリストで指定されている場合には多重辺が示される.
In[11]:=
Click for copyable input
Out[11]=
隣接行列で指定されている場合には多重辺は示されない.
In[12]:=
Click for copyable input
Out[12]=
多重辺が指定された量だけ拡散される.
In[13]:=
Click for copyable input
Out[13]=

PackingMethod

オプションPackingMethodは非連結要素をパッキングするためのメソッドを指定する.このオプションに可能な値はAutomatic(デフォルト),である.PackingMethod->"ClosestPacking"では,要素は左上からポリオミノ法[6]を使って可能な限り近付くようパックされる.PackingMethod->"ClosestPackingCenter"では,要素は中央からパックされる.PackingMethod->"Layered"では,要素は左上から層状にパックされる.PackingMethod->"LayeredLeft"あるいはPackingMethod->"LayeredTop"では,要素はそれぞれ上・左から層状にパックされる.PackingMethod->"NestedGrid"では,要素はネストされた格子に配列される.通常効率的なデフォルト設定はPackingMethod->"Layered"であり,パッキングは最大の境界ボックス部分の要素から始まる.

デフォルトメソッドによる非連結要素のパッキング.
In[14]:=
Click for copyable input
Out[14]=
メソッドを使った非連結要素のパッキング.
In[15]:=
Click for copyable input
Out[15]=

PlotRangePadding

PlotRangePaddingLayeredGraphPlotにより継承されるグラフィックス関数に共通のオプションである.

PlotStyle

PlotStyleLayeredGraphPlotにより継承されるグラフィックス関数に共通のオプションである.オプションPlotStyleはオブジェクトを描画するスタイルを指定する.

ここでは,辺が太めの矢印で描かれている.辺と頂点はどちらも赤でラベル付けされている.
In[16]:=
Click for copyable input
Out[16]=

SelfLoopStyle

オプションSelfLoopStyleは,自分自身とリンクしている頂点のループを描くかどうかを指定する.このオプションに可能な値はAutomatic(デフォルト)TrueFalse,正の実数である.SelfLoopStyle->Automaticでは,グラフが規則のリストで指定されている場合に自己ループが表示され,隣接行列で指定されている場合は表示されない.SelfLoopStyle-> では,自己ループは直径 (辺の平均の長さに対して)で描画される.

デフォルトでは,グラフが規則のリストで指定されている場合には,自己ループが表示される.
In[17]:=
Click for copyable input
Out[17]=
グラフが隣接行列で指定されている場合には自己ループは表示されない.
In[18]:=
Click for copyable input
Out[18]=
辺の平均の長さの0.3倍の直径の自己ループが描画される.
In[19]:=
Click for copyable input
Out[19]=

VertexCoordinateRules

オプションVertexCoordinateRulesは頂点座標を指定する.取り得る値は,Noneか座標のリストである.規則のリストで指定された座標は,現在のLayeredGraphPlotではサポートされていない.

次は,既知の座標を使ってペテルセン(Petersen)グラフを描画する.
In[20]:=
Click for copyable input
Out[20]=
次は,デフォルトメソッドで描画する.
In[21]:=
Click for copyable input
Out[21]=

VertexLabeling

オプションVertexLabelingは頂点名をラベルとして表示するかどうかを指定する.このオプションに可能な値はTrueFalseAutomatic(デフォルト),Tooltipである.VertexLabeling->Trueではラベルが表示される.隣接行列で指定されたグラフでは,頂点ラベルは連続した整数n は行列の大きさ)を取る.規則のリストで指定されたグラフでは,ラベルは規則で使われた式である.VertexLabeling->Falseでは各頂点は点として表示される.VertexLabeling->Tooltipでは,各頂点は点として表示されるが名前をツールチップで表示する.VertexLabeling->Automaticでは各頂点は点として表示され,頂点の数が多過ぎなければ名前をツールチップで表示する.頂点 に対する別のツールチップを指定する場合は,規則のリストの任意の場所でTooltip[vk, vlbl]を使うとよい.

ラベルが隣接行列の指標として与えられているグラフを描画する.
In[22]:=
Click for copyable input
Out[22]=
規則のリストで指定されたラベルを使う.
In[23]:=
Click for copyable input
Out[23]=
頂点を点として描画し,頂点名をツールチップで表示する.頂点の上にカーソルを置くと,ラベルが表示される.
In[24]:=
Click for copyable input
Out[24]=

VertexRenderingFunction

オプションVertexRenderingFunctionはグラフの辺の視覚的表現を指定する.このオプションに可能な値はAutomaticNone,あるいはグラフィックスプリミティブと指示子の適切な組合せを与える関数である.デフォルト設定のAutomaticでは,頂点は点として表示され,その名前はツールチップで与えられる.

デフォルトでは,頂点は点として描かれ,小さいグラフのときはツールチップでラベルが付く.頂点にカーソルを置くとツールチップが見られる.
In[22]:=
Click for copyable input
In[23]:=
Click for copyable input
Out[23]=
頂点なしで同じグラフを描画する.
In[24]:=
Click for copyable input
Out[24]=

VertexRenderingFunction->g では,各頂点が で与えられるグラフィックスプリミティブで描画される. は頂点の座標で, は頂点のラベルである.VertexRenderingFunction->g の明示的な設定値はVertexLabelingの設定値に優先する.

この例では,頂点が黄色の円板で表示されている.
In[27]:=
Click for copyable input
Out[27]=

例題ギャラリー

フローチャート

LayeredGraphPlotは,ビジネス,経済,技術的なプレゼンテーション等のためのフローチャートの可視化に役立つ.

フローチャートを表示する.
In[28]:=
Click for copyable input
Out[28]=
左から右へと流れるフローチャート.
In[29]:=
Click for copyable input
Out[29]=

食物連鎖

食物連鎖はLayeredGraphPlotを使って可視化することができる.

小さい食物連鎖を表示する.
In[30]:=
Click for copyable input
Out[30]=
別の食物連鎖.
In[2]:=
Click for copyable input
Out[2]=

Unixの歴史

LayeredGraphPlotは歴史的事象を可視化するのにも適している.

Unixの歴史である.
In[32]:=
Click for copyable input
Out[32]=
New to Mathematica? Find your learning path »
Have a question? Ask support »