highlight
Highlight nodes and edges in plotted graph
Description
highlight(
highlights the nodes and edges of graph H
,G
)G
by increasing their
node marker size and edge line width, respectively. G
must have
the same nodes and a subset of the edges of the underlying graph of
H
. If G
contains repeated edges, then they
are all highlighted. Isolated nodes with degree 0 are not highlighted.
highlight(___,
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
)highlight(H,nodes,'NodeColor','g')
highlights a subset of
nodes by changing their color to green, instead of increasing their marker
size.
Examples
Highlight Graph Nodes
Create and plot a graph. Return a handle to the GraphPlot
object, h.
s = 1; t = 2:6; G = graph(s,t); h = plot(G,'Layout','force')
h = 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' '2' '3' '4' '5' '6'} EdgeLabel: {} XData: [7.9523e-05 0.2529 -1.6071 -1.2461 1.7640 0.8361] YData: [-4.4138e-04 -1.7737 -0.7868 1.2875 -0.3073 1.5808] ZData: [0 0 0 0 0 0] Use GET to show all properties
Highlight nodes 1 and 3 by increasing their marker size.
highlight(h,[1 3])
Highlight nodes 1 and 3 by changing their color.
highlight(h,[1 3],'NodeColor','g')
Highlight Minimum Spanning Tree of Graph
Create and plot a graph. Return a handle to the GraphPlot
object, h
.
s = [1 1 1 1 1 1 2 3 4 5 6 7 7 7 7 8 9 10 11 8 6]; t = [2 3 4 5 6 7 3 4 5 6 2 8 9 10 11 10 10 11 8 1 11]; G = graph(s,t); h = plot(G)
h = 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' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11'} EdgeLabel: {} XData: [-0.2157 -0.5149 -0.3637 -1.1504 -1.4097 -0.7742 0.9685 0.4346 1.9173 1.0259 0.0823] YData: [-0.4806 -1.0307 -1.7531 -1.4460 -0.5843 0.0987 0.6570 0.5422 1.4401 1.4411 1.1157] ZData: [0 0 0 0 0 0 0 0 0 0 0] Use GET to show all properties
Calculate the minimum spanning tree of the graph. Highlight the minimum spanning tree subgraph in the plot by increasing the line width and changing the color of the edges in the tree.
[T,p] = minspantree(G); highlight(h,T,'EdgeColor','r','LineWidth',1.5)
Highlight Shortest Path
Create and plot a graph. Return a handle to the GraphPlot
object, h
.
n = 10; A = delsq(numgrid('L',n+2)); G = graph(A,'omitselfloops'); G.Edges.Weight = ones(numedges(G),1); h = plot(G);
Highlight the shortest path between nodes 74 and 21 by changing the color of the nodes and edges along the path to green.
path = shortestpath(G,74,21); highlight(h,path,'NodeColor','g','EdgeColor','g')
Highlight Node Neighbors
Create a graph representing a square grid with a side of 8 nodes. Plot the graph and return a handle to the GraphPlot
object, p
.
n = 8; A = delsq(numgrid('S',n+2)); G = graph(A,'omitselfloops'); p = plot(G);
Find the neighbors of node 36.
n36 = neighbors(G,36)
n36 = 4×1
28
35
37
44
Use highlight
to change the color of node 36 to green, and the color of its neighbors and their connecting edges to red.
highlight(p,36,'NodeColor',[0 0.75 0]) highlight(p,n36,'NodeColor','red') highlight(p,36,n36,'EdgeColor','red')
Highlight Path of Maximum Flow
Create and plot a directed graph. Return a handle to the GraphPlot
object, h
.
G = digraph(bucky); h = plot(G);
Compute the maximum flow between nodes 1 and 56. Specify two outputs to maxflow
to return a directed graph of the nonzero flows, GF
.
[mf,GF] = maxflow(G,1,56)
mf = 3
GF = digraph with properties: Edges: [28x2 table] Nodes: [60x0 table]
Use highlight
to change the color of the edges that contain nonzero flow values. Also change the color of source node 1 and target node 56 to green.
highlight(h,GF,'EdgeColor',[0.9 0.3 0.1],'NodeColor',[0.9 0.3 0.1]) highlight(h,[1 56],'NodeColor','g')
Shortest Path in Multigraph
Plot the shortest path between two nodes in a multigraph and highlight the specific edges that are traversed.
Create a weighted multigraph with five nodes. Several pairs of nodes have more than one edge between them. Plot the graph for reference.
G = graph([1 1 1 1 1 2 2 3 3 3 4 4],[2 2 2 2 2 3 4 4 5 5 5 2],[2 4 6 8 10 5 3 1 5 6 8 9]);
p = plot(G,'EdgeLabel',G.Edges.Weight);
Find the shortest path between node 1 and node 5. Since several of the node pairs have more than one edge between them, specify three outputs to shortestpath
to return the specific edges that the shortest path traverses.
[P,d,edgepath] = shortestpath(G,1,5)
P = 1×5
1 2 4 3 5
d = 11
edgepath = 1×4
1 7 9 10
The results indicate that the shortest path has a total length of 11 and follows the edges given by G.Edges(edgepath,:)
.
G.Edges(edgepath,:)
ans=4×2 table
EndNodes Weight
________ ______
1 2 2
2 4 3
3 4 1
3 5 5
Highlight this edge path by using the highlight
function with the 'Edges'
name-value pair to specify the indices of the edges traversed.
highlight(p,'Edges',edgepath)
Input Arguments
nodeIDs
— Nodes to highlight
logical vector | node indices | node names
Nodes to highlight, specified as a logical vector, or as one or more node
indices or node names. If nodeIDs
is a logical vector,
then it must have length numnodes(G)
.
This table shows the different ways to refer to one or more nodes either by their numeric node indices or by their node names.
Form | Single Node | Multiple Nodes |
---|---|---|
Node index | Scalar Example: | Vector Example: |
Node name | Character vector Example: | Cell array of character vectors Example: |
String scalar Example: | String array Example: |
nodeIDs
must not specify node names that conflict with
any of the optional parameter names for highlight
, such
as 'Edges'
or 'EdgeColor'
. Use
findnode
to instead pass in the node index for these
cases.
G
— Graph to highlight
graph
object | digraph
object
Graph to highlight, specified as a graph
or
digraph
object. G
must have the
same nodes and a subset of the edges of the underlying graph of
H
. Isolated nodes with degree 0
are not highlighted.
s,t
— Node pairs (as separate arguments)
node indices | node names
Node pairs, specified as separate arguments of node indices or node names.
Similarly located elements in s
and t
specify the source and target nodes for edges in the graph.
s
and t
must not specify node names
that conflict with any of the optional parameter names for
highlight
, such as 'Edges'
or
'EdgeColor'
. Use findnode
to
instead pass in the node index for these cases.
Example: highlight(H,[1 2],[3 3])
highlights the graph
edges (1,3)
and (2,3)
.
Example: highlight(H,'a','b')
highlights all edges from
'a'
to 'b'
.
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: highlight(H,nodes,'NodeColor','y')
Edges
— Edges to highlight
scalar | vector
Edges to highlight, specified as the comma-separated pair consisting
of 'Edges'
and a scalar edge index, vector of edge
indices, or logical vector. Use this name-value pair to highlight a
specific edge between nodes when multiple edges exist between the same
two nodes.
The value of this name-value pair can be the third output from
shortestpath
or
shortestpathtree
, such as
[path,d,edgepath] = shortestpath(…)
.
Example: highlight(p,'Edges',edgepath)
EdgeColor
— Edge color
[0 0.4470 0.7410]
(default) | RGB triplet | hexadecimal color code | color name
Edge color, specified as the comma-separated pair consisting of
'EdgeColor'
and an RGB triplet, hexadecimal color
code, or color name.
RGB triplets and hexadecimal color codes are useful for specifying custom colors.
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]
.A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (
#
) followed by three or six hexadecimal digits, which can range from0
toF
. The values are not case sensitive. Thus, the color codes"#FF8800"
,"#ff8800"
,"#F80"
, and"#f80"
are equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name Short Name RGB Triplet Hexadecimal Color Code Appearance "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"
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB® uses in many types of plots.
RGB Triplet Hexadecimal Color Code Appearance [0 0.4470 0.7410]
"#0072BD"
[0.8500 0.3250 0.0980]
"#D95319"
[0.9290 0.6940 0.1250]
"#EDB120"
[0.4940 0.1840 0.5560]
"#7E2F8E"
[0.4660 0.6740 0.1880]
"#77AC30"
[0.3010 0.7450 0.9330]
"#4DBEEE"
[0.6350 0.0780 0.1840]
"#A2142F"
Example: plot(G,'EdgeColor','r')
creates a graph
plot with red edges.
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 width
0.5
(default) | positive value
Edge line width, specified as the comma-separated pair consisting of
'LineWidth'
and a positive value in point
units.
Example: 0.75
ArrowSize
— Arrow size
positive value
Arrow size, specified as 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.
ArrowSize
is used only for directed graphs.
Example: 15
ArrowPosition
— Position of arrow along edge
0.5
(default) | scalar
Position of arrow along edge, specified as a value in [0
1]
. A value near 0 places arrows closer to the source
node, and a value near 1 places arrows closer to the target node. The
default value is 0.5
so that the arrows are halfway
between the source and target nodes.
ArrowPosition
is used only for directed
graphs.
NodeColor
— Node color
[0 0.4470 0.7410]
(default) | RGB triplet | hexadecimal color code | color name
Node color, specified as the comma-separated pair consisting of
'NodeColor'
and an RGB triplet, hexadecimal color
code, or color name.
RGB triplets and hexadecimal color codes are useful for specifying custom colors.
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]
.A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (
#
) followed by three or six hexadecimal digits, which can range from0
toF
. The values are not case sensitive. Thus, the color codes"#FF8800"
,"#ff8800"
,"#F80"
, and"#f80"
are equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name Short Name RGB Triplet Hexadecimal Color Code Appearance "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"
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.
RGB Triplet Hexadecimal Color Code Appearance [0 0.4470 0.7410]
"#0072BD"
[0.8500 0.3250 0.0980]
"#D95319"
[0.9290 0.6940 0.1250]
"#EDB120"
[0.4940 0.1840 0.5560]
"#7E2F8E"
[0.4660 0.6740 0.1880]
"#77AC30"
[0.3010 0.7450 0.9330]
"#4DBEEE"
[0.6350 0.0780 0.1840]
"#A2142F"
Example: plot(G,'NodeColor','k')
creates a graph
plot with black nodes.
Marker
— Node marker symbol
'o'
(default) | character vector
Node 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.
Marker | Description | Resulting Marker |
---|---|---|
"o" | Circle |
|
"+" | Plus sign |
|
"*" | Asterisk |
|
"." | Point |
|
"x" | Cross |
|
"_" | Horizontal line |
|
"|" | Vertical line |
|
"square" | Square |
|
"diamond" | Diamond |
|
"^" | Upward-pointing triangle |
|
"v" | Downward-pointing triangle |
|
">" | Right-pointing triangle |
|
"<" | Left-pointing triangle |
|
"pentagram" | Pentagram |
|
"hexagram" | Hexagram |
|
"none" | No markers | Not applicable |
Example: '+'
Example: 'diamond'
MarkerSize
— Node marker size
positive value
Node marker size, specified as the comma-separated pair consisting of
'MarkerSize'
and a positive value in point units.
The default marker size is 4
for graphs with 100 or
fewer nodes, and 2
for graphs with more than 100
nodes.
Example: 10
NodeLabelColor
— Color of node labels
[0 0 0]
(default) | RGB triplet | hexadecimal color code | color name
Node label color, specified as an RGB triplet, hexadecimal color code, or color name.
RGB triplets and hexadecimal color codes are useful for specifying custom colors.
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]
.A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (
#
) followed by three or six hexadecimal digits, which can range from0
toF
. The values are not case sensitive. Thus, the color codes"#FF8800"
,"#ff8800"
,"#F80"
, and"#f80"
are equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name | Short Name | RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|---|---|
"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" |
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.
RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
Example: plot(G,'NodeLabel',C,'NodeLabelColor','m')
creates a graph plot with magenta node labels.
EdgeLabelColor
— Color of edge labels
[0 0 0]
(default) | RGB triplet | hexadecimal color code | color name
Edge label color, specified as an RGB triplet, hexadecimal color code, or color name.
RGB triplets and hexadecimal color codes are useful for specifying custom colors.
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]
.A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (
#
) followed by three or six hexadecimal digits, which can range from0
toF
. The values are not case sensitive. Thus, the color codes"#FF8800"
,"#ff8800"
,"#F80"
, and"#f80"
are equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name | Short Name | RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|---|---|
"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" |
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.
RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
Example: plot(G,'EdgeLabel',C,'EdgeLabelColor','m')
creates a graph plot with magenta edge labels.
NodeFontName
— Font name for node labels
'Helvetica'
(default) | supported font name | 'FixedWidth'
Font name for node labels, specified as a supported font name or
'FixedWidth'
. To display and print properly, you
must choose a font that your system supports. The default font depends
on the specific operating system and locale. For example, Windows® and Linux® systems in English localization use the Helvetica font by
default.
To use a fixed-width font that looks good in any locale, specify
'FixedWidth'
.
Example: 'Cambria'
NodeFontSize
— Font size for node labels
positive number
Font size for node labels, specified as a positive number. The default font size depends on the specific operating system and locale.
NodeFontWeight
— Thickness of text in node labels
'normal'
(default) | 'bold'
Thickness of text in node labels, specified as
'normal'
or 'bold'
:
'bold'
— Thicker character outlines than normal'normal'
— Normal weight as defined by the particular font
Not all fonts have a bold font weight.
Data Types: cell
| char
| string
NodeFontAngle
— Character slant of text in node labels
'normal'
(default) | 'italic'
Character slant of text in node labels, specified as
'normal'
or 'italic'
:
'italic'
— Slanted characters'normal'
— No character slant
Not all fonts have both font styles.
Data Types: cell
| char
| string
EdgeFontName
— Font name for edge labels
'Helvetica'
(default) | supported font name | 'FixedWidth'
Font name for edge labels, specified as a supported font name or
'FixedWidth'
. To display and print properly, you
must choose a font that your system supports. The default font depends
on the specific operating system and locale. For example, Windows and Linux systems in English localization use the Helvetica font by
default.
To use a fixed-width font that looks good in any locale, specify
'FixedWidth'
.
Example: 'Cambria'
EdgeFontSize
— Font size for edge labels
positive number
Font size for edge labels, specified as a positive number. The default font size depends on the specific operating system and locale.
EdgeFontWeight
— Thickness of text in edge labels
'normal'
(default) | 'bold'
Thickness of text in edge labels, specified as
'normal'
or 'bold'
:
'bold'
— Thicker character outlines than normal'normal'
— Normal weight as defined by the particular font
Not all fonts have a bold font weight.
Data Types: cell
| char
| string
EdgeFontAngle
— Character slant of text in edge labels
'normal'
(default) | 'italic'
Character slant of text in edge labels, specified as
'normal'
or 'italic'
:
'italic'
— Slanted characters'normal'
— No character slant
Not all fonts have both font styles.
Data Types: cell
| char
| string
Version History
Introduced in 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.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)