MathWorks Machine Translation
The automated translation of this page is provided by a general purpose third party translator tool.
MathWorks does not warrant, and disclaims all liability for, the accuracy, suitability, or fitness for purpose of the translation.
Plot graph nodes and edges
plot(G)
plot(G,LineSpec)
plot(___,Name,Value)
plot(ax,___)
h = plot(___)
plot(___,
uses
additional options specified by one or more NameValue 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: [130x2 table] Nodes: [75x0 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: [19x1 table] Nodes: [20x0 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: [20x2 table] Nodes: [11x0 table]
Plot the graph using custom coordinates for the nodes. The xcoordinates are specified using XData
, the ycoordinates are specified using YData
, and the zcoordinates 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: [11x2 table] Nodes: [7x0 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. 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: [12x1 table] Nodes: [8x0 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: [18x1 table] Nodes: [12x0 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: {1x12 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] 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];
LineSpec
— 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 
.  Dashdot line 
Symbol  Marker 

o  Circle 
+  Plus sign 
*  Asterisk 
.  Point 
x  Cross 
s  Square 
d  Diamond 
^  Upwardpointing triangle 
v  Downwardpointing triangle 
>  Rightpointing triangle 
<  Leftpointing 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
commaseparated 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 sizeArrowSize
only affects the display of directed
graphs created using digraph
.
Arrow size, specified as the commaseparated 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 commaseparated 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 commaseparated 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 commaseparated 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 threeelement 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]
.
Alternatively, you can specify some common colors by name. This table lists the long and short
color name options and the equivalent RGB triplet values.
Option  Description  Equivalent RGB Triplet 

'red' or 'r'  Red  [1 0 0] 
'green' or 'g'  Green  [0 1 0] 
'blue' or 'b'  Blue  [0 0 1] 
'yellow' or 'y'  Yellow  [1 1 0] 
'magenta' or 'm'  Magenta  [1 0 1] 
'cyan' or 'c'  Cyan  [0 1 1] 
'white' or 'w'  White  [1 1 1] 
'black' or 'k'  Black  [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 commaseparated 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 commaseparated pair consisting
of 'Layout'
and one of the options in the table. The
table also lists compatible namevalue pairs to further refine each
layout method. See the layout
reference page for
more information on these layoutspecific namevalue pairs.
Option  Description  NameValue 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' 
Forcedirected 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 highdimensional embedded subspace, and then projects the positions back into 2D. By default the subspace dimension is either 100 or the total number of nodes, whichever is smaller. 

'force3'  3D forcedirected layout. 

'subspace3'  3D 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 commaseparated 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 

'.'  Dashdotted line 

'none'  No line  No line 
'LineWidth'
— Edge line width0.5
(default)  positive valueEdge line width, specified as the commaseparated 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 commaseparated 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 
'^'  Upwardpointing triangle 
'v'  Downwardpointing triangle 
'>'  Rightpointing triangle 
'<'  Leftpointing triangle 
'pentagram' or 'p'  Fivepointed star (pentagram) 
'hexagram' or 'h'  Sixpointed star (hexagram) 
'none'  No markers 
Example: '+'
Example: 'diamond'
'MarkerSize'
— Node marker sizeNode marker size, specified as the commaseparated 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 commaseparated 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 commaseparated 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 threeelement 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]
.
Alternatively, you can specify some common colors by name. This table lists the long and short
color name options and the equivalent RGB triplet values.
Option  Description  Equivalent RGB Triplet 

'red' or 'r'  Red  [1 0 0] 
'green' or 'g'  Green  [0 1 0] 
'blue' or 'b'  Blue  [0 0 1] 
'yellow' or 'y'  Yellow  [1 1 0] 
'magenta' or 'm'  Magenta  [1 0 1] 
'cyan' or 'c'  Cyan  [0 1 1] 
'white' or 'w'  White  [1 1 1] 
'black' or 'k'  Black  [0 0 0] 
Example: plot(G,'NodeColor','k')
creates a graph
plot with black nodes.
'NodeLabel'
— Node labelsNode labels, specified as the commaseparated 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'
— xcoordinate of nodesXData
and YData
must be
specified together so that each node has a valid
(x,y) coordinate.
Optionally, you can also specify ZData
for 3D
coordinates.
xcoordinate of nodes, specified as the commaseparated pair
consisting of 'XData'
and a vector with length equal
to the number of nodes in the graph.
'YData'
— ycoordinate of nodesXData
and YData
must be
specified together so that each node has a valid
(x,y) coordinate.
Optionally, you can also specify ZData
for 3D
coordinates.
ycoordinate of nodes, specified as the commaseparated pair
consisting of 'YData'
and a vector with length equal
to the number of nodes in the graph.
'ZData'
— zcoordinate of nodesXData
and YData
must be
specified together so that each node has a valid
(x,y) coordinate.
Optionally, you can also specify ZData
for 3D
coordinates.
zcoordinate of nodes, specified as the commaseparated 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 Forcedirected 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.
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.
You can also select a location from the following list: