Graphおよび関連関数のオプションで,使用するレイアウトを指定する.
GraphLayout
グラフレイアウトのリスト »Graphおよび関連関数のオプションで,使用するレイアウトを指定する.
詳細
- グラフレイアウトの計算は通常数段階で行われる.GraphLayout->{s1->m1,…}とすると,段階 siにメソッド miが使われる.
- 次は,グラフレイアウトに使用可能な段階 siである.
-
"VertexLayout" 頂点をどのように埋め込むか "EdgeLayout" 辺の順序をどのように決めるか "PackingLayout" 頂点の連結成分をどのように置くか - 次は,"VertexLayout"メソッドである.
-
Automatic レイアウトを自動的に選択する None レイアウトは計算しない "emb" 名前付きの埋込み - 次は,使用可能な特別埋込み"emb"である.
-

"BipartiteEmbedding" 頂点を2本の平行線上に置く 
"CircularEmbedding" 頂点を円の上に置く 
"CircularMultipartiteEmbedding" 頂点を円の弦の上に置く 
"DiscreteSpiralEmbedding" 頂点を離散螺線上に置く 
"GridEmbedding" 頂点を格子上に置く 
"LinearEmbedding" 頂点を直線上に置く 
"MultipartiteEmbedding" 頂点を数本の平行線上に置く 
"SpiralEmbedding" 頂点を2Dに投影された3D螺線の上に置く 
"StarEmbedding" 頂点を中心のある円上に置く - 次は,木グラフ等の層状グラフと有向非巡回グラフのための使用可能な構造埋込み"emb"である.
-

"BalloonEmbedding" 頂点を中心が親頂点上にある円上に置く 
"RadialEmbedding" 頂点を円弧の一部に置く 
"LayeredDigraphEmbedding" 頂点を有向非巡回グラフの平行線上に置く 
"LayeredEmbedding" 頂点を平行線上に置く 
"SymmetricLayeredEmbedding" 対称平行線上の頂点 
"HyperbolicRadialEmbedding" ポアンカレ円板上の円弧上の頂点 - 使用可能な最適化埋込み"emb"は,どれも数量を最少にする.以下は含まれるものである.
-

"GravityEmbedding" 頂点を質点,辺をバネとするエネルギー 
"HighDimensionalEmbedding" 高次元のバネ電気のエネルギー 
"PlanarEmbedding" 辺交差の数 
"SpectralEmbedding" 平方距離の重み付きの総和 
"SphericalEmbedding" 曲面上の頂点とバネとしての辺を持つエネルギー 
"SpringElectricalEmbedding" 辺をバネ,頂点を電荷とするエネルギー 
"SpringEmbedding" 辺をバネとするエネルギー 
"TutteEmbedding" 辺交差の数と近傍までの距離 
"HyperbolicSpringEmbedding" ポアンカレ円板上のバネとしての辺を持つエネルギー - 次は,"EdgeLayout"メソッドの可能な設定値である.
-
"DividedEdgeBundling" 辺を線分の束に分ける "HierarchicalEdgeBundling" 階層的木構造に従って辺を束にする "StraightLine" 辺の間の直線 - 次は,"PackingLayout"の可能な設定値である.
-
"ClosestPacking" 最上部左からの最密充填を近似する "ClosestPackingCenter" 中央からの最密充填を近似する "Layered" 最上部左から始めて層に並べる "LayeredLeft" 左から始めて層に並べる "LayeredTop" 最上部から始めて層に並べる "NestedGrid" ネストした格子上に並べる
例題
すべて開く すべて閉じる例 (2)
Table[PathGraph[Range[20], GraphLayout -> l, PlotLabel -> l], {l, {"CircularEmbedding", "SpiralEmbedding"}}]Table[GridGraph[{10, 10}, GraphLayout -> l, PlotLabel -> Style[l, 10]], {l, {"SpringEmbedding", "SpringElectricalEmbedding", "HighDimensionalEmbedding"}}]スコープ (131)
基本的な用法 (3)
Graphのデフォルトのレイアウトを変える:
Graph[{12, 23, 34, 45, 56, 67, 78, 89, 910}]Graph[{12, 23, 34, 45, 56, 67, 78, 89, 910}, GraphLayout -> "DiscreteSpiralEmbedding"]Graph3D[{12, 13, 15, 24, 26, 34, 37, 48, 56, 57, 68, 78}]Graph3D[{12, 23, 34, 45, 56, 67, 78, 89, 910}, GraphLayout -> "DiscreteSpiralEmbedding"]TreeGraph[{12, 13, 14, 45}]TreeGraph[{12, 13, 14, 45}, GraphLayout -> "CircularEmbedding"]PathGraph[Range[20]]PathGraph[Range[20], GraphLayout -> "CircularEmbedding"]Graph[{12, 13, 14, 23, 24, 34}, GraphLayout -> "PlanarEmbedding"]Graph[{14, 15, 16, 24, 25, 26, 34, 35, 36}, GraphLayout -> "BipartiteEmbedding"]Graph[{13, 23, 24, 25, 34, 35}, GraphLayout -> "SpringEmbedding"]PetersenGraph[5, 1, GraphLayout -> "CircularEmbedding"]RandomGraph[{10, 20}, GraphLayout -> "CircularEmbedding"]AdjacencyGraph[{{0, 1, 0}, {0, 0, 1}, {1, 0, 0}}, GraphLayout -> "CircularEmbedding"]LineGraph[PetersenGraph[], GraphLayout -> "CircularEmbedding"]頂点のレイアウト (116)
"BalloonEmbedding" (8)
Graph[Table[Floor[j / 12]j, {j, 1, 30}], GraphLayout -> "BalloonEmbedding"]"BalloonEmbedding"は木グラフに最適である:
TreeGraph[RandomInteger[{1, #}]# + 1& /@ Range[30], GraphLayout -> "BalloonEmbedding"]オプション"EvenAngle"->Trueを使って囲み円の中に頂点を均等に置く:
{KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "EvenAngle" -> True}],
KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "EvenAngle" -> False}]}"OptimalOrder"->Trueと設定すると,頂点の並び順が角度分解能と縦横比を最適化する:
{KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "OptimalOrder" -> True}],
KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "OptimalOrder" -> False}]}オプション"RootVertex"->v を使って根頂点を設定する:
{KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "RootVertex" -> 1}],
KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "RootVertex" -> 2}]}オプション"Rotation"->r を使ってレイアウトを回転させる:
KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "Rotation" -> 90Degree}]"SectorAngles"->s を使って各扇形の大きさを制御する:
KaryTree[48, 5, GraphLayout -> {"BalloonEmbedding", "SectorAngles" -> {1 -> Pi / 2}}]RandomGraph[{10, 15}, GraphLayout -> "BalloonEmbedding"]"BipartiteEmbedding" (2)
Graph[Table[iMod[i + 1, 5], {i, 8}], GraphLayout -> "BipartiteEmbedding"]"BipartiteEmbedding"は二部グラフのみに使うことができる:
CycleGraph[8, GraphLayout -> "BipartiteEmbedding"]"CircularEmbedding" (4)
Graph[Table[iMod[i + 1, 3], {i, 8}], GraphLayout -> "CircularEmbedding"]"CircularEmbedding"は,巡回グラフ,LCF表記の埋込み,閉路グラフに最適である:
CycleGraph[10, GraphLayout -> "CircularEmbedding"]オプション"Offset"->offset を使ってオフセットの角度を指定する:
CompleteGraph[7, GraphLayout -> {"CircularEmbedding", "Offset" -> #}]& /@ {Automatic, {30Degree, 30Degree}, {50Degree, 80Degree}}"OptimalOrder"->Trueと設定すると,頂点は円周上にきれいに並ぶように並べ替えられる:
edges = RandomSample[EdgeList[CycleGraph[20]], 20];
{Graph[edges, GraphLayout -> {"CircularEmbedding", "OptimalOrder" -> True}],
Graph[edges, GraphLayout -> {"CircularEmbedding", "OptimalOrder" -> False}]}"CircularMultipartiteLayout" (3)
Graph[Flatten[Table[ij, {i, 4}, {j, 5, 8}]], GraphLayout -> {"CircularMultipartiteEmbedding", "VertexPartition" -> {2, 3, 3}}]"CircularMultipartiteEmbedding"は k 部グラフに最適である:
CompleteGraph[{2, 3, 2, 3}, GraphLayout -> {"CircularMultipartiteEmbedding", "VertexPartition" -> {2, 3, 2, 3}}]"VertexPartition"->partition を使って頂点分割を指定する:
CompleteGraph[{3, 3, 2}, GraphLayout -> {"CircularMultipartiteEmbedding", "VertexPartition" -> {3, 3, 2}}]"DiscreteSpiralEmbedding" (3)
Graph[Table[ii + 1, {i, 11}], GraphLayout -> "DiscreteSpiralEmbedding"]"DiscreteSpiralEmbedding"は道グラフに最も適している:
PathGraph[Range[30], GraphLayout -> "DiscreteSpiralEmbedding"]"OptimalOrder"->Trueと設定すると,頂点が離散螺線上にきれいに置かれるように並べ替えられる:
edges = RandomSample[EdgeList[PathGraph[Range[20]]], 19];
{Graph[edges, GraphLayout -> {"DiscreteSpiralEmbedding", "OptimalOrder" -> True}],
Graph[edges, GraphLayout -> {"DiscreteSpiralEmbedding", "OptimalOrder" -> False}]}"GravityEmbedding" (2)
各頂点が電荷と質量を持ち各辺がバネに対応するときに,機械・電気・重力エネルギーが最小になるように頂点を置く:
Graph[Table[Floor[j / 12]j, {j, 1, 30}], GraphLayout -> "GravityEmbedding"]オプション"RootVertex"->v を使って根頂点を設定する:
{KaryTree[48, 5, GraphLayout -> {"GravityEmbedding", "RootVertex" -> 1}],
KaryTree[48, 5, GraphLayout -> {"GravityEmbedding", "RootVertex" -> 2}]}"GridEmbedding" (3)
Graph[Table[iMod[i + 3, 8], {i, 15}], GraphLayout -> {"GridEmbedding", "Dimension" -> {4, 4}}]"GridEmbedding"は格子グラフに最適である:
GridGraph[{10, 10}, GraphLayout -> {"GridEmbedding", "Dimension" -> {10, 10}}]"Dimension"->dim を使って格子の大きさを指定する:
GridGraph[{12, 12}, GraphLayout -> {"GridEmbedding", "Dimension" -> {12, 12}}]"HighDimensionalEmbedding" (3)
Graph[{12, 13, 15, 19, 24, 26, 210, 34, 37, 311, 48, 412, 56, 57, 513, 68, 614, 78, 715, 816, 910, 911, 913, 1012, 1014, 1112, 1115, 1216, 1314, 1315, 1416, 1516}, GraphLayout -> "HighDimensionalEmbedding"]"HighDimensionalEmbedding"は大きいグラフに最適である:
GridGraph[{50, 50}, GraphLayout -> "HighDimensionalEmbedding"]"RandomSeed"->int を使って最初の頂点の置き方を計算する乱数生成器のシードを指定する:
edge = {13, 15, 17, 23, 26, 27, 28, 34, 38, 46, 58, 78};Graph[edge, GraphLayout -> {"HighDimensionalEmbedding", "RandomSeed" -> #}]& /@ {1, 50}"HyperbolicRadialEmbedding" (4)
KaryTree[30, GraphLayout -> "HyperbolicRadialEmbedding"]"HyperbolicRadialEmbedding"は木グラフに最も適している:
TreeGraph[RandomInteger[{1, #}]# + 1& /@ Range[30], GraphLayout -> "HyperbolicRadialEmbedding"]オプション"RootVertex"v を使って根頂点を設定する:
KaryTree[60, 5, GraphLayout -> {"HyperbolicRadialEmbedding", "RootVertex" -> #}]& /@ {1, 2}KaryTree[60, 5, GraphLayout -> {"HyperbolicRadialEmbedding", "Rotation" -> 45Degree}]"HyperbolicSpringEmbedding" (10)
KaryTree[30, GraphLayout -> "HyperbolicSpringEmbedding"]"HyperbolicSpringEmbedding"は,木グラフに最も適している:
KaryTree[20, GraphLayout -> "HyperbolicSpringEmbedding"]"EdgeWeighted"Trueと設定すると,辺の重みが使われる:
edge = RandomInteger[#]# + 1& /@ Range[0, 10];
weight = RandomInteger[{1, 5}, 11];Graph[edge, EdgeWeight -> weight, GraphLayout -> {"HyperbolicSpringEmbedding", "EdgeWeighted" -> #}]& /@ {True, False}オプション "EnergyControl"e を使って,最小化の過程におけるシステム全体のエネルギーに対する制約を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, {GraphLayout -> {"HyperbolicSpringEmbedding", "EnergyControl" -> #}}]& /@ {Automatic, "Monotonic", "NonMonotonic"}"InferentialDistance"d を使って頂点間の相互作用が存在しないと仮定されるカットオフ距離を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"HyperbolicSpringEmbedding", "InferentialDistance" -> #}]& /@ {Automatic, .5, 2}"MaxIteration"it を使ってエネルギーの最小化を試みる際に使用される反復回数の上限を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"HyperbolicSpringEmbedding", "MaxIteration" -> #}]& /@ {Automatic, 1, 2}"RandomSeed"int を使って,初期頂点配置を計算する乱数生成器のシードを指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"HyperbolicSpringEmbedding", "RandomSeed" -> #}]& /@ {1, 5}"StepControl"method を使ってエネルギー最小化の際のステップ長の変更方法を定義する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"HyperbolicSpringEmbedding", "StepControl" -> #}]& /@ {Automatic, "Monotonic", "NonMonotonic", "StrictlyMonotonic"}"StepLength"r を使って頂点を移動する際に使用する初期ステップ長を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"HyperbolicSpringEmbedding", "StepLength" -> #}]& /@ {1, 4.5}"Tolerance"r を使ってエネルギー最小化過程を終了する際に用いられる許容誤差を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"HyperbolicSpringEmbedding", "Tolerance" -> #}]& /@ {Automatic, .5}"LayeredEmbedding" (7)
非隣接層間の辺の数を最小にするような方法で,いくつかの層に頂点を置く:
Graph[Table[iMod[i + 1, 5], {i, 12}], GraphLayout -> "LayeredEmbedding"]"LayeredEmbedding"は木グラフに最も適している:
TreeGraph[RandomInteger[{1, #}]# + 1& /@ Range[20], GraphLayout -> "LayeredEmbedding"]オプション"LayerSizeFunction"->func を使って相対的な高さを指定する:
KaryTree[10, 3, GraphLayout -> {"LayeredEmbedding", LayerSizeFunction -> (2&)}]オプション"RootVertex"->v を使って根頂点を設定する:
{KaryTree[10, 3, GraphLayout -> {"LayeredEmbedding", "RootVertex" -> 1}],
KaryTree[10, 3, GraphLayout -> {"LayeredEmbedding", "RootVertex" -> 4}]}オプション"LeafDistance"->d を使って葉の距離を指定する:
{KaryTree[10, 3, GraphLayout -> {"LayeredEmbedding", "LeafDistance" -> 1}],
KaryTree[10, 3, GraphLayout -> {"LayeredEmbedding", "LeafDistance" -> 2}]}オプション"Orientation"->o を使って方向が異なる木を描画する:
Table[KaryTree[6, 3, GraphLayout -> {"LayeredEmbedding", "Orientation" -> o}], {o, {Top, Bottom, Left, Right}}]RandomGraph[{20, 30}, GraphLayout -> "LayeredEmbedding"]"LayeredDigraphEmbedding" (7)
Graph[{12, 13, 23, 14, 24, 15}, GraphLayout -> "LayeredDigraphEmbedding"]"LayeredDigraphEmbedding"は有向非巡回グラフに最適である:
TreeGraph[RandomInteger[{1, #}]# + 1& /@ Range[20], GraphLayout -> "LayeredDigraphEmbedding"]オプション"RootVertex"->v を使って根頂点を設定する:
Graph[{12, 13, 23, 14, 24, 15}, GraphLayout -> {"LayeredDigraphEmbedding", "RootVertex" -> #}]& /@ {1, 3}オプション"Rotation"r を使ってレイアウトを回転させる:
Table[Graph[{12, 13, 23, 14, 24, 15}, GraphLayout -> {"LayeredDigraphEmbedding", "Rotation" -> r Degree}], {r, {30, 60, 90, 120}}]オプション"Orientation"->o を使って方向が違う木を描画する:
Table[Graph[{12, 13, 23, 14, 24, 15}, GraphLayout -> {"LayeredDigraphEmbedding", "Orientation" -> o}], {o, {Top, Bottom, Left, Right}}]オプション"VertexLayerPosition"->positions を使って層の位置を指定する:
Table[Graph[{12, 13, 23, 14, 24, 15}, GraphLayout -> {"LayeredDigraphEmbedding", "VertexLayerPosition" -> pos}], {pos, {{1, 3, 4, 5, 6}, {2, 1, 3, 4, 5}, {5, 4, 2, 1, 3}, {3, 6, 1, 2, 4}}}]RandomGraph[{20, 35}, GraphLayout -> "LayeredDigraphDrawing"]"LinearEmbedding" (2)
Graph[{12, 23, 34}, GraphLayout -> "LinearEmbedding"]オプションMethod->m を使ってアルゴリズムを指定する:
Table[CompleteGraph[4, GraphLayout -> {"LinearEmbedding", Method -> m}], {m, {"Spectral", "SpectralOrdering", "TwoNormApproximation", "TwoNormApproximationOrdering"}}]"MultipartiteEmbedding" (3)
Graph[Flatten[Table[ij, {i, 3}, {j, 4, 8}]], GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> {2, 1, 3, 2}}]"MultipartiteEmbedding"は k 部グラフに最適である:
CompleteGraph[{4, 4, 4}, GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> {4, 4, 4}}]"VertexPartition"->partition を使って頂点分割を指定する:
CompleteGraph[{3, 2, 4}, GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> {3, 2, 4}}]"PlanarEmbedding" (2)
Graph[{12, 13, 14, 23, 24, 34}, GraphLayout -> "PlanarEmbedding"]"PlanarEmbedding"は平面グラフにしか使えない:
HararyGraph[3, 5, GraphLayout -> "PlanarEmbedding"]"RadialEmbedding" (5)
Graph[Table[Floor[j / 7]j, {j, 1, 30}], GraphLayout -> "RadialEmbedding"]"RadialEmbedding"は木グラフに最も適している:
TreeGraph[RandomInteger[{1, #}]# + 1& /@ Range[30], GraphLayout -> "RadialEmbedding"]オプション"RootVertex"->v を使って根頂点を設定する:
KaryTree[60, 5, GraphLayout -> {"RadialEmbedding", "RootVertex" -> #}]& /@ {1, 2}オプション"Rotation"r を使ってレイアウトを回転させる:
Table[KaryTree[60, 5, GraphLayout -> {"ComponentLayout" -> {"RadialEmbedding", "Rotation" -> r Degree}}], {r, {0, 30, 60, 90}}]RandomGraph[{20, 40}, GraphLayout -> "RadialEmbedding"]"RandomEmbedding" (1)
"SpectralEmbedding" (3)
Graph[{12, 13, 15, 19, 24, 26, 210, 34, 37, 311, 48, 412, 56, 57, 513, 68, 614, 78, 715, 816, 910, 911, 913, 1012, 1014, 1112, 1115, 1216, 1314, 1315, 1416, 1516}, GraphLayout -> "SpectralEmbedding"]"SpectralEmbedding"は,適切に構造化されたグラフに最適である:
HypercubeGraph[9, GraphLayout -> "SpectralEmbedding"]オプション"RelaxationFactor"->r を使って緩和ラプラス行列に基づいたレイアウトを求める:
Table[GridGraph[{10, 10}, GraphLayout -> {"SpectralEmbedding", "RelaxationFactor" -> i}], {i, 0, 1, .3}]"SphericalEmbedding" (2)
Graph[{114, 115, 116, 25, 26, 213, 37, 314, 319, 48, 415, 420, 511, 519, 612, 620, 711, 716, 812, 816, 910, 914, 917, 1015, 1018, 1112, 1317, 1318, 1719, 1820}, GraphLayout -> "SphericalEmbedding"]"SphericalEmbedding"は正則の構造化グラフに最適である:
Graph[GraphData[{"GeneralizedPetersen", {9, 2}}, "Edges"], GraphLayout -> "SphericalEmbedding"]"SpiralEmbedding" (3)
Graph[Table[iMod[i + 1, 20, 1], {i, 20}], GraphLayout -> "SpiralEmbedding"]"SpiralEmbedding"は道グラフに最適である:
PathGraph[Range[40], GraphLayout -> "SpiralEmbedding"]"OptimalOrder"->Trueと設定すると,頂点は螺線上にきれいに並ぶように並べ替えられる:
edges = RandomSample[EdgeList[CycleGraph[20]], 20];
{Graph[edges, GraphLayout -> {"SpiralEmbedding", "OptimalOrder" -> True}],
Graph[edges, GraphLayout -> {"SpiralEmbedding", "OptimalOrder" -> False}]}"SpringElectricalEmbedding" (15)
各頂点が荷電していて各辺がバネに対応するときに,力学的エネルギーと電気エネルギーが最小になるように頂点を並べる:
Graph[{12, 13, 15, 19, 24, 26, 210, 34, 37, 311, 48, 412, 56, 57, 513, 68, 614, 78, 715, 816, 910, 911, 913, 1012, 1014, 1112, 1115, 1216, 1314, 1315, 1416, 1516}, GraphLayout -> "SpringElectricalEmbedding"]"SpringElectricalEmbedding"は大多数のグラフに非常に適している:
KnightTourGraph[10, 10, GraphLayout -> "SpringElectricalEmbedding"]"EdgeWeighted"->Trueと設定すると,辺の重みが使われる:
edge = RandomInteger[#]# + 1& /@ Range[0, 10];
weight = RandomInteger[{1, 5}, 11];Graph[edge, EdgeWeight -> weight, GraphLayout -> {"SpringElectricalEmbedding", "EdgeWeighted" -> #}]& /@ {True, False}オプション"EnergyControl"->e を使って最小化の際の系の総エネルギーについての制限を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, {GraphLayout -> {"SpringElectricalEmbedding", "EnergyControl" -> #, "StepControl" -> "Monotonic"}}]& /@ {Automatic, "Monotonic", "NonMonotonic"}"InferentialDistance"->d を使ってカットオフ距離を指定する.このカットオフ距離を超えた頂点間のインタラクションは存在しないと想定される:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "InferentialDistance" -> #}]& /@ {Automatic, .1, .5}"MaxIteration"->it を使ってエネルギーの最小化の試みに使う最大反復回数を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "MaxIteration" -> #}]& /@ {Automatic, 1, 2}"Multilevel"->method を使ってグラフを粗大化させる再帰的手続きに使うメソッドを指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "Multilevel" -> #}]& /@ {Automatic, None, "MaximalIndependentVertexSet", "MaximalIndependentVertexSetRugeStuben", "MaximalIndependentVertexSetInjection", "MaximalIndependentVertexSetRugeStubenInjection", "MaximalIndependentEdgeSetHeavyEdge", "MaximalIndependentEdgeSet", "MaximalIndependentEdgeSetSmallestVertexWeight", "Hybrid"}"Octree"->Trueと設定すると,八分木データ構造(三次元)あるいは四分木データ構造(二次元)が反発力の計算に使われる:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "Octree" -> #}]& /@ {True, False}"RandomSeed"->int を使って最初の頂点の置き方を計算する乱数生成器のシードを指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "RandomSeed" -> #}]& /@ {1, 5}"RepulsiveForcePower"->r を使って,反発力が距離によって減衰する速さを制御する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "RepulsiveForcePower" -> #}]& /@ {-1, -2.5}オプション"Rotation"r を使ってレイアウトを回転させる:
edge = RandomInteger[#]# + 1& /@ Range[0, 50];Graph[edge, {GraphLayout -> {"SpringElectricalEmbedding", "Rotation" -> #}}]& /@ {0, 90Degree}"SpringConstant"r を使って引力の定数を制御する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "SpringConstant" -> #}]& /@ {1, 4.5, 8}"StepControl"->method を使ってエネルギーの最小化において刻み幅がどのように調整されるかを定義する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "StepControl" -> #}]& /@ {Automatic, "Monotonic", "NonMonotonic", "StrictlyMonotonic"}"StepLength"->r を使って頂点を動かす際の初期刻み幅を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "StepLength" -> #}]& /@ {1, 4.5}"Tolerance"->r を使ってエネルギー最小化プロセスを終了する許容度を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 20];Graph[edge, GraphLayout -> {"SpringElectricalEmbedding", "Tolerance" -> #}]& /@ {Automatic, .5}"SpringEmbedding" (12)
各辺がバネに対応するときの力学的エネルギーが最小となるように頂点を置く:
Graph[{114, 115, 116, 25, 26, 213, 37, 314, 319, 48, 415, 420, 511, 519, 612, 620, 711, 716, 812, 816, 910, 914, 917, 1015, 1018, 1112, 1317, 1318, 1719, 1820}, GraphLayout -> "SpringEmbedding"]"SpringEmbedding"は標準構造のグラフに最適である:
Graph[GraphData[{"GeneralizedPetersen", {9, 2}}, "EdgeRules"], GraphLayout -> "SpringEmbedding"]"EdgeWeighted"->Trueと設定すると,辺の重みが使われる:
edge = RandomInteger[#]# + 1& /@ Range[0, 10];
weight = RandomInteger[{1, 5}, 11];Graph[edge, EdgeWeight -> weight, GraphLayout -> {"SpringEmbedding", "EdgeWeighted" -> #}]& /@ {True, False}オプション"EnergyControl"->e を使って最小化の際の系の総エネルギー量に対する制限を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, {GraphLayout -> {"SpringEmbedding", "EnergyControl" -> #}}]& /@ {Automatic, "Monotonic", "NonMonotonic"}"InferentialDistance"->d を使ってカットオフ距離を指定する.このカットオフ距離を超えては頂点間のインタラクションは存在しないと考えられる:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"SpringEmbedding", "InferentialDistance" -> #}]& /@ {Automatic, .5, 2}"MaxIteration"->it を使ってエネルギー最小化の試みで使用する最大反復回数を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"SpringEmbedding", "MaxIteration" -> #}]& /@ {Automatic, 1, 2}"Multilevel"->method を使ってグラフを粗大化させる再帰的手続きに使用するメソッドを指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"SpringEmbedding", "Multilevel" -> #}]& /@ {Automatic, None, "MaximalIndependentVertexSet", "MaximalIndependentVertexSetRugeStuben", "MaximalIndependentVertexSetInjection", "MaximalIndependentVertexSetRugeStubenInjection", "MaximalIndependentEdgeSetHeavyEdge", "MaximalIndependentEdgeSet", "MaximalIndependentEdgeSetSmallestVertexWeight", "Hybrid"}"RandomSeed"->int を使って最初の頂点の置き方を計算する乱数生成器のシードを指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"SpringEmbedding", "RandomSeed" -> #}]& /@ {1, 5}オプション"Rotation"r を使ってレイアウトを回転させる:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, {GraphLayout -> {"SpringEmbedding", "Rotation" -> #}}]& /@ {0, 90Degree}"StepControl"->method を使ってエネルギー最小化においてどのように刻み幅が調整されるかを定義する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"SpringEmbedding", "StepControl" -> #}]& /@ {Automatic, "Monotonic", "NonMonotonic", "StrictlyMonotonic"}"StepLength"->r を使って頂点を移動させる際の最初の刻み幅を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"SpringEmbedding", "StepLength" -> #}]& /@ {1, 4.5}"Tolerance"->r を使ってエネルギー最小化のプロセスを終らせる際に使う許容度を指定する:
edge = RandomInteger[#]# + 1& /@ Range[0, 30];Graph[edge, GraphLayout -> {"SpringEmbedding", "Tolerance" -> #}]& /@ {Automatic, .5}"StarEmbedding" (4)
Graph[Table[1i, {i, 2, 6}], GraphLayout -> "StarEmbedding"]"StarEmbedding"は,星形のグラフに最適である:
{StarGraph[12, GraphLayout -> "StarEmbedding"], WheelGraph[12, GraphLayout -> "StarEmbedding"]}オプション"Offset"->offset を使ってオフセットの角度を指定する:
StarGraph[15, GraphLayout -> {"StarEmbedding", "Offset" -> #}]& /@ {Automatic, {30Degree, 30Degree}, {50Degree, 80Degree}}オプション"Center"->center を使って中心を指定する:
StarGraph[15, GraphLayout -> {"StarEmbedding", "Center" -> #}]& /@ {Automatic, 10}"SymmetricLayeredEmbedding" (4)
Graph[{12, 13, 14, 25, 35, 45}, GraphLayout -> "SymmetricLayeredEmbedding"]SymmetricLayeredEmbeddingは,対称有向非巡回グラフに対して最も適切に機能する:
NestGraph[{f[#], g[#]}&, x, 3, GraphLayout -> "SymmetricLayeredEmbedding"]オプション"Rotation"r を使ってレイアウトを回転させる:
Table[Graph[{12, 13, 14, 25, 35, 45}, GraphLayout -> {"SymmetricLayeredEmbedding", "Rotation" -> r Degree}], {r, {30, 60, 90, 120}}]階層化された有向グラフ描画は,任意のグラフに使うことができる:
RandomGraph[{20, 35}, GraphLayout -> "SymmetricLayeredEmbedding"]"TutteEmbedding" (2)
辺を交差させずに頂点を置き,近傍への距離の合計を最短にする:
Graph[{12, 13, 14, 23, 24, 34}, GraphLayout -> "TutteEmbedding"]"TutteEmbedding"は,3連結平面グラフのみに使うことができる:
Graph[GraphData[{"JohnsonSkeleton", 77}, "EdgeList"], GraphLayout -> "TutteEmbedding"]辺のレイアウト (3)
"DividedEdgeBundling" (1)
"HierarchicalEdgeBundling" (1)
充填レイアウト (6)
"ClosestPacking" (1)
"ClosestPackingCenter" (1)
"Layered" (1)
"LayeredLeft" (1)
"LayeredTop" (1)
描画順 (3)
"VertexFirst" (1)
"EdgeFirst" (1)
アプリケーション (2)
Wolframシステムのインストールディレクトリのレイアウト:
files = Flatten[Rest[NestList[Union[Flatten[Thread[# -> FileNames["*", #]]& /@ Last /@ #]]&, {"" -> $InstallationDirectory}, 2]]];Graph[files, GraphLayout -> "BalloonEmbedding"]Unixオペレーティングシステムの初期バージョン間の関係を示す:
systems = {"5th Edition""6th Edition", "5th Edition""PWB 1.0", "6th Edition""1 BSD", "6th Edition""Interdata", "6th Edition""LSX", "6th Edition""Mini Unix", "6th Edition""Wollongong", "PWB 1.0""PWB 1.2", "PWB 1.0""USG 1.0", "1 BSD""2 BSD", "Interdata""PWB 2.0", "Interdata""Unix/TS 3.0", "Interdata""7th Edition", "PWB 1.2""PWB 2.0", "USG 1.0""USG 2.0", "USG 1.0""CB Unix 1", "7th Edition""2 BSD", "7th Edition""32V", "7th Edition""Xenix", "7th Edition""Ultrix-11", "7th Edition""UniPlus+", "7th Edition""V7M", "PWB 2.0""Unix/TS 3.0", "USG 2.0""USG 3.0", "CB Unix 1""CB Unix 2", "32V""3 BSD", "Unix/TS 1.0""Unix/TS 3.0", "USG 3.0""Unix/TS 3.0", "CB Unix 2""CB Unix 3", "3 BSD""4 BSD", "V7M""Ultrix-11", "Unix/TS 3.0""TS 4.0", "CB Unix 3""Unix/TS++", "CB Unix 3""PDP-11 Sys V", "4 BSD""4.1 BSD", "Unix/TS++""TS 4.0", "4.1 BSD""8th Edition", "4.1 BSD""4.2 BSD", "4.1 BSD""2.8 BSD", "2 BSD""2.8 BSD", "TS 4.0""System V.0", "4.2 BSD""4.3 BSD", "4.2 BSD""Ultrix-32", "2.8 BSD""2.9 BSD", "2.8 BSD""Ultrix-11", "System V.0""System V.2", "8th Edition""9th Edition", "System V.2""System V.3"};Graph[systems, VertexShapeFunction -> "Square", VertexSize -> {.5, .2}, VertexLabels -> Placed["Name", Center], VertexStyle -> Hue[0.125, 0.7, 0.9], VertexLabelStyle -> Directive[FontFamily -> "Arial", 8], ImageSize -> 480, EdgeShapeFunction -> ({Arrowheads[{{.02, .6}}], Arrow[#]}&)]特性と関係 (6)
GraphLayoutは一般的なグラフに使うことができる:
{Graph[{12, 23, 31}, GraphLayout -> "SpringEmbedding"], PathGraph[Range[10], GraphLayout -> "SpringEmbedding"]}AdjacencyGraph[{{0, 1, 0}, {0, 0, 1}, {1, 0, 0}}, GraphLayout -> "SpringEmbedding"]{PetersenGraph[5, 2, GraphLayout -> "SpringEmbedding"], GridGraph[{5, 5}, GraphLayout -> "SpringEmbedding"]}RandomGraph[UniformGraphDistribution[50, 100], GraphLayout -> "CircularEmbedding"]VertexCoordinatesはGraphLayoutの座標を無効にする:
{Graph[{12, 23, 31}, GraphLayout -> "SpringElectricalEmbedding"],
Graph[{12, 23, 31}, GraphLayout -> "SpringElectricalEmbedding", VertexCoordinates -> Table[{i, i}, {i, 0, 2}]]}AbsoluteOptionsを使ってレイアウトアルゴリズムで計算したVertexCoordinatesを抽出する:
Graph[{12, 23, 31}]AbsoluteOptions[%, VertexCoordinates]関連するガイド
-
▪
- グラフのスタイル付け,ラベル付け,配置 ▪
- グラフの可視化 ▪
- グラフの特性 ▪
- グラフのアノテーション ▪
- グラフとネットワーク
履歴
2010 で導入 (8.0) | 2012 で更新 (9.0) ▪ 2014 (10.0) ▪ 2019 (12.0) ▪ 2021 (12.3) ▪ 2025 (14.2) ▪ 2025 (14.3)
テキスト
Wolfram Research (2010), GraphLayout, Wolfram言語関数, https://reference.wolfram.com/language/ref/GraphLayout.html (2025年に更新).
CMS
Wolfram Language. 2010. "GraphLayout." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/GraphLayout.html.
APA
Wolfram Language. (2010). GraphLayout. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GraphLayout.html
BibTeX
@misc{reference.wolfram_2026_graphlayout, author="Wolfram Research", title="{GraphLayout}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/GraphLayout.html}", note=[Accessed: 14-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_graphlayout, organization={Wolfram Research}, title={GraphLayout}, year={2025}, url={https://reference.wolfram.com/language/ref/GraphLayout.html}, note=[Accessed: 14-October-2026]}