Arrowheads[spec]
is a graphics directive specifying that arrows that follow should have arrowheads with sizes, positions, and forms specified by spec.
Arrowheads
Arrowheads[spec]
is a graphics directive specifying that arrows that follow should have arrowheads with sizes, positions, and forms specified by spec.
Details and Options
- With the default Arrowheads[Automatic], a single arrowhead is placed at the head of each arrow.
- Arrowheads[s] specifies that arrowheads should have a length that is a fraction s of the total width of the graphic. The default is 0.04. »
- The symbolic values Tiny, Small, Medium, and Large can be used for s. With these values, the size of the arrowhead is independent of the total width of the graphic. »
- Arrowheads[{spec1,spec2,…}] specifies that arrows should include several arrowhead elements.
- Each arrowhead element can be specified as follows:
-
s default arrowhead with scaled size s {Automatic,pos} default arrowhead at position pos {s,pos} scaled default arrowhead at position pos {s,pos,g} arrowhead drawn as graphic g {s,pos,{g,δ}} shaft foreshortened by δ - The position pos runs from 0 to 1 from the tail to the head of the arrow.
- Arrowheads[{s0,s1,…,sn}] specifies arrowheads with scaled sizes si at positions i/n. »
- Arrowheads[{-s,s}] gives double‐headed arrows. »
- The graphic g is placed so that the origin
of its coordinates lies at position pos along each arrow. - The graphic g is oriented so that its positive
axis is aligned with the direction of the shaft at position pos. - The graphic g is scaled so that one unit of its coordinates corresponds to a fraction s of the width of the whole graphic in which the arrow is being drawn.
- The graphic g is always assumed to have AspectRatio->Automatic.
- With the specification {s,pos,{g,δ}}, the shaft of the arrow is foreshortened by δ in the coordinate system of g. This can prevent a thick shaft from "poking through" arrowheads at the head or tail of the arrow. »
- In 3D, the default option setting Appearance->"Flat" makes arrowheads always be rendered in the plane of the screen. Appearance->"Projected" makes them be rendered in 3D, and projected into the plane of the screen.
Examples
open all close allBasic Examples (3)
{Graphics[{Arrowheads[.1], Arrow[{{0, 0}, {2, 1}}]}], Graphics[{Arrowheads[.1], Arrow[BezierCurve[{{0, 0}, {1, 1}, {2, 0}}]]}]}{Graphics3D[{Arrowheads[.1], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Arrowheads[.1], Arrow[BSplineCurve[{{0, 0, 0}, {1, 1, 1}, {2, -1, 1}}]]}]}A full 3D arrow primitive using tubes:
{Graphics3D[{Arrowheads[.1], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]}], Graphics3D[{Arrowheads[.1], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {1, 1, 1}, {2, -1, 1}}]]]}]}Scope (16)
Arrow Sizes (5)
Table[Graphics[{Arrowheads[i], Arrow[{{0, 0}, {2, 1}}]}, PlotLabel -> i], {i, {.1, .2, .4}}]Table[Graphics[{Arrowheads[i], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}, PlotLabel -> i], {i, {.1, .2, .4}}]Arrowheads with scaled sizes in 3D:
Table[Graphics3D[{Arrowheads[i], Arrow[{{0, 0, 0}, {2, 1, 1}}]}, PlotLabel -> i], {i, {.1, .2, .4}}]Table[Graphics3D[{Arrowheads[i], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}, PlotLabel -> i], {i, {.1, .2, .4}}]Arrowheads with scaled sizes for tubes in 3D:
Table[Graphics3D[{Arrowheads[i], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}, 0.02]]}, PlotLabel -> i], {i, {.1, .2, .4}}]Table[Graphics3D[{Arrowheads[i], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {.2, 1, .5}, {2, 1, 1}}], 0.02]]}, PlotLabel -> i], {i, {.1, .2, .4}}]Symbolic values to specify predefined absolute sizes of arrowheads:
Table[Graphics[{Arrowheads[i], Arrow[{{0, 0}, {2, 1}}]}, PlotRange -> {{0, 2}, {0, 1}}, PlotLabel -> i], {i, {Tiny, Small, Medium, Large}}]Table[Graphics[{Arrowheads[i], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}, PlotRange -> {{0, 2}, {-0.5, 1}}, PlotLabel -> i], {i, {Tiny, Small, Medium, Large}}]Table[Graphics3D[{Arrowheads[i], Arrow[{{0, 0, 0}, {2, 1, 1}}]}, PlotLabel -> i], {i, {Tiny, Small, Medium, Large}}]Table[Graphics3D[{Arrowheads[i], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}, PlotLabel -> i], {i, {Tiny, Small, Medium, Large}}]Table[Graphics3D[{Arrowheads[i], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}, 0.02]]}, PlotLabel -> i], {i, {Tiny, Small, Medium, Large}}]Table[Graphics3D[{Arrowheads[i], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}], 0.02]]}, PlotLabel -> i], {i, {Tiny, Small, Medium, Large}}]Multiple Arrowheads (8)
{Graphics[{Arrowheads[{-.1, .1}], Arrow[{{0, 0}, {2, 1}}]}], Graphics[{Arrowheads[{-.1, .1}], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}, PlotRange -> {{0, 2}, {-0.5, 1}}]}{Graphics3D[{Arrowheads[{-.1, .1}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Arrowheads[{-.1, .1}], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}]}{Graphics3D[{Arrowheads[{-.1, .1}], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]}], Graphics3D[{Arrowheads[{-.1, .1}], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]]}]}Uniformly spaced arrowheads with specific sizes:
{Graphics[{Arrowheads[{.05, .1, .1, .05}], Arrow[{{0, 0}, {2, 1}}]}], Graphics[{Arrowheads[{.05, .1, .1, .05}], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}, PlotRange -> {{-0.1, 2}, {-0.5, 1}}]}{Graphics3D[{Arrowheads[{.05, .1, .1, .05}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Arrowheads[{.05, .1, .1, .05}], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}]}{Graphics3D[{Arrowheads[{.05, .1, .1, .05}], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]}], Graphics3D[{Arrowheads[{.05, .1, .1, .05}], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]]}]}Specify arrowhead size and position:
Table[Graphics[{Arrowheads[{{.1, i}}], Arrow[{{0, 0}, {1, 1 / 3}}]}], {i, {0.2, 0.5, 1}}]Table[Graphics[{Arrowheads[{{.1, i}}], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}, PlotRange -> {{-0.1, 2}, {-0.5, 1}}], {i, {0.2, 0.5, 1}}]Specify size and position in 3D:
Table[Graphics3D[{Arrowheads[{{.1, i}}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], {i, {0.2, 0.5, 1}}]Table[Graphics3D[{Arrowheads[{{.1, i}}], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}], {i, {0.2, 0.5, 1}}]Table[Graphics3D[{Arrowheads[{{.1, i}}], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]}], {i, {0.2, 0.5, 1}}]Table[Graphics3D[{Arrowheads[{{.1, i}}], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]]}], {i, {0.2, 0.5, 1}}]Multiple arrowheads with specific sizes and positions:
{Graphics[{Arrowheads[{{.1, 0}, {.2, .5}, {.3, 1}}], Arrow[{{0, 0}, {2, 1}}]}], Graphics[{Arrowheads[{{.1, 0}, {.2, .5}, {.3, 1}}], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}, PlotRange -> {{-0.1, 2}, {-0.5, 1}}]}{Graphics3D[{Arrowheads[{{.1, 0}, {.2, .5}, {.3, 1}}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Arrowheads[{{.1, 0}, {.2, .5}, {.3, 1}}], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}]}{Graphics3D[{Arrowheads[{{.1, 0}, {.2, .5}, {.3, 1}}], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]}], Graphics3D[{Arrowheads[{{.1, 0}, {.2, .5}, {.3, 1}}], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]]}]}Reverse arrowheads by assigning negative size:
{Graphics[{Arrowheads[{{-.1, 0}, {.1, .4}, {-.1, .6}, {.1, 1}}], Arrow[{{0, 0}, {2, 1}}]}], Graphics[{Arrowheads[{{-.1, 0}, {.1, .4}, {-.1, .6}, {.1, 1}}], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}]}{Graphics3D[{Arrowheads[{{-.1, 0}, {.1, .4}, {-.1, .6}, {.1, 1}}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Arrowheads[{{-.1, 0}, {.1, .4}, {-.1, .6}, {.1, 1}}], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}]}{Graphics3D[{Arrowheads[{{-.1, 0}, {.1, .4}, {-.1, .6}, {.1, 1}}], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]}], Graphics3D[{Arrowheads[{{-.1, 0}, {.1, .4}, {-.1, .6}, {.1, 1}}], Arrow[Tube[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]]}]}s = {{0, 0}, {2, 1.5}, {4, 0}};{Graphics[Arrow[Line[{s, s + 1}]]], Graphics[Arrow[BezierCurve[{s, s + 1}]]]}s = {{0, 0, 0}, {1, 2, 2}, {4, 2, 2}};{Graphics3D[Arrow[Line[{s, s + 3}]]], Graphics3D[Arrow[BSplineCurve[{s, s + 3}]]], Graphics3D[Arrow[Tube[BSplineCurve[{s, s + 3}]]]]}Multiple disconnected arrows with different arrowheads:
s = {{0, 0}, {2, 1.5}, {4, 0}};{Graphics[{Arrowheads[{{0.04}, {0.1}}], Arrow[Line[{s, s + 1}]]}], Graphics[{Arrowheads[{{0.04}, {0.1}}], Arrow[BezierCurve[{s, s + 1}]]}]}s = {{0, 0, 0}, {1, 2, 2}, {4, 2, 2}};{Graphics3D[{Arrowheads[{{0.04}, {0.1}}], Arrow[Line[{s, s + 3}]]}], Graphics3D[{Arrowheads[{{0.04}, {0.1}}], Arrow[BSplineCurve[{s, s + 3}]]}], Graphics3D[{Arrowheads[{{0.04}, {0.1}}], Arrow[Tube[BSplineCurve[{s, s + 3}]]]}]}Custom Arrowheads (3)
Graphics can be used as an arrowhead:
h = Graphics[Line[{{{-1, 1 / 2}, {0, 0}, {-1, -1 / 2}}, {{0, 1 / 2}, {1, 0}, {0, -1 / 2}}, {{1, 1 / 2}, {2, 0}, {1, -1 / 2}}}]]Graphics[{Arrowheads[{{Automatic, Automatic, h}}], Arrow[{{0, 0}, {1, 1}}], Arrow[{{0, 0}, {0, 1}}], Arrow[{{0, 0}, {1, 0}}]}]Graphics3D can also be used as an arrowhead for 3D arrow:
h = Graphics3D[Line[{{{-1, 1 / 2, 0}, {0, 0, 0}, {-1, -1 / 2, 0}}, {{0, 1 / 2, 0}, {1, 0, 0}, {0, -1 / 2, 0}}, {{1, 1 / 2, 0}, {2, 0, 0}, {1, -1 / 2, 0}}}]]Graphics3D[{Arrowheads[{{Automatic, Automatic, h}}], Arrow[{{0, 0, 0}, {1, 0, 0}}], Arrow[{{0, 0, 0}, {0, 1, 0}}], Arrow[{{0, 0, 0}, {0, 0, 1}}]}]h = Graphics[Line[{{-1, 1 / 2}, {0, 0}, {-1, -1 / 2}, {-1, 1 / 2}}]];Table[Graphics[{Thick, Arrowheads[{{.5, 1, {h, i}}}], Arrow[{{0, 0}, {2, 1}}]}], {i, {0, .5, 1}}]Table[Graphics[{Thick, Arrowheads[{{.5, 1, {h, i}}}], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}], {i, {0, .5, 1}}]h = Graphics3D[Line[{{-1, 1 / 2, 0}, {0, 0, 0}, {-1, -1 / 2, 0}, {-1, 1 / 2, 0}}]];Table[Graphics3D[{Thick, Arrowheads[{{.5, 1, {h, i}}}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], {i, {0, .5, 1}}]Table[Graphics3D[{Thick, Opacity[.5], Arrowheads[{{.1, 1, {Graphics3D[Sphere[]], i}}}], Arrow[BSplineCurve[{{0, 0, 0}, {.2, 1, 0.5}, {2, 1, 1}}]]}, PlotRange -> {{0, 3}, {0, 2}, {0, 2}}], {i, {0, .5, 1}}]Applications (1)
See Also
Related Guides
Text
Wolfram Research (2007), Arrowheads, Wolfram Language function, https://reference.wolfram.com/language/ref/Arrowheads.html (updated 2008).
CMS
Wolfram Language. 2007. "Arrowheads." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2008. https://reference.wolfram.com/language/ref/Arrowheads.html.
APA
Wolfram Language. (2007). Arrowheads. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Arrowheads.html
BibTeX
@misc{reference.wolfram_2026_arrowheads, author="Wolfram Research", title="{Arrowheads}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/Arrowheads.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_arrowheads, organization={Wolfram Research}, title={Arrowheads}, year={2008}, url={https://reference.wolfram.com/language/ref/Arrowheads.html}, note=[Accessed: 12-June-2026]}