一般的なグラフの描画

GraphPlotおよびGraphPlot3Dは,視覚的にアピールするグラフの2D/3Dレイアウトを計算し,プロットする.これらの関数は非常に大きいグラフで使えるよう設計されており,連結グラフも非連結グラフも扱うことができる.

GraphPlot[{vi1->vj1,vi2->vj2,...}]頂点 が頂点 と接続しているグラフのプロットを生成する
GraphPlot[{{vi1->vj1,lbl1},...}]ラベル をグラフ中の辺に関連付ける
GraphPlot[m]隣接行列 m で表されるグラフのプロットを生成する
GraphPlot3D[{vi1->vj1,vi2->vj2,...}]頂点 が頂点 と接続しているグラフの3Dプロットを生成する
GraphPlot3D[{{vi1->vj1,lbl1},...}]ラベル をグラフ中の辺に関連付ける
GraphPlot3D[m]隣接行列 m で表されるグラフの3Dプロットを生成する

グラフ描画関数

次は,規則のリストで指定されたグラフをプロットする.
In[1]:=
Click for copyable input
Out[1]=
非連結グラフでは,個々の要素が視覚的にアピールする形に並べられている.
In[2]:=
Click for copyable input
Out[2]=
次は,構造工学アプリケーションの疎な隣接行列で定義された大きいグラフである.行列はHarwell-Boeing Collectionからのものである.
In[3]:=
Click for copyable input
In[4]:=
Click for copyable input
Out[4]=

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

GraphPlotとGraphPlot3Dのオプション

GraphPlotおよびGraphPlot3Dでは,GraphicsおよびGraphics3Dのオプションに加え,次のオプションを使うことができる(DirectedEdgesオプションとEdgeLabelingオプションはGraphPlotでのみ有効である).

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

GraphPlotGraphPlot3Dのオプション

DirectedEdges

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

次は,辺が矢印で示されているグラフである.
In[5]:=
Click for copyable input
Out[5]=
矢の頭の部分を大きくする.
In[3]:=
Click for copyable input
Out[3]=

EdgeLabeling

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

デフォルトではGraphPlotは頂点3と6の間の辺に与えられたラベルを表示する.
In[6]:=
Click for copyable input
Out[6]=
下では辺のラベルはツールチップとして示される.カーソルを頂点3と頂点6の間の辺の上に置くと,ツールチップが見られる.
In[7]:=
Click for copyable input
Out[7]=
あるいは,Tooltip[vi->vj, lbl]を使って辺のツールチップを指定する.カーソルを頂点3と頂点6の間の辺の上,および頂点3と頂点5の間の辺のラベル上に置くとツールチップが見られる.
In[8]:=
Click for copyable input
Out[8]=

3Dの辺に与えられたラベルを表示するためには,EdgeRenderingFunctionを使う必要がある.詳細は「EdgeRenderingFunction」で解説する.

EdgeRenderingFunction

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

頂点のみを描画する.
In[9]:=
Click for copyable input
Out[9]=

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

辺が頂点から0.1(グラフの座標系において)後退した灰色の矢印でプロットされている.
In[10]:=
Click for copyable input
Out[10]=
これは辺のラベルを生成するか,グラフの記述で与えられたラベルを表示する.
In[11]:=
Click for copyable input
Out[11]=
ここでは直線は黒で描かれ,その他の線(2本の多重線と1本の自己ループ)は赤で描かれている.辺の長さの70%のところにラベルを加えるのにパッケージのLineScaledCoordinate関数が使われている.
In[12]:=
Click for copyable input
In[13]:=
Click for copyable input
Out[13]=
次は,頂点には球を,辺には円柱を使った3Dグラフをプロットする.
In[14]:=
Click for copyable input
Out[14]=
これは,辺がバネで頂点は球で描かれているグラフをプロットする.
In[15]:=
Click for copyable input
Out[16]=
ベンゼン分子をプロットする.
In[17]:=
Click for copyable input
Out[18]=
辺に沿ってテキストを描画する.
In[11]:=
Click for copyable input
Out[11]=
各辺上にグラフィックスを描画する.
In[5]:=
Click for copyable input
In[10]:=
Click for copyable input
Out[10]=

Method

GraphPlotGraphPlot3Dで使えるアルゴリズムはMethodオプションでMethod->"name"あるいはMethod->{"name", opt1->val1, ...}として指定することができる.ここで は,別のセクションで記述されているようにメソッド特定のオプションである.Method->Automaticでは,木にはが,その他にはが使われる.

Automatic問題に適したメソッドが自動的に選ばれる
"CircularEmbedding"頂点を円形に並べる
"HighDimensionalEmbedding"高次埋込み法を呼び出す.この方法では,まず,頂点と k 個の中心のグラフ距離に基づいて,グラフを高次元空間でレイアウトする.次にこのレイアウトが,主成分分析の線形結合を使って二次元空間あるいは三次元空間に投影される
"RadialDrawing"木または木構造のグラフに適した放射線状描画法を呼び出す.グラフが木ではない場合,まず全域木が構成され,次に全域木の放射状描画を使ってグラフが描画される
"RandomEmbedding"頂点をランダムに並べる
"SpiralEmbedding"頂点をらせん状に並べる.3Dでは,球面状に頂点を等間隔で並べる
"SpringElectricalEmbedding"バネ電気埋込み法を呼び出す.このモデルでは,近接する頂点は,互いに両者の物理的距離に比例する引力の影響を受ける.頂点はすべて互いの物理的距離に反比例する反発的な電気力の影響を受ける.全体としてのエネルギーは最小になる
"SpringEmbedding"バネ埋込み法を呼び出す.このモデルでは,頂点は,まるでバネで繋がれているかの様に,他の頂点の引力あるいは反発力のどちらかの影響を受ける.理想的なバネの長さは頂点間のグラフ距離に等しい.バネの力は最小になる

Methodオプションの有効な値

次は,デフォルトメソッドを使ってペテルセングラフを描画する.
In[19]:=
Click for copyable input
Out[19]=
次は,アルゴリズムを使ってグラフを描画する.
In[20]:=
Click for copyable input
Out[20]=
次は,アルゴリズムを使ってグラフを描画する.
In[21]:=
Click for copyable input
Out[21]=
次はメソッドを使って頂点が30個のグラフを描画する.
In[22]:=
Click for copyable input
Out[22]=
次は,メソッドを使って30個の頂点のグラフを3Dで描画する.
In[23]:=
Click for copyable input
Out[23]=
次はメソッドを使ってグラフを描画する.
In[24]:=
Click for copyable input
Out[24]=
Combinatorica の座標を使い,Combinatorica パッケージ形式で指定されたグラフを描画する.
In[25]:=
Click for copyable input
In[26]:=
Click for copyable input
Out[26]=

MultiedgeStyle

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

デフォルトでは,グラフが規則のリストとして与えられている場合に多重辺が表示される.
In[27]:=
Click for copyable input
Out[27]=
しかし,多重辺が隣接行列で指定されている場合には表示されない.
In[28]:=
Click for copyable input
Out[28]=
ここでは指定された分だけ多重辺が広がる.
In[29]:=
Click for copyable input
Out[29]=

PackingMethod

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

非連結要素をデフォルトの方法でパッキングする.
In[30]:=
Click for copyable input
In[31]:=
Click for copyable input
Out[31]=
次は,非連結要素を法でパッキングする.
In[32]:=
Click for copyable input
In[33]:=
Click for copyable input
Out[33]=

パッキングはPackingMethodのサブオプションを使って調整することができる.サブオプション"は要素間に許されるスペースを指定するもので,可能な値はAutomatic(デフォルト),非負の数のどちらかである.サブオプションも要素間に許されるスペースを指定するものであり,をオーバーライドする.これはという形式のリストを取る.それぞれの値は要素の境界ボックスの幅と高さであり,非負の数を返す.オプションPackingMethod->"ClosestPacking"およびPackingMethod->"ClosestPackingCenter"でもサブオプションを使うことができる.このサブオプションはそれぞれの非連結要素を近似するのに使われるポリオミノの平均の数を指定する.サブオプションで取れる値はAutomatic(デフォルト.通常を100に設定)か正の整数である.小さいは通常小さい要素が大きい要素の間に埋め込まれることを許さないという効果がある.

要素間の1ポリオミノのスペースを指定する.
In[34]:=
Click for copyable input
In[35]:=
Click for copyable input
Out[35]=
5ポリオミノの平均を使って書く要素を近似するよう指定する.
In[36]:=
Click for copyable input
In[37]:=
Click for copyable input
Out[37]=

PlotRangePadding

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

PlotStyle

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

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

SelfLoopStyle

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

デフォルトでは,自己ループは規則のリストで指定されたグラフに対して表示される.
In[39]:=
Click for copyable input
Out[39]=
グラフが隣接行列で指定されると,自己ループは表示されない.
In[40]:=
Click for copyable input
Out[40]=
辺の平均の長さを直径とする自己ループを表示する.
In[41]:=
Click for copyable input
Out[41]=

VertexCoordinateRules

オプションVertexCoordinateRulesは頂点座標を指定する.取り得る値は,None,座標のリスト,あるいは選択された/すべての座標を指定する規則のリストである.

次は,既知の座標を使ってペテルセン(Petersen)グラフを描画する.
In[42]:=
Click for copyable input
Out[42]=
アルゴリズムを使って,上と同じグラフの頂点座標を計算する.
In[43]:=
Click for copyable input
Out[43]=
2つの頂点の座標を指定する.
In[44]:=
Click for copyable input
Out[44]=
座標だけ指定する.
In[12]:=
Click for copyable input
Out[12]=
座標を固定することで二部グラフを描画する.非連結要素を連結するために,「アンカー」を加える.
In[1]:=
Click for copyable input
In[3]:=
Click for copyable input
Out[3]=
2部グラフが連結されると,左や右のアンカーで拡張しなくてもずっとよく動作する.
In[4]:=
Click for copyable input
Out[4]=

VertexLabeling

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

隣接行列の指標として与えられたラベルを持つグラフを描画する.
In[45]:=
Click for copyable input
Out[45]=
規則のリストで指定されたラベルを使う.
In[46]:=
Click for copyable input
Out[46]=
頂点3と5に別のラベルを指定する.この頂点の上にカーソルを置くとラベルを見ることができる.
In[47]:=
Click for copyable input
Out[47]=
以下は頂点を点としてプロットし,ツールチップに頂点名を表示する.頂点の上にカーソルを置くと,ラベルが見える.
In[48]:=
Click for copyable input
Out[48]=

VertexRenderingFunction

オプションVertexRenderingFunctionは,グラフの辺のグラフィカルな表現を指定する.このオプションで取り得る値は,AutomaticNone,あるいはグラフィックスプリミティブおよび指示子の適切な組合せを与える関数である.デフォルト設定のAutomaticでは,頂点は点として描かれ,頂点の名前はツールチップで表示される.

デフォルトでは,頂点は点として表示され,ツールチップでラベル付けされる.ツールチップを見るためにはカーソルを頂点に置く.
In[49]:=
Click for copyable input
Out[49]=
頂点を全く描画しない.
In[50]:=
Click for copyable input
Out[50]=

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

頂点が黄色の円板で表示される.
In[51]:=
Click for copyable input
Out[51]=
定義済みのグラフィックスを使って頂点を描画する.
In[52]:=
Click for copyable input
In[53]:=
Click for copyable input
Out[53]=

すべてのメソッドに共通のサブオプション

すべての描画メソッドで,メソッドのサブオプションを使うことができる.これはデフォルト方向からラジアンで所望の時計回りの回転量を指定する.このオプションは任意の数値かFalseを取る.デフォルトは0である.

GraphPlotGraphPlot3Dでは,デフォルトの向きは整列ステップにより導出される.ここでは主軸が見付けられ,グラフ描画は 軸で整列する.しかし,"Rotation"->Falseが指定されると,このステップは抜かされる.

オプション名
デフォルト値
"Rotation"0描画を時計回りにどれだけ回転させるか

すべてのメソッドに共通のサブオプション

グラフのプロットを時計回りに だけ回転させる.
In[3]:=
Click for copyable input
Out[2]=
グラフレイアウトの過程の進化を示す.
In[4]:=
Click for copyable input
Out[1]=

"SpringEmbedding"と"SpringElectricalEmbedding"に共通のサブオプション

メソッドとメソッドは両方ともいわゆるForce Directed法に属す.どちらも各頂点の力を計算し,システム全体のエネルギーが最小になるように頂点を力に沿って繰り返し動かす.アルゴリズムの詳細は[8]を参照のこと.両者には次のような共通のオプションがいくつかある.

オプション名
デフォルト値
"EnergyControl"Automatic最小化の間,エネルギー関数をどのようの制御するか
"InferentialDistance"Automatic力計算でそれより遠い頂点が無視されるカットオフの距離
MaxIterationsAutomaticエネルギーを最小にするために使われる最大反復回数
"RandomSeed"Automatic最初に頂点を置く際に使うランダムシード
"RecursionMethod"Automaticグラフのレイアウトにマルチレベルのアルゴリズムを使用するかどうか
"StepControl"Automaticエネルギー最小化の最中にステップ長をどのように変更するか
"StepLength"Automatic頂点を動かす際の最初のステップ長
"Tolerance"Automaticエネルギーの最小化プロセスを終了するのに使われる許容率

メソッドに共通のサブオプション

"EnergyControl"

サブオプションは,最小化の間のシステムの合計エネルギーへの制限を指定する.有効な値はAutomatic(デフォルト),あるいはである.値がのとき,力に沿ったステップは,エネルギーが低下する場合にのみ許容される.値がのときは,力に沿ったステップはエネルギーが低下しなくても許容される.

"InferentialDistance"

サブオプションは,頂点間のインタラクションが存在しないと仮定されるようになるカットオフ距離を指定する.可能な値はAutomatic(デフォルト),あるいは正の数値である.メソッドでは,頂点 ij の間のグラフ距離がの値よりも大きい場合には,ij の間のバネの反発力・引力は無視される. メソッドでは,頂点 ij の間のユークリッド距離がのオプション値よりも大きければ,ij の間の反発力が無視される.

以下はメソッドでランダムな木を描画する.
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
もっと小さい(より負の)オプション値を使う(次のセクションを参照).これでグラフの空白がもっと埋まった.
In[22]:=
Click for copyable input
Out[22]=
オプションに小さい値を使うと,同様の効果が得られる.
In[21]:=
Click for copyable input
Out[21]=

MaxIterations

オプションMaxIterationsは,エネルギーを最小にするために使う再帰の最大回数を指定する.取り得る値はAutomatic(デフォルト)か正の整数である.

"RandomSeed"

オプションは,最初に頂点を置く場所を計算する乱数ジェネレータの種を指定する.このオプションを変更すると,グラフ描画の方向に影響を与えるが,グラフのレイアウトを変更することもある.このオプションで取り得る値はAutomaticまたは整数である.

次は,Petersonグラフの描画に見られる異なる乱数シードの影響を示す.
In[60]:=
Click for copyable input
In[61]:=
Click for copyable input
Out[61]=
In[62]:=
Click for copyable input
Out[62]=

"RecursionMethod"

オプションは,グラフのレイアウトを再帰的な過程で生成するかどうかを指定する.このオプションで取り得る値はAutomatic (デフォルト),,あるいはNoneである.アルゴリズムでは,グラフは徐々に頂点の少ない粗いグラフになっていく.粗いグラフは最初にレイアウトされ,細かいグラフへと補間され,さらに微調整される.

サブオプション名
デフォルト値
"Randomization"Automatic頂点をランダムな順序で調べるかどうか
"MinSize"Automatic粗いグラフにおける最小の頂点数
"CoarseningScheme"Automaticグラフをどのように粗くするか

のサブオプション

オプションでは,可能な値はAutomaticTrueFalseのいずれかである.では,可能な値はAutomaticか正の数である.の場合,実装されるアルゴリズムは,粗い頂点を形成する最大独立頂点集合か,マッチングとも呼ばれる最大独立辺集合のどちらかに基づく.マッチングにおいては,1辺を形成する2頂点が融合し,1つの粗いグラフの頂点を形成する.以下はに可能な値である.

"MaximalIndependentVertexSet"グラフ距離が3以下ならば最大独立集合の頂点をリンクする
"MaximalIndependentVertexSetInjection"
グラフ距離が1か2ならば最大独立集合の頂点をリンクする
"MaximalIndependentVertexSetRugeStuben"
最大独立頂点集合を生成し,集合内で隣接頂点の多いものを優先し,グラフ距離が3以下ならば集合内の頂点をリンクする
"MaximalIndependentVertexSetRugeStubenInjection"
グラフ距離が1か2ならば頂点をリンクし,隣接頂点の多いものを優先する
"MaximalIndependentEdgeSet"マッチングの際に,辺を自然順で考える
"MaximalIndependentEdgeSetHeavyEdge"
マッチングの際に,辺の重みの大きい(例:もとのグラフで多数の辺を表す辺)ものを優先する
"MaximalIndependentEdgeSetSmallestVertexWeight"
頂点の重みが最小の隣接頂点とのマッチングを優先する

"StepControl"

オプションエネルギー最小化の過程でステップ長をどのように修正するかを定義する.可能な値はAutomatic (デフォルト), ステップ長を短くすることしかできない), (ステップ長は長くも短くもできる), (反復の間にステップ長が厳密に縮められる)のいずれかである.

"StepLength"

オプションは,頂点を動かす際の初期ステップ長を与える.可能な値はAutomatic(デフォルト)か,あるいは正の実数である.

Tolerance

オプションToleranceは,エネルギー最小化の過程を終了する際に使用する許容度を指定する.各頂点の座標変化の平均が許容度よりも小さい場合はエネルギー最小化が終了され,現行座標が出力として返される.取り得る値はAutomaticか正の実数である.

"SpringElectricalEmbedding"メソッドのメソッドサブオプション

オプション名
"Octree"Automatic反発力の計算にOCTREEデータ構造(3 Dの場合) あるいはQUADTREE構造 (2 Dの場合) を使うかどうか
"RepulsiveForcePower"-1距離によって反発力がどれほどの速度で小さくなるか

のメソッドオプション

"Octree"

オプションは,OCTREEデータ構造(3Dで)またはQUADTREEデータ構造(2Dで)を反発力の計算に使うかどうかを指定する.可能な設定値はAutomatic(デフォルト),TrueFalseである.OCTREEデータ構造を使うと,長距離の反発力を近似することで計算が複雑になるのを最低限に抑えることができる.然し,力の計算に近似が導入されるため,結果が思わしくない場合もある.

"RepulsiveForcePower"

可能な設定値は負の実数でデフォルトは-1である.バネ電気埋込みでは,頂点 間の反発力は,デフォルトで である.の値が ()であれば,反発力は と定義できる.ここで は頂点間の距離, は定数係数である.

長い距離に渡る強く長い範囲の反発力は,周辺部の頂点の間隔が中心近くのそれよりも狭まるという境界効果を及ぼすことがよくある.弱く長い範囲の反発力を指定することで,この効果を弱められることがある.このオプションは,グラフがより多くのスペースを占めるよう描画する場合に便利である(詳細は"InferentialDistance"メソッドオプションを参照のこと).

反発力では,境界の頂点はデフォルト値ののときほど近付いていない.
In[63]:=
Click for copyable input
Out[63]=
In[64]:=
Click for copyable input
Out[64]=

"HighDimensionalEmbedding"のメソッドサブオプション

オプション名
デフォルト値
"RefinementMethod"None結果をさらに精緻化するかどうか,するのであればどのメソッドを使うかを指定する

のメソッドオプション

"RefinementMethod"

オプションは結果をさらに精緻化するかどうか,するのであればどのメソッドを使うのかを指定する.可能な値はNone(デフォルト),あるいはである.

メソッドが頂点5と6を同じ位置に置いた場合である.オプションを指定すると,よりよいグラフが描画できる.
In[65]:=
Click for copyable input
In[66]:=
Click for copyable input
Out[66]=
In[67]:=
Click for copyable input
Out[67]=

より高度なトピック

より空間を占めるグラフを描画する

GraphPlotのデフォルト設定は一般にうまく動作するが,頂点次数に広範な値を持つグラフでは頂点が閉めるスペースを小さくできるような設定を使うことが必要になる場合がある.

通常はデフォルトのメソッドで十分である.
In[18]:=
Click for copyable input
In[19]:=
Click for copyable input
Out[19]=
In[20]:=
Click for copyable input
Out[20]=
しかし,が,より空間を占める描画をすることもある.
In[21]:=
Click for copyable input
Out[21]=
反発力が距離に沿ってより速く減衰するようにデフォルト()より小さい反発力を使っても同様の効果が得られることがある.
In[23]:=
Click for copyable input
Out[23]=
あるいはカットオフ距離を指定する.
In[24]:=
Click for copyable input
Out[24]=
このような木に似たグラフの場合は,木を描画するアルゴリズムが適しているだろう.木のレイアウトをうまく制御するには,「木の描画」を参照するとよい.
In[25]:=
Click for copyable input
Out[25]=
電力ネットワークのモデル化からグラフを描画する.
In[23]:=
Click for copyable input
Out[23]=

非常に大きなグラフの描画をよりよくする

デフォルト設定でも非常によいパフォーマンスが得られるが,特定のタスクに対して特別なオプションの組合せを選ぶことで,さらに描画スピードを上げたり,メモリ使用量を減らしたりすることができる.例えば,スピードおよび/またはメモリ使用量は,少ない反復回数,小さい推定距離,低い許容誤差を使うと向上する.これらの設定は質を下げる傾向があるが,それでも妥協できる範囲のものである.

次はデフォルトのオプション設定による描画である.
In[75]:=
Click for copyable input
In[76]:=
Click for copyable input
Out[76]=
粗くする方法の枠組みに基づいた最大独立頂点集合は,より高速であることが多く,また,メモリ消費量も少なくレイアウトの品質もよい.
In[77]:=
Click for copyable input
Out[77]=
反復回数を30に減らすと,結果はより速く得られる.
In[78]:=
Click for copyable input
Out[78]=
推定距離を2に,反復回数を40回に指定してもデフォルトより速い.
In[79]:=
Click for copyable input
Out[79]=
さらに反復回数を20回に減らすと,はるかに速くなる.
In[80]:=
Click for copyable input
Out[80]=
上述のオプションを組み合せると,さらに速くなる.
In[81]:=
Click for copyable input
Out[81]=
は最速のメソッドであることが多いが,画質は劣ることが多い.
In[82]:=
Click for copyable input
Out[82]=
比較してみる.は最も遅いメソッドであるが,直交する線を使ったメッシュが描ける唯一のメソッドである.
In[83]:=
Click for copyable input
Out[83]=

出力から頂点座標を抽出する

ほとんどの場合,通常のGraphics式と同様にGraphPlotおよびGraphPlot3Dの出力を扱うことになる.然し,出力式に潜んでいる追加情報を利用した方がよい場合もある.これはGraphics[Annotation[data, VertexCoordinateRules->rules]]という形式である.これはグラフの頂点座標を抽出する際に特に便利である.

簡単なグラフである.
In[84]:=
Click for copyable input
Out[84]=
これで頂点の座標を抽出する.
In[85]:=
Click for copyable input
Out[85]=

例題ギャラリー

大腸菌転写ネットワーク

セル内の遺伝子式を制御する転写規則ネットワークのグラフ表現において,ノード(頂点)はオペロンであり,同じmRNAに転写された1つ以上の遺伝子である.グラフの辺は,転写因子をエンコードするオペロンから,それが直接支配するオペロンへと向いている[1].

データ

これは規則として記述されたネットワーク[2]である.

In[86]:=
Click for copyable input

ネットワークの描画

ネットワークは多数の要素から構成される.マウスを頂点上に置くと,ラベルが見られる.
In[87]:=
Click for copyable input
Out[87]=
異なる要素のパッキングスタイルを使う.
In[88]:=
Click for copyable input
Out[88]=
頂点を広げる.
In[89]:=
Click for copyable input
Out[89]=
別の方法.
In[90]:=
Click for copyable input
Out[90]=

プロテイン:オキシドレダクターゼ

データ形式[4]を使ってオキシドレダクターゼプロテイン[3]をプロットする.
In[91]:=
Click for copyable input
Out[91]=

正方誘電体導波管

正方疎行列はグラフの隣接行列と見ることができるので,GraphPlotを使って疎行列を描画すると役に立つことがよくある.以下に例を挙げる.1000以上の行列のグラフ描画は[7]にある.

このグラフは電気工学で使われる疎行列を表す[5].
In[113]:=
Click for copyable input
Out[115]=
In[116]:=
Click for copyable input
Out[116]=

ソーシャルネットワーク

グラフの描画は,社会構造を可視化するパワフルなツールである.

以下はソーシャルネットワークのプロットである.
In[94]:=
Click for copyable input
Out[94]=

語やテキストからのグラフ

次は,すべて「din」で始まる語のネットワークである.各語に2つの最も近くにある語があり,それぞれが該当語と辺で結ばれている.
In[95]:=
Click for copyable input
In[96]:=
Click for copyable input
In[97]:=
Click for copyable input
Out[97]=
単語の中のそれぞれの文字と,同じ単語のその文字の次の文字とをつないだグラフを生成する.
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
テキストの中の語と後続の語をつないだグラフ.
In[100]:=
Click for copyable input
In[101]:=
Click for copyable input
Out[101]=

トーラス

トーラスを定義し,3Dでプロットする.
In[102]:=
Click for copyable input
In[103]:=
Click for copyable input
Out[103]=

参考文献

[1] Milo, R., S. Shen-Orr, S. Itzkovitz, N. Kashtan, D. Chklovskii, and U. Alon. "Network Motifs: Simple Building Blocks of Complex Networks." Science 298, no. 5594 (2002): 824-827.

[2] Alon, U. "Collection of Complex Networks." Uri Alon Homepage 2007. http://www.weizmann.ac.il/mcb/UriAlon/groupNetworksData.html

[3] Milo, R., S. Itzkovitz, N. Kashtan, et al. "Superfamilies of Designed and Evolved Networks." Science 303, no. 5663 (2004): 1538-1542.

[4] Alon, U. "1AORInter." network Motifs 2007. http://www.weizmann.ac.il/mcb/UriAlon/Papers/networkMotifs/1AORInter_st.txt

[5] National Institute of Standards and Technology. "DWA512: Square Dielectric Waveguide." Matrix Market 2007. http://math.nist.gov/MatrixMarket/data/NEP/dwave/dwa512.html

[6] Freivalds, K., U. Dogrusoz, and P. Kikusts, "Disconnected Graph Layout and the Polyomino Packing Approach." Lecture Notes in Computer Science: Revised Papers from the 9th International Symposium on Graph Drawing 2265 (2001): 378-391.

[7] Hu, Y. F. "Graph Drawing of Square Matrices from University of Florida Sparse Matrix Collection." (2007). http://members.wolfram.com/~yifanhu/UFMatrixGraphPlot

[8] Hu, Y. F. "Efficient, High-Quality Force-Directed Graph Drawing." The Mathematica Journal 10, no. 1 (2006): 37-71.

New to Mathematica? Find your learning path »
Have a question? Ask support »