plot
グラフのノードとエッジをプロット
説明
plot(___,
は、前述の構文にある任意の入力引数を組み合わせて、1 つ以上の名前と値のペアの引数で指定される追加のオプションを使用します。たとえば、Name,Value
)plot(G,'Layout','circle')
はグラフの環状レイアウトをプロットし、plot(G,'XData',X,'YData',Y,'ZData',Z)
はグラフ ノードの (X,Y,Z)
座標を指定します。
plot(
は、現在の座標軸 (ax
,___)gca
) の代わりに ax
によって指定される座標軸にプロットします。オプションの ax
は、前述の構文の任意の入力引数の組み合わせより前に指定できます。
例
スパース隣接行列を使用してグラフを作成し、そのグラフをプロットします。
n = 10; A = delsq(numgrid('L',n+2)); G = graph(A,'omitselfloops')
G = graph with properties: Edges: [130×2 table] Nodes: [75×0 table]
plot(G)
グラフを作成してプロットします。LineSpec
入力を指定して、グラフ プロットの Marker
、NodeColor
、LineStyle
のすべてまたは一部を変更します。
G = graph(bucky); plot(G,'-.dr','NodeLabel',{})
有向グラフを作成し、'force'
レイアウトを使用してそのグラフをプロットします。
G = digraph(1,2:5); G = addedge(G,2,6:15); G = addedge(G,15,16:20)
G = digraph with properties: Edges: [19×1 table] Nodes: [20×0 table]
plot(G,'Layout','force')
重み付きグラフを作成します。
s = [1 1 1 1 1 2 2 7 7 9 3 3 1 4 10 8 4 5 6 8]; t = [2 3 4 5 7 6 7 5 9 6 6 10 10 10 11 11 8 8 11 9]; weights = [1 1 1 1 3 3 2 4 1 6 2 8 8 9 3 2 10 12 15 16]; G = graph(s,t,weights)
G = graph with properties: Edges: [20×2 table] Nodes: [11×0 table]
カスタム ノード座標を使用して、グラフをプロットします。XData
で x 座標、YData
で y 座標、ZData
で z 座標を指定します。EdgeLabel
を使用して、エッジにその重みのラベルを付けます。
x = [0 0.5 -0.5 -0.5 0.5 0 1.5 0 2 -1.5 -2]; y = [0 0.5 0.5 -0.5 -0.5 2 0 -2 0 0 0]; z = [5 3 3 3 3 0 1 0 0 1 0]; plot(G,'XData',x,'YData',y,'ZData',z,'EdgeLabel',G.Edges.Weight)
上方からグラフを表示します。
view(2)
重み付きグラフを作成します。
s = [1 1 1 1 2 2 3 4 4 5 6]; t = [2 3 4 5 3 6 6 5 7 7 7]; weights = [50 10 20 80 90 90 30 20 100 40 60]; G = graph(s,t,weights)
G = graph with properties: Edges: [11×2 table] Nodes: [7×0 table]
グラフをプロットし、エッジにその重みのラベルを付け、エッジの幅を重みに比例させます。再スケーリングしたバージョンのエッジの重みを使用して、最も広いライン幅が 5 になるように各エッジのライン幅を決定します。
LWidths = 5*G.Edges.Weight/max(G.Edges.Weight); plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',LWidths)
有向グラフを作成します。ノードとエッジのカスタム ラベルを使用してグラフをプロットします。
s = [1 1 1 2 2 3 3 4 4 5 6 7]; t = [2 3 4 5 6 5 7 6 7 8 8 8]; G = digraph(s,t)
G = digraph with properties: Edges: [12×1 table] Nodes: [8×0 table]
eLabels = {'x' 'y' 'z' 'y' 'z' 'x' 'z' 'x' 'y' 'z' 'y' 'x'}; nLabels = {'{0}','{x}','{y}','{z}','{x,y}','{x,z}','{y,z}','{x,y,z}'}; plot(G,'Layout','force','EdgeLabel',eLabels,'NodeLabel',nLabels)
有向グラフを作成してプロットします。plot
に、GraphPlot
オブジェクトのハンドルを返す出力引数を指定します。
s = [1 1 1 2 2 3 3 4 5 5 6 7 7 8 8 9 10 11]; t = [2 3 10 4 12 4 5 6 6 7 9 8 10 9 11 12 11 12]; G = digraph(s,t)
G = digraph with properties: Edges: [18×1 table] Nodes: [12×0 table]
p = plot(G)
p = GraphPlot with properties: NodeColor: [0.0660 0.4430 0.7450] MarkerSize: 4 Marker: 'o' EdgeColor: [0.0660 0.4430 0.7450] LineWidth: 0.5000 LineStyle: '-' NodeLabel: {'1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12'} EdgeLabel: {} XData: [2.5000 1.5000 2.5000 2 3 2 3 3 2.5000 4 3.5000 2.5000] YData: [7 6 6 5 5 4 4 3 2 3 2 1] ZData: [0 0 0 0 0 0 0 0 0 0 0 0] Show all properties
ノードの色とマーカーを変更します。
p.Marker = 's'; p.NodeColor = 'r';
ノードのサイズを増加します。
p.MarkerSize = 7;
エッジのライン スタイルを変更します。
p.LineStyle = '--';
ノードの x 座標と y 座標を変更します。
p.XData = [2 4 1.5 3.5 1 3 1 2.1 3 2 3.1 4]; p.YData = [3 3 3.5 3.5 4 4 2 2 2 1 1 1];
入力引数
ライン スタイル、マーカー記号および色。記号の文字ベクトルまたは string ベクトルとして指定します。記号は任意の順序で指定でき、1 つ以上の特性を省略できます。ライン スタイルを省略した場合、プロットではグラフ エッジが実線で表示されます。
例: '--or'
は、ノードに赤の円マーカー、エッジに赤の破線を使用します。
例: 'r*'
は、ノードに赤のアスタリスクのマーカー、エッジに赤の実線を使用します。
ライン スタイル | 説明 | 結果として得られる線 |
---|---|---|
"-" | 実線 |
|
"--" | 破線 |
|
":" | 点線 |
|
"-." | 一点鎖線 |
|
マーカー | 説明 | 結果のマーカー |
---|---|---|
"o" | 円 |
|
"+" | プラス記号 |
|
"*" | アスタリスク |
|
"." | 点 |
|
"x" | 十字 |
|
"_" | 水平線 |
|
"|" | 垂直線 |
|
"square" | 正方形 |
|
"diamond" | 菱形 |
|
"^" | 上向き三角形 |
|
"v" | 下向き三角形 |
|
">" | 右向き三角形 |
|
"<" | 左向き三角形 |
|
"pentagram" | 星形五角形 |
|
"hexagram" | 星形六角形 |
|
色名 | 省略名 | RGB 3 成分 | 外観 |
---|---|---|---|
"red" | "r" | [1 0 0] | |
"green" | "g" | [0 1 0] | |
"blue" | "b" | [0 0 1] | |
"cyan" | "c" | [0 1 1] | |
"magenta" | "m" | [1 0 1] | |
"yellow" | "y" | [1 1 0] | |
"black" | "k" | [0 0 0] | |
"white" | "w" | [1 1 1] | |
axes オブジェクト。axes オブジェクトを指定しない場合、plot
は現在の座標軸 (gca
) を使用します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: p = plot(G,'EdgeColor','r','NodeColor','k','LineStyle','--')
ここには一部のグラフのプロパティのみを示します。完全な一覧については、GraphPlot のプロパティ を参照してください。
メモ
ArrowSize
は、digraph
を使用して作成された有向グラフの表示にのみ影響します。
矢印のサイズ。'ArrowSize'
と、ポイント単位の正の値で構成されるコンマ区切りのペアとして指定します。ArrowSize
の既定値は、ノード数が 100 以下のグラフでは 7
、ノード数が 100 を超えるグラフでは 4
です。
例: 15
エッジ ラインの色データ。'EdgeCData'
と、グラフ内のエッジ数に等しい長さをもつベクトルで構成されるコンマ区切りのペアとして指定します。EdgeCData
の値は現在のカラーマップの色に線形にマッピングされ、その結果、プロットしたグラフの各エッジが異なる色になります。
エッジの色。'EdgeColor'
と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。
'none'
— エッジは描画されません。'flat'
— 各エッジの色はEdgeCData
の値によって決まります。行列 — 各行はそれぞれ 1 つのエッジの色を表す RGB 3 成分です。この行列のサイズは
numedges(G)
行3
列です。RGB 3 成分、16 進数カラー コードまたは色名 — 指定した色がエッジで使用されます。
RGB 3 成分および 16 進数カラー コードは、カスタム色を指定するのに役立ちます。
RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は
[0,1]
の範囲でなければなりません。たとえば[0.4 0.6 0.7]
のようになります。16 進数カラー コードは、ハッシュ記号 (
#
) で始まり、3 桁または 6 桁の0
からF
までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。この値は大文字と小文字を区別しません。したがって、カラー コード"#FF8800"
、"#ff8800"
、"#F80"
、および"#f80"
は等価です。
あるいは、名前を使用して一部の一般的な色を指定できます。次の表に、名前の付いた色オプション、等価の RGB 3 成分、および 16 進数カラー コードを示します。
色名 省略名 RGB 3 成分 16 進数カラー コード 外観 "red"
"r"
[1 0 0]
"#FF0000"
"green"
"g"
[0 1 0]
"#00FF00"
"blue"
"b"
[0 0 1]
"#0000FF"
"cyan"
"c"
[0 1 1]
"#00FFFF"
"magenta"
"m"
[1 0 1]
"#FF00FF"
"yellow"
"y"
[1 1 0]
"#FFFF00"
"black"
"k"
[0 0 0]
"#000000"
"white"
"w"
[1 1 1]
"#FFFFFF"
次の表に、ライト テーマとダーク テーマでのプロットの既定のカラー パレットを示します。
パレット パレットの色 "gem"
— ライト テーマの既定値R2025a より前: ほとんどのプロットで、これらの色が既定で使用されます。
"glow"
— ダーク テーマの既定値orderedcolors
関数とrgb2hex
関数を使用すると、これらのパレットの RGB 3 成分および 16 進数カラー コードを取得できます。たとえば、"gem"
パレットの RGB 3 成分を取得し、16 進数カラー コードに変換します。RGB = orderedcolors("gem"); H = rgb2hex(RGB);
R2023b より前:
RGB = get(groot,"FactoryAxesColorOrder")
を使用して、RGB 3 成分を取得します。R2024a より前:
H = compose("#%02X%02X%02X",round(RGB*255))
を使用して、16 進数カラー コードを取得します。
例: plot(G,'EdgeColor','r')
は赤のエッジをもつグラフ プロットを作成します。
エッジのラベル。'EdgeLabel'
と、数値ベクトル、文字ベクトルの cell 配列、string 配列のいずれかで構成されるコンマ区切りのペアとして指定します。EdgeLabel
の長さはグラフのエッジ数と等しくなければなりません。既定では、EdgeLabel
は空の cell 配列です (エッジのラベルは表示されない)。
例: {'A', 'B', 'C'}
例: [1 2 3]
例: plot(G,'EdgeLabel',G.Edges.Weight)
はグラフ エッジにその重みのラベルを付けます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| cell
| string
グラフのレイアウト メソッド。'Layout'
と、次の表のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。この表には、各レイアウト メソッドをさらに調整するために使用できる名前と値のペアも示します。レイアウト固有の名前と値のペアの詳細については、layout
のリファレンス ページを参照してください。
オプション | 説明 | レイアウト固有の名前と値のペア |
---|---|---|
'auto' (既定) | グラフのサイズと構造に基づいた、レイアウト メソッドの自動選択。 | — |
'circle' | 円形レイアウト。中心が原点、半径が 1 の円上にグラフ ノードを配置します。 |
|
'force' | 力指向レイアウト[1]。隣接ノード間に引力、離れたノード間に反発力を使用します。 |
|
'layered' | ノードの階層型レイアウト [2]、[3]、[4]。グラフ ノードを一連の層に配置し、階層構造を表します。既定では、階層は下に進みます (有向非循環グラフの矢印が下を向く)。 |
|
'subspace' | ノードの部分空間埋め込みレイアウト[5]。グラフ ノードを高次の埋め込み部分空間にプロットし、その位置を 2 次元に投影します。既定では、部分空間の次元は 100 とノードの合計値のうち小さい値になります。 |
|
'force3' | 3 次元力指向レイアウト。 |
|
'subspace3' | 3 次元部分空間を埋め込んだレイアウト。 |
|
例: plot(G,'Layout','force3','Iterations',10)
例: plot(G,'Layout','subspace','Dimension',50)
例: plot(G,'Layout','layered')
ライン スタイル。'LineStyle'
と次の表のライン スタイルのいずれかで構成されるコンマ区切りのペア、またはそのような値の cell 配列または string ベクトルとして指定します。エッジごとに異なるライン スタイルを使用するには、文字ベクトルの cell 配列または string ベクトルを指定します。
文字 | ライン スタイル | 結果として得られる線 |
---|---|---|
'-' | 実線 |
|
'--' | 破線 |
|
':' | 点線 |
|
'-.' | 一点鎖線 |
|
'none' | ラインなし | ラインなし |
エッジのライン幅。'LineWidth'
とポイント単位の正の値で構成されるコンマ区切りのペア、またはそのような値のベクトルとして指定します。グラフのエッジごとに異なるライン幅を使用するには、ベクトルを指定します。
例: 0.75
ノード マーカー記号。'Marker'
と次の表の文字ベクトルのいずれかで構成されるコンマ区切りのペア、またはそのような値の cell 配列または string ベクトルとして指定します。既定では、グラフ ノードに円マーカーを使用します。ノードごとに異なるマーカーを使用するには、文字ベクトルの cell 配列、または string ベクトルを指定します。
マーカー | 説明 | 結果のマーカー |
---|---|---|
"o" | 円 |
|
"+" | プラス記号 |
|
"*" | アスタリスク |
|
"." | 点 |
|
"x" | 十字 |
|
"_" | 水平線 |
|
"|" | 垂直線 |
|
"square" | 正方形 |
|
"diamond" | 菱形 |
|
"^" | 上向き三角形 |
|
"v" | 下向き三角形 |
|
">" | 右向き三角形 |
|
"<" | 左向き三角形 |
|
"pentagram" | 星形五角形 |
|
"hexagram" | 星形六角形 |
|
"none" | マーカーなし | 該当なし |
例: '+'
例: 'diamond'
ノードのマーカー サイズ。'MarkerSize'
とポイント単位の正の値で構成されるコンマ区切りのペア、またはそのような値のベクトルとして指定します。グラフのノードごとに異なるマーカー サイズを使用するには、ベクトルを指定します。MarkerSize
の既定値は、ノード数が 100 以下のグラフでは 4、ノード数が 100 を超えるグラフでは 2
です。
例: 10
ノード マーカーの色データ。'NodeCData'
と、グラフ内のノード数に等しい長さをもつベクトルで構成されるコンマ区切りのペアとして指定します。NodeCData
の値は現在のカラーマップの色に線形にマッピングされ、その結果、プロットしたグラフの各ノードが異なる色になります。
ノードの色。'NodeColor'
と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。
'none'
— ノードは描画されません。'flat'
— 各ノードの色はNodeCData
の値によって決まります。行列 — 各行はそれぞれ 1 つのノードの色を表す RGB 3 成分です。この行列のサイズは
numnodes(G)
行3
列です。RGB 3 成分、16 進数カラー コードまたは色名 — 指定した色がノードで使用されます。
RGB 3 成分および 16 進数カラー コードは、カスタム色を指定するのに役立ちます。
RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は
[0,1]
の範囲でなければなりません。たとえば[0.4 0.6 0.7]
のようになります。16 進数カラー コードは、ハッシュ記号 (
#
) で始まり、3 桁または 6 桁の0
からF
までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。この値は大文字と小文字を区別しません。したがって、カラー コード"#FF8800"
、"#ff8800"
、"#F80"
、および"#f80"
は等価です。
あるいは、名前を使用して一部の一般的な色を指定できます。次の表に、名前の付いた色オプション、等価の RGB 3 成分、および 16 進数カラー コードを示します。
色名 省略名 RGB 3 成分 16 進数カラー コード 外観 "red"
"r"
[1 0 0]
"#FF0000"
"green"
"g"
[0 1 0]
"#00FF00"
"blue"
"b"
[0 0 1]
"#0000FF"
"cyan"
"c"
[0 1 1]
"#00FFFF"
"magenta"
"m"
[1 0 1]
"#FF00FF"
"yellow"
"y"
[1 1 0]
"#FFFF00"
"black"
"k"
[0 0 0]
"#000000"
"white"
"w"
[1 1 1]
"#FFFFFF"
次の表に、ライト テーマとダーク テーマでのプロットの既定のカラー パレットを示します。
パレット パレットの色 "gem"
— ライト テーマの既定値R2025a より前: ほとんどのプロットで、これらの色が既定で使用されます。
"glow"
— ダーク テーマの既定値orderedcolors
関数とrgb2hex
関数を使用すると、これらのパレットの RGB 3 成分および 16 進数カラー コードを取得できます。たとえば、"gem"
パレットの RGB 3 成分を取得し、16 進数カラー コードに変換します。RGB = orderedcolors("gem"); H = rgb2hex(RGB);
R2023b より前:
RGB = get(groot,"FactoryAxesColorOrder")
を使用して、RGB 3 成分を取得します。R2024a より前:
H = compose("#%02X%02X%02X",round(RGB*255))
を使用して、16 進数カラー コードを取得します。
例: plot(G,'NodeColor','k')
は黒のノードをもつグラフ プロットを作成します。
ノードのラベル。'NodeLabel'
と、数値ベクトル、文字ベクトルの cell 配列、string 配列のいずれかで構成されるコンマ区切りのペアとして指定します。NodeLabel
の長さはグラフのノード数と等しくなければなりません。既定では、NodeLabel
はグラフ ノードのノード ID を含む cell 配列です。
ノードに名前がない場合 (つまり
G.Nodes
に変数Name
が含まれない)、ノードのラベルは cell 配列に含まれる値unique(G.Edges.EndNodes)
になります。名前付きノードの場合、ノードのラベルは
G.Nodes.Name'
になります。
例: {'A', 'B', 'C'}
例: [1 2 3]
例: plot(G,'NodeLabel',G.Nodes.Name)
はノードにその名前のラベルを付けます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| cell
| string
メモ
XData
と YData
は、各ノードが有効な (x,y) 座標をもつように共に指定しなければなりません。オプションで、3 次元座標の ZData
も指定できます。
ノードの x 座標。'XData'
と、グラフ内のノード数に等しい長さをもつベクトルで構成されるコンマ区切りのペアとして指定します。
メモ
XData
と YData
は、各ノードが有効な (x,y) 座標をもつように共に指定しなければなりません。オプションで、3 次元座標の ZData
も指定できます。
ノードの y 座標。'YData'
と、グラフ内のノード数に等しい長さをもつベクトルで構成されるコンマ区切りのペアとして指定します。
メモ
XData
と YData
は、各ノードが有効な (x,y) 座標をもつように共に指定しなければなりません。オプションで、3 次元座標の ZData
も指定できます。
ノードの z 座標。'ZData'
と、グラフ内のノード数に等しい長さをもつベクトルで構成されるコンマ区切りのペアとして指定します。
参照
[1] Fruchterman, T., and E. Reingold. “Graph Drawing by Force-directed Placement.” Software — Practice & Experience. Vol. 21 (11), 1991, pp. 1129–1164.
[2] Gansner, E., E. Koutsofios, S. North, and K.-P Vo. “A Technique for Drawing Directed Graphs.” IEEE Transactions on Software Engineering. Vol.19, 1993, pp. 214–230.
[3] Barth, W., M. Juenger, and P. Mutzel. “Simple and Efficient Bilayer Cross Counting.” Journal of Graph Algorithms and Applications. Vol.8 (2), 2004, pp. 179–194.
[4] Brandes, U., and B. Koepf. “Fast and Simple Horizontal Coordinate Assignment.” LNCS. Vol. 2265, 2002, pp. 31–44.
[5] Y. Koren. “Drawing Graphs by Eigenvectors: Theory and Practice.” Computers and Mathematics with Applications. Vol. 49, 2005, pp. 1867–1888.
バージョン履歴
R2015b で導入単純グラフのプロットにある自己ループが、葉あるいは涙のような形になりました。従来のリリースでは、自己ループが円で表示されました。
参考
関数
オブジェクト
プロパティ
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)