DoubleEndArrow
Double-ended arrow annotation on figure
Description
Draw a double-ended arrow annotation anywhere on a figure. Set properties of a
DoubleEndArrow object to control its appearance.
Creation
Create a double-ended arrow annotation on a figure using the annotation function.
annotation("doublearrow")Alternatively, create a double-ended arrow annotation by clicking the figure and selecting Double Arrow in the gallery on the Figure tab.
Properties
Color and Styling
Arrow color, specified as an RGB triplet, hexadecimal color code, a color name, or
a short name. The default RGB triplet value of [0 0 0] corresponds
to black.
For a custom color, specify an RGB triplet or a hexadecimal color code.
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 string scalar or character vector that starts with a hash symbol (
#) followed by three or six hexadecimal digits, which can range from0toF. The values are not case sensitive. Therefore, 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 the 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" |
|
"none" | Not applicable | Not applicable | Not applicable | No color |
This table lists the default color palettes for plots in the light and dark themes.
| Palette | Palette Colors |
|---|---|
Before R2025a: Most plots use these colors by default. |
|
|
|
You can get the RGB triplets and hexadecimal color codes for these palettes using the orderedcolors and rgb2hex functions. For example, get the RGB triplets for the "gem" palette and convert them to hexadecimal color codes.
RGB = orderedcolors("gem");
H = rgb2hex(RGB);Before R2023b: Get the RGB triplets using RGB =
get(groot,"FactoryAxesColorOrder").
Before R2024a: Get the hexadecimal color codes using H =
compose("#%02X%02X%02X",round(RGB*255)).
Example: "blue"
Example: [0 0 1]
Example: "#0000FF"
Style of arrow stem, specified as one of the line styles listed in this table.
| Line Style | Description | Resulting Line |
|---|---|---|
"-" | Solid line |
|
"--" | Dashed line |
|
":" | Dotted line |
|
"-." | Dash-dotted line |
|
"none" | No line | No line |
Width of arrow stem, specified as a positive value in point units. One point equals 1/72 inch.
Example: 0.75
Style of the first arrowhead, specified as one of the head style options in this
table. The first arrowhead is located at the point
(x_begin,y_begin) determined by the X and
Y properties.
| Style | Result | Style | Result |
|---|---|---|---|
"plain" |
| "fourstar" |
|
"ellipse" |
| "rectangle" |
|
"vback1" |
| "diamond" |
|
"vback2" (default) |
| "rose" |
|
"vback3" |
| "hypocycloid" |
|
"cback1" |
| "astroid" |
|
"cback2" |
| "deltoid" |
|
"cback3" |
| "none" | No arrowhead |
Style of the second arrowhead, specified as one of the head style options in this
table. The second arrowhead is located at the point (x_end,y_end)
determined by the X and Y
properties.
| Style | Result | Style | Result |
|---|---|---|---|
"plain" |
| "fourstar" |
|
"ellipse" |
| "rectangle" |
|
"vback1" |
| "diamond" |
|
"vback2" (default) |
| "rose" |
|
"vback3" |
| "hypocycloid" |
|
"cback1" |
| "astroid" |
|
"cback2" |
| "deltoid" |
|
"cback3" |
| "none" | No arrowhead |
Length of the first arrowhead, specified as a scalar numeric value in point units.
One point equals 1/72 inch. The first arrowhead extends backward from the point
(x_begin,y_begin) determined by the X and
Y properties.
Example: 15
Length of the second arrowhead, specified as a scalar numeric value in point
units. One point equals 1/72 inch. The second arrowhead extends backward from the
point (x_end,y_end) determined by the X and
Y properties.
Example: 15
Width of the first arrowhead, specified as a scalar numeric value in point units.
One point equals 1/72 inch. The first arrowhead is located at the point
(x_begin,y_begin) determined by the X and
Y properties.
Example: 15
Width of the second arrowhead, specified as a scalar numeric value in point units.
One point equals 1/72 inch. The second arrowhead is located at the point
(x_end,y_end) determined by the X and
Y properties.
Example: 15
Position
Beginning and ending x-coordinates, specified as a
two-element vector of the form [x_begin x_end].
By default, the units are normalized to the figure. The lower-left corner of the
figure maps to (0,0) and the upper-right corner maps to
(1,1). To change the units, use the Units
property.
Example: [0.2 0.3]
Beginning and ending y-coordinates, specified as a
two-element vector of the form [y_begin y_end].
By default, the units are normalized to the figure. The lower-left corner of the
figure maps to (0,0) and the upper-right corner maps to
(1,1). To change the units, use the Units
property.
Example: [0.2 0.3]
Size and location, specified as a four-element vector of the form
[x_begin y_begin dx dy]. The first two elements specify the
coordinates for the beginning of the arrow. The second two elements specify the slope
of the arrow.
By default, the units are normalized to the figure. The lower-left corner of the
figure maps to (0,0) and the upper-right corner maps to
(1,1). To change the units, use the Units
property.
Example: [0.5 0.5 0.2 0.3]
Position units, specified as one of the values in this table.
Units | Description |
|---|---|
"normalized" (default) | Normalized with respect to the figure, uipanel, or uitab that
contains the annotation. The lower-left corner of the container maps
to (0,0) and the upper-right corner maps to (1,1). |
"inches" | Inches. |
"centimeters" | Centimeters. |
"characters" |
Based on the default system font character size.
|
"points" | Points. One point equals 1/72 inch. |
"pixels" | Pixels. On Windows® and Macintosh systems, the size of a pixel is 1/96th of an inch. This size is independent of your system resolution. On Linux® systems, the size of a pixel is determined by your system resolution. |
All units are measured from the lower-left corner of the figure window.
This property affects the Position property.
If you change the units, then it is good practice to return it to
the default value after completing your computation to prevent affecting
other functions that assume Units is set to the
default value.
If you specify the Position and Units properties
using name-value arguments when creating the object, then the order of specification
matters. If you want to define the position with particular units, then you must set the
Units property before the Position
property.
Examples
Create a double-ended arrow annotation on a figure. Specify the horizontal range of the arrow stem using the form [x_begin x_end] and vertical range of the arrow stem using the form [y_begin y_end]. By default, the units are normalized to the figure. So, the lower-left corner of the figure maps to (0,0) and the upper-right corner maps to (1,1).
x = linspace(0,4*pi); y = sin(x); plot(x,y) axis padded xint = [0.26 0.61]; yint = [0.88 0.88]; annotation("doublearrow",xint,yint);

Create a double-ended arrow annotation on a figure. Customize the double-ended arrow annotation by setting the line style and line width.
x = linspace(0,4*pi); y = sin(x); plot(x,y) axis padded xint = [0.26 0.61]; yint = [0.88 0.88]; an = annotation("doublearrow",xint,yint); an.LineStyle = "--"; an.LineWidth = 2;

Create a double-ended arrow annotation on a figure. Change the head styles to be rectangles and make the rectangle arrowheads thin.
x = linspace(-pi/2,pi/2); y1 = sin(x); plot(x,y1) hold on y2 = cos(x); plot(x,y2) hold off xint1 = [0.21 0.21]; yint1 = [0.52 0.11]; an1 = annotation("doublearrow",xint1,yint1); an1.Head1Style = "rectangle"; an1.Head2Style = "rectangle"; an1.Head1Length = 2; an1.Head2Length = 2;

Create a second double-ended arrow annotation on the same figure. Use the same arrowhead style and length as in the first annotation.
xint2 = [0.82 0.82]; yint2 = [0.52 0.92]; an2 = annotation("doublearrow",xint2,yint2); an2.Head1Style = "rectangle"; an2.Head2Style = "rectangle"; an2.Head1Length = 2; an2.Head2Length = 2;

Version History
Introduced before R2006a
See Also
Functions
Objects
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)