Graph plot
plot(___,
uses
additional options specified by one or more Name-Value pair arguments
using any of the input argument combinations in previous syntaxes.
For example, Name,Value
)plot(G,'Layout','circle')
plots a
circular ring layout of the graph, and plot(G,'XData',X,'YData',Y,'ZData',Z)
specifies
the (X,Y,Z)
coordinates of the graph nodes.
plot(
plots
into the axes specified by ax
,___)ax
instead of into the
current axes (gca
). The option, ax
,
can precede any of the input argument combinations in previous syntaxes.
Create a graph using a sparse adjacency matrix, and then plot the graph.
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)
Create and plot a graph. Specify the LineSpec
input to change the Marker
, NodeColor
, and/or LineStyle
of the graph plot.
G = graph(bucky); plot(G,'-.dr','NodeLabel',{})
Create a directed graph, and then plot the graph using the 'force'
layout.
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')
Create a weighted graph.
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]
Plot the graph using custom coordinates for the nodes. The x-coordinates are specified using XData
, the y-coordinates are specified using YData
, and the z-coordinates are specified using ZData
. Use EdgeLabel
to label the edges using the edge weights.
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 the graph from above.
view(2)
Create a weighted graph.
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]
Plot the graph, labeling the edges with their weights, and making the width of the edges proportional to their weights. Use a rescaled version of the edge weights to determine the width of each edge, such that the widest line has a width of 5.
LWidths = 5*G.Edges.Weight/max(G.Edges.Weight); plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',LWidths)
Create a directed graph, and then plot the graph with custom labels for the nodes and edges.
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)
Create and plot a directed graph. Specify an output argument to plot
to return a handle to the GraphPlot
object.
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 0.4470 0.7410] MarkerSize: 4 Marker: 'o' EdgeColor: [0 0.4470 0.7410] LineWidth: 0.5000 LineStyle: '-' NodeLabel: {1×12 cell} 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] Use GET to show all properties
Change the color and marker of the nodes.
p.Marker = 's'; p.NodeColor = 'r';
Increase the size of the nodes.
p.MarkerSize = 7;
Change the line style of the edges.
p.LineStyle = '--';
Change the x and y coordinates of the nodes.
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];
G
— Input graphgraph
object | digraph
objectLineSpec
— Line style, marker symbol, and colorLine style, marker symbol, and color, specified as a character vector of symbols. The symbols can appear in any order, and you can omit one or more of the characteristics. If you omit the line style, then the plot shows solid lines for the graph edges.
Example: '--or'
uses red circle node markers
and red dashed lines as edges.
Example: 'r*'
uses
red asterisk node markers and solid red lines as edges.
Symbol | Line Style |
---|---|
- | Solid line (default) |
-- | Dashed line |
: | Dotted line |
-. | Dash-dot line |
Symbol | Marker |
---|---|
o | Circle |
+ | Plus sign |
* | Asterisk |
. | Point |
x | Cross |
s | Square |
d | Diamond |
^ | Upward-pointing triangle |
v | Downward-pointing triangle |
> | Right-pointing triangle |
< | Left-pointing triangle |
p | Pentagram |
h | Hexagram |
Symbol | Color |
---|---|
| yellow |
| magenta |
| cyan |
| red |
| green |
| blue |
| white |
| black |
ax
— Axes objectAxes object. If you do not specify an axes object, then plot
uses
the current axes (gca
).
Specify optional comma-separated pairs of Name,Value
arguments.
Name
is the argument
name and Value
is the corresponding
value. Name
must appear
inside single quotes (' '
).
You can specify several name and value pair
arguments in any order as Name1,Value1,...,NameN,ValueN
.
p = plot(G,'EdgeColor','r','NodeColor','k','LineStyle','--')
The graph properties listed here are only a subset. For a complete list, see GraphPlot Properties.
'ArrowSize'
— Arrow sizeNote:
|
Arrow size, specified as the comma-separated pair consisting
of 'ArrowSize'
and a positive value in point units.
The default value of ArrowSize
is 7
for
graphs with 100 or fewer nodes, and 4
for graphs
with more than 100 nodes.
Example: 15
'EdgeAlpha'
— Transparency of graph edges0.5
(default) | scalar value between 0
and 1
inclusiveTransparency of graph edges, specified as the comma-separated
pair consisting of 'EdgeAlpha'
and a scalar value
between 0
and 1
inclusive. A
value of 1
means fully opaque and 0
means
completely transparent (invisible).
Example: 0.25
'EdgeCData'
— Color data of edge linesColor data of edge lines, specified as the comma-separated pair
consisting of 'EdgeCData'
and a vector with length
equal to the number of edges in the graph. The values in EdgeCData
map
linearly to the colors in the current colormap, resulting in different
colors for each edge in the plotted graph.
'EdgeColor'
— Edge color[0 0.4470 0.7410]
(default) | RGB triplet or color name | 'flat'
| 'none'
Edge color, specified as the comma-separated pair consisting
of 'EdgeColor'
and one of these values:
'none'
— Edges are not drawn.
'flat'
— Color of each edge
depends on the value of EdgeCData
.
RGB triplet or a color name — Edges use the specified color.
An RGB triplet is a three-element row vector whose elements
specify the intensities of the red, green, and blue components of
the color. The intensities must be in the range [0,1]
;
for example, [0.4 0.6 0.7]
. This table lists the
long and short color name options and the equivalent RGB triplet values.
Long Name | Short Name | RGB Triplet |
---|---|---|
'yellow' | 'y' | [1 1 0] |
'magenta' | 'm' | [1 0 1] |
'cyan' | 'c' | [0 1 1] |
'red' | 'r' | [1 0 0] |
'green' | 'g' | [0 1 0] |
'blue' | 'b' | [0 0 1] |
'white' | 'w' | [1 1 1] |
'black' | 'k' | [0 0 0] |
Example: plot(G,'EdgeColor','r')
creates a
graph plot with red edges.
'EdgeLabel'
— Edge labels{}
(default) | vector | cell array of character vectorsEdge labels, specified as the comma-separated pair consisting
of 'EdgeLabel'
and a numeric vector or cell array
of character vectors. The length of EdgeLabel
must
be equal to the number of edges in the graph. By default EdgeLabel
is
an empty cell array (no edge labels are displayed).
Example: {'A', 'B', 'C'}
Example: [1 2 3]
Example: plot(G,'EdgeLabel',G.Edges.Weight)
labels
the graph edges with their weights.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| cell
'Layout'
— Graph layout method'auto'
(default) | 'circle'
| 'force'
| 'layered'
| 'subspace'
| 'force3'
| 'subspace3'
Graph layout method, specified as the comma-separated pair consisting
of 'Layout'
and one of the options in the table.
The table also lists compatible name-value pairs to further refine
each layout method. See the layout
reference page for more information
on these layout-specific name-value pairs.
Option | Description | Name-Value Pairs |
---|---|---|
'auto' (default) | Automatic choice of layout method based on the size and structure of the graph. | — |
'circle' | Circular layout. Places the graph nodes on a circle centered at the origin with radius 1. | — |
'force' | Force-directed layout [1]. Uses attractive forces between adjacent nodes and repulsive forces between distant nodes. |
|
'layered' | Layered node layout [2], [3], [4]. Places the graph nodes into a set of layers, revealing hierarchical structure. By default the layers progress downwards (the arrows of a directed acyclic graph point down). |
|
'subspace' | Subspace embedding node layout [5]. Plots the graph nodes in a high-dimensional embedded subspace, and then projects the positions back into 2-D. By default the subspace dimension is either 100 or the total number of nodes, whichever is smaller. |
|
'force3' | 3-D force-directed layout. |
|
'subspace3' | 3-D subspace embedding layout. |
|
Example: plot(G,'Layout','force3','Iterations',10)
Example: plot(G,'Layout','subspace','Dimension',50)
Example: plot(G,'Layout','layered')
'LineStyle'
— Line style'-'
(default) | '--'
| ':'
| '-.'
| 'none'
Line style, specified as the comma-separated pair consisting
of 'LineStyle'
and one of the line styles listed
in this table.
Character(s) | Line Style | Resulting Line |
---|---|---|
'-' | Solid line |
|
'--' | Dashed line |
|
':' | Dotted line |
|
'-.' | Dash-dotted line |
|
'none' | No line | No line |
'LineWidth'
— Edge line width0.5
(default) | positive valueEdge line width, specified as the comma-separated pair consisting
of 'LineWidth'
and a positive value in point units.
Example: 0.75
'Marker'
— Node marker symbol'o'
(default) | character vectorNode marker symbol, specified as the comma-separated pair consisting
of 'Marker'
and one of the character vectors listed
in this table. The default is to use circular markers for the graph
nodes.
Value | Description |
---|---|
'o' | Circle |
'+' | Plus sign |
'*' | Asterisk |
'.' | Point |
'x' | Cross |
'square' or 's' | Square |
'diamond' or 'd' | Diamond |
'^' | Upward-pointing triangle |
'v' | Downward-pointing triangle |
'>' | Right-pointing triangle |
'<' | Left-pointing triangle |
'pentagram' or 'p' | Five-pointed star (pentagram) |
'hexagram' or 'h' | Six-pointed star (hexagram) |
'none' | No markers |
Example: '+'
Example: 'diamond'
'MarkerSize'
— Node marker sizeNode marker size, specified as the comma-separated pair consisting
of 'MarkerSize'
and a positive value in point units.
The default value of MarkerSize
is 4 for graphs
with 100 or fewer nodes, and 2
for graphs with
more than 100 nodes.
Example: 10
'NodeCData'
— Color data of node markersColor data of node markers, specified as the comma-separated
pair consisting of 'NodeCData'
and a vector with
length equal to the number of nodes in the graph. The values in NodeCData
map
linearly to the colors in the current colormap, resulting in different
colors for each node in the plotted graph.
'NodeColor'
— Node color[0 0.4470 0.7410]
(default) | RGB triplet or color name | 'flat'
| 'none'
Node color, specified as the comma-separated pair consisting
of 'NodeColor'
and one of these values:
'none'
— Nodes are not drawn.
'flat'
— Color of each node
depends on the value of NodeCData
.
RGB triplet or a color name — Nodes use the specified color.
An RGB triplet is a three-element row vector whose elements
specify the intensities of the red, green, and blue components of
the color. The intensities must be in the range [0,1]
;
for example, [0.4 0.6 0.7]
. This table lists the
long and short color name options and the equivalent RGB triplet values.
Long Name | Short Name | RGB Triplet |
---|---|---|
'yellow' | 'y' | [1 1 0] |
'magenta' | 'm' | [1 0 1] |
'cyan' | 'c' | [0 1 1] |
'red' | 'r' | [1 0 0] |
'green' | 'g' | [0 1 0] |
'blue' | 'b' | [0 0 1] |
'white' | 'w' | [1 1 1] |
'black' | 'k' | [0 0 0] |
Example: plot(G,'NodeColor','k')
creates a
graph plot with black nodes.
'NodeLabel'
— Node labelsNode labels, specified as the comma-separated pair consisting
of 'NodeLabel'
and a numeric vector or cell array
of character vectors. The length of NodeLabel
must
be equal to the number of nodes in the graph. By default NodeLabel
is
a cell array containing the node IDs for the graph nodes:
For nodes without names (that is, G.Nodes
does
not contain a Name
variable), the node labels are
the values unique(G.Edges.EndNodes)
contained in
a cell array.
For named nodes, the node labels are G.Nodes.Name'
.
Example: {'A', 'B', 'C'}
Example: [1 2 3]
Example: plot(G,'NodeLabel',G.Nodes.Name)
labels
the nodes with their names.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| cell
'XData'
— x-coordinate of nodesNote:
|
x-coordinate of nodes, specified as the comma-separated pair
consisting of 'XData'
and a vector with length
equal to the number of nodes in the graph.
'YData'
— y-coordinate of nodesNote:
|
y-coordinate of nodes, specified as the comma-separated pair
consisting of 'YData'
and a vector with length
equal to the number of nodes in the graph.
'ZData'
— z-coordinate of nodesNote:
|
z-coordinate of nodes, specified as the comma-separated pair
consisting of 'ZData'
and a vector with length
equal to the number of nodes in the graph.
h
— Graph plotGraphPlot
objectGraph plot, returned as an object. For more information, see GraphPlot.
[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.