# Plotting vectors originating from the origin in 3D

I have an array of data with 3D elements. Ex: x = {{1,2,3}, {3,4,5}, {5,6,7}}. I want to show this data in 3 dimensions, such that each point in the space is shown as a vector originating from the origin. There should be an arrow/line whose one end is at the origin $(0,0,0)$ and the other end at the point $(1,2,3)$.

Which function should I use?

• Very well explained. Welcome to Mathematica.SE! – Szabolcs Apr 27 '12 at 9:48

For your problem, it is probably easiest to build the graphic out of graphics primitives rather than use a pre-made convenience function such as ListPointPlot3D.

This is one way to do it:

data = {{1, 2, 3}, {3, 4, 5}, {5, 6, 7}};

Graphics3D[Arrow[{{0, 0, 0}, #}] & /@ data] I simply used the Arrow graphics primitive. I constructed a pure function that makes an arrow starting from the origin, and mapped it over the data.

• Do you know how to show the grid inside the box? – London guy Apr 27 '12 at 18:12

I wasn't able to find a way to make ListPointPlot3D draw lines instead of points.

As an alternative to Szabolcs' Graphics3D, here is a slightly different way using ParametricPlot3D and a replacement rule.

data = {{1, 2, 3}, {3, 4, 5}, {5, 6, 7}};
ParametricPlot3D[data*u, {u, 0, 1}] /. Line -> Arrow There are many good answers to this problem. Another is to use Arrow function:

Graphics3D[Arrow[{{0, 0, 0}, {2, 3, 4}}]], Axes -> True,
AxesLabel -> {x, y, z}]

• This is the same what the accepted answer suggests. – Kuba Aug 5 '17 at 8:16