Arrow[{pt1,pt2}]
is a graphics primitive that represents an arrow from pt1 to pt2.
Arrow[{pt1,pt2},s]
represents an arrow with its ends set back from pt1 and pt2 by a distance s.
Arrow[{pt1,pt2},{s1,s2}]
sets back by s1 from pt1 and s2 from pt2.
Arrow[curve,…]
represents an arrow following the specified curve.
Arrow
Arrow[{pt1,pt2}]
is a graphics primitive that represents an arrow from pt1 to pt2.
Arrow[{pt1,pt2},s]
represents an arrow with its ends set back from pt1 and pt2 by a distance s.
Arrow[{pt1,pt2},{s1,s2}]
sets back by s1 from pt1 and s2 from pt2.
Arrow[curve,…]
represents an arrow following the specified curve.
Details
- Arrow can be used in both Graphics and Graphics3D (two- and three-dimensional graphics).
- The following curve specifications can be used in Graphics:
-
Line[…] piecewise line segments BezierCurve[…] composite Bezier curve BSplineCurve[…] B-spline curve JoinedCurve[…] joined curve object - The following curve specifications can be used in Graphics3D:
-
Line[…] piecewise line segments BezierCurve[…] composite Bezier curve BSplineCurve[…] B-spline curve Tube[…] tubed curve object - Arrow[Line[…]] is equivalent to Arrow[…]. Arrow[Tube[…]] yields a 3D arrow based on a tube.
- Arrow[{pt1,pt2,…}] represents an arrow whose shaft passes through the sequence of points pti.
- The positions of points can be specified either in ordinary coordinates as {x,y}, or in scaled coordinates as Scaled[{x,y}] or using ImageScaled or Offset. »
- The shaft of the arrow consists of a sequence of straight segments joining the specified points.
- Arrow[{pt1,pt2}] is drawn by default with its tail at pt1 and its head at pt2.
- The form, orientation, and position of arrowheads can be specified by an Arrowheads directive. »
- Graphics directives such as RGBColor or Thickness apply to both the shaft and arrowhead elements of an arrow. »
- You can prevent directives from applying to an arrowhead by including explicit directives within the graphic used to specify the arrowhead.
- In Arrow[{pt1,pt2},s] the setback distance s is measured in the ordinary coordinate system of the whole graphic, so that the arrow will just touch Disk[pti,s]. »
- If the whole graphic does not have AspectRatio->Automatic, then a specified arrow setback may correspond to different distances in different directions in the graphic.
Examples
open all close allBasic Examples (6)
Graphics[Arrow[{{1, 0}, {2, 1}, {3, 0}, {4, 1}}]]Graphics3D[Arrow[{{1, 1, -1}, {2, 2, 0}, {3, 3, -1}, {4, 4, 0}}]]A full 3D arrow primitive using tubes:
Graphics3D[{Red, Arrowheads[0.1], Arrow[Tube[{{1, 1, -1}, {2, 2, 0}, {3, 3, -1}, {4, 4, 0}}, 0.05]]}]{Graphics[{Arrow[BezierCurve[{{0, 0}, {1, 1}, {2, -1}}]]}], Graphics3D[{Arrow[BSplineCurve[{{0, 0, 0}, {1, 1, 1}, {2, -1, 1}, {3, 0, 2}}]]}]}{Graphics[{Arrowheads[{-.1, .1}], Arrow[{{0, 0}, {1, 1 / 3}}]}], Graphics3D[{Arrowheads[{-.1, .1}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Arrowheads[{-.1, .1}], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]}]}a = {Arrowheads[Large], Arrow[{{0, 0}, {1, .5}}]};{Graphics[{Dashed, a}], Graphics[{Red, a}], Graphics[{Thick, a}], Graphics[{Thick, Dashed, Red, a}]}Scope (17)
Arrow Specification (7)
Graphics[Arrow[{{0, 0}, {2, 1}}]]Graphics[Arrow[{{0, 0}, {2, 1}, {4, 0}}]]{Graphics[Arrow[Line[{{0, 0}, {2, 1}}]]], Graphics3D[Arrow[Line[{{0, 0, 0}, {2, 1, 1}}]]], Graphics3D[Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}]]]}{Graphics[Arrow[BezierCurve[{{0, 0}, {1, 2}, {4, 2}}]]], Graphics3D[Arrow[BSplineCurve[{{0, 0, 0}, {1, 2, 2}, {4, 2, 2}}]]], Graphics3D[Arrow[Tube[BSplineCurve[{{0, 0, 0}, {1, 2, 2}, {4, 2, 2}}]]]]}s = {{0, 0}, {2, 1.5}, {4, 0}};{Graphics[Arrow[Line[{s, s + 1}]]], Graphics[Arrow[BezierCurve[{s, s + 1}]]]}Specify the setback distance for 2D arrows:
{Graphics[{Arrow[{{0, 0}, {2, 1}}], Circle[{2, 1}, .3]}], Graphics[{Arrow[{{0, 0}, {2, 1}}, .3], Circle[{2, 1}, .3]}]}{Graphics[{Arrow[BSplineCurve[{{0, 0}, {1, -1}, {2, 1}}]], Circle[{2, 1}, .3]}], Graphics[{Arrow[BSplineCurve[{{0, 0}, {1, -1}, {2, 1}}], .3], Circle[{2, 1}, .3]}]}Specify the setback distance for 3D arrows with line shaft:
{Graphics3D[{Opacity[.8], Arrow[{{0, 0, 0}, {2, 1, 0}}], Sphere[{2, 1, 0}, .3]}], Graphics3D[{Opacity[.8], Arrow[{{0, 0, 0}, {2, 1, 0}}, .3], Sphere[{2, 1, 0}, .3]}]}Arrow Styling (7)
Arrows with different thicknesses:
Table[Graphics[{Thickness[i], Arrow[{{0, 0}, {2, 1}}]}], {i, {Tiny, Small, Medium, Large}}]Table[Graphics3D[{Thickness[i], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], {i, {Tiny, Small, Medium, Large}}]{Graphics[{Dashed, Arrow[{{0, 0}, {2, 1}}]}], Graphics[{Dotted, Arrow[{{0, 0}, {2, 1}}]}], Graphics[{DotDashed, Arrow[{{0, 0}, {2, 1}}]}]}{Graphics3D[{Dashed, Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Dotted, Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{DotDashed, Arrow[{{0, 0, 0}, {2, 1, 1}}]}]}Table[Graphics[{c, Arrow[{{0, 0}, {2, 1}}]}], {c, {Red, Green, Blue}}]Table[Graphics3D[{c, Arrow[{{0, 0, 0}, {2, 1, 1}}]}], {c, {Red, Green, Blue}}]Two-dimensional arrows with different sizes of arrowheads:
Table[Graphics[{Arrowheads[i], Arrow[{{0, 0}, {1, .5}}]}], {i, {Tiny, Small, Medium, Large}}]Table[Graphics[{Arrowheads[i], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}], {i, {.1, .2, .3, .4}}]Three-dimensional arrows with different sizes of arrowheads:
Table[Graphics3D[{Arrowheads[i], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], {i, {Tiny, Small, Medium, Large}}]Table[Graphics3D[{Arrowheads[i], Arrow[Tube[{{0, 0, 0}, {2, 1, 1}}, 0.02]]}], {i, {Tiny, Small, Medium, Large}}]Graphics can be used as an arrowhead for 2D and 3D arrows:
h = Graphics[Line[{{-1, 1 / 2}, {0, 0}, {-1, -1 / 2}, {-1, 1 / 2}}]];{Graphics[{Arrowheads[{{-.1, 0, {h, 1}}, {.1, 1, {h, 1}}}], Arrow[{{0, 0}, {2, 1}}]}], Graphics[{Arrowheads[{{-.1, 0, {h, 1}}, {.1, 1, {h, 1}}}], Arrow[BezierCurve[{{0, 0}, {1, -1}, {2, 1}}]]}]}h = Graphics[{Green, Polygon[{{-1, 1 / 2}, {0, 0}, {-1, -1 / 2}, {-1, 1 / 2}}]}];Graphics3D[{Arrowheads[{{-.1, 0, {h, 1}}, {.1, 1, {h, 1}}}, Appearance -> "Projected"], Arrow[{{0, 0, 0}, {2, 1, 1}}]}]Use Graphics3D to specify the arrowhead:
h = Graphics3D[Line[{{-1, 1 / 2, 0}, {0, 0, 0}, {-1, -1 / 2, 0}, {-1, 1 / 2, 0}}]];{Graphics3D[{Arrowheads[{{-.1, 0, {h, 1}}, {.1, 1, {h, 1}}}], Arrow[{{0, 0, 0}, {2, 1, 1}}]}], Graphics3D[{Arrowheads[{{-.1, 0, {h, 1}}, {.1, 1, {h, 1}}}], Arrow[BSplineCurve[{{0, 0, 0}, {.5, 1, 1}, {2, 1, 1}}]]}]}Coordinate Specification (3)
Use Scaled coordinates:
Graphics[Arrow[{Scaled[{0, .2}], Scaled[{1, .8}]}], Frame -> True]Graphics3D[{Arrow[{Scaled[{0, .2, 0}], Scaled[{1, .8, 0.8}]}]}, Axes -> True]Graphics3D[{Arrow[Tube[{Scaled[{0, .2, 0}], Scaled[{1, .8, 0.8}]}]]}, Axes -> True]Use ImageScaled coordinates:
Graphics[Arrow[{ImageScaled[{0, .2}], ImageScaled[{1, .8}]}], Frame -> True]Use Offset coordinates:
Graphics[Arrow[{Offset[{10, 20}, {0, 0}], Offset[{-10, -20}, {1, 1}]}], Frame -> True]Applications (7)
Make programmatic annotations to plots:
Plot[Sin[x], {x, 0, 2Pi}, Epilog -> {Arrow[{{3Pi / 2, 1 / 2}, {Pi, 0}}], Text["Zero", {3Pi / 2, 1 / 2}, {-1, -1}]}]Show[Plot3D[Sin[x]Sin[y], {x, 0, 2Pi}, {y, 0, 2Pi}, Mesh -> None, PlotRange -> {-1, 4}, BoxRatios -> Automatic], Graphics3D[{Arrow[{{Pi, Pi, 4}, {Pi / 2, Pi / 2, 1}}], Arrow[{{Pi, Pi, 4}, {3Pi / 2, 3Pi / 2, 1}}], Text[Panel["Maximum", FrameMargins -> 0], {Pi, Pi, 4}]}]]A simple display of vector fields:
With[{f = {v, u} / 5 - 1}, Graphics[Table[Arrow[{{u, v}, f + {u, v}}], {u, 0, 10}, {v, 0, 10}]]]With[{f = {v, u, 0} / 5 - 1}, Graphics3D[Table[Arrow[{{u, v, 0}, f + {u, v, 0}}], {u, 0, 10}, {v, 0, 10}]]]With[{f = {v, u, 0} / 5 - 1}, Graphics3D[Table[Arrow[Tube[{{u, v, 0}, f + {u, v, 0}}]], {u, 0, 10}, {v, 0, 10}]]]VectorPlot and VectorPlot3D use Arrow:
VectorPlot[{x, -y}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> "Rainbow"]VectorPlot3D[{x, y - 2 x, z - x}, {x, -3, 3}, {y, -3, 3}, {z, -3, 3}, VectorColorFunction -> "Rainbow", VectorMarkers -> "Arrow"]Use Arrow as an EdgeShapeFunction for GraphPlot:
GraphPlot[Table[i -> Mod[i + 1, 6], {i, 0, 5}], EdgeShapeFunction -> (Arrow[#1]&), PlotStyle -> Arrowheads[Medium]]PolyhedronData["Dodecahedron", "Skeleton", "Rule"]GraphPlot3D[%, EdgeShapeFunction -> (Arrow[#1]&)]Define an annotated arrow primitive:
AnnotatedArrow[p_, q_, label_] := {Arrowheads[{{-.1, 0}, {.1, .5, Graphics[Inset[Style[label, Medium], {Center, Top}]]}, {.1, 1}}], Arrow[{p, q}]}Graphics[{AnnotatedArrow[{-1, 0}, {1, 0}, "diameter = 2"], Circle[]}]Graphics[{AnnotatedArrow[1 / Sqrt[2]{-1, -1}, 1 / Sqrt[2]{1, 1}, "*d* = 2"], Circle[]}]ParallelDim[p_, q_, offset_, label_] := {Arrowheads[{{-.1, 0}, {.1, 0, Graphics[Line[{{0, 1}, {0, -1}}]]}, {.1, .5, Graphics[Inset[Style[label, Medium], {Center, Top}]]}, {.1, 1, Graphics[Line[{{0, 1}, {0, -1}}]]}, {.1, 1}}], Arrow[{p + offset, q + offset}]}Graphics[{Thick, Line[{{0, 0}, {1, 1}, {1, 0}, {0, 0}}], Thin, ParallelDim[{0, 0}, {1, 1}, {-.1, .1}, Sqrt[2]]}]Show the direction along curves:
Graphics[{Arrowheads[{Table[{0.04, i}, {i, 0.04, 1, 0.05}], Table[{0.04, i}, {i, 0.04, 1, 0.2}]}], Arrow[JoinedCurve[{{Line[{{2, 3}, {0.8125, 0.625}}],
BezierCurve[{{0.6875, 0.375}, {0.375, 0.25}, {1.125, 0.25}}, SplineDegree -> 2], BezierCurve[{{0.8125, 0.375}, {0.9375, 0.625}}],
Line[{{1.3125, 1.375}, {2.4375, 1.375}, {2.8125, 0.625}}],
BezierCurve[{{2.9375, 0.375}, {2.625, 0.25}, {3.625, 0.25}}, SplineDegree -> 2], BezierCurve[{{3.3125, 0.375}, {3.1875, 0.625}}]},
{Line[{{1.875, 2.5}, {1.375, 1.5}, {2.375, 1.5}}]}}, CurveClosed -> True]]}]ListLinePlot[Table[{Sin[3t], Cos[5t]}, {t, 0, 2Pi, 2Pi / 50}], Axes -> False] /. Line[rest_] :> {Arrowheads[Table[0.05, {i, 0, 1, .02}]], Arrow[BSplineCurve@rest]}Properties & Relations (1)
Use Arrowheads to style the axes:
Plot[x ^ 3, {x, -1, 1}, AxesStyle -> Arrowheads[{-0.05, 0.05}]]Neat Examples (4)
A random collection of arrows:
Graphics[Table[{Hue[RandomReal[]], Arrow[RandomReal[1, {2, 2}]]}, {75}]]Graphics3D[Table[{Hue[RandomReal[]], Arrow[Tube[RandomReal[1, {2, 3}], Scaled[0.007]]]}, {50}]]Graphics[Table[{Hue[k / 40], Arrow[{{0, 0}, {Cos[2k Pi / 40], Sin[2k Pi / 40]}}]}, {k, 40}]]Tangent vectors along an elliptic curve:
With[{f = {Cos[x] + Sin[x], Sin[x]}}, Graphics[Table[{Hue[t / (2Pi), 1, .8], Arrow[{f, Normalize[D[f, x]] + f}]} /. x -> t, {t, 0, 2Pi, .1}]]]A billboard tree using a projected arrowhead:
tree = \!\(\*GraphicsBox[«2»]\);Graphics3D[{Arrowheads[{{.1, 1, tree}}, Appearance -> "Projected"], Arrow[{{0, 0, 0}, {0, -0, 0.001}}], Green, Cuboid[{-10, -10, -3}, {10, 10, -2.8}]}]Related Guides
History
Introduced in 2007 (6.0) | Updated in 2008 (7.0) ▪ 2010 (8.0)
Text
Wolfram Research (2007), Arrow, Wolfram Language function, https://reference.wolfram.com/language/ref/Arrow.html (updated 2010).
CMS
Wolfram Language. 2007. "Arrow." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2010. https://reference.wolfram.com/language/ref/Arrow.html.
APA
Wolfram Language. (2007). Arrow. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Arrow.html
BibTeX
@misc{reference.wolfram_2026_arrow, author="Wolfram Research", title="{Arrow}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/Arrow.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_arrow, organization={Wolfram Research}, title={Arrow}, year={2010}, url={https://reference.wolfram.com/language/ref/Arrow.html}, note=[Accessed: 13-June-2026]}