Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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?

share|improve this question
1  
Very well explained. Welcome to Mathematica.SE! –  Szabolcs Apr 27 '12 at 9:48

2 Answers 2

up vote 10 down vote accepted

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]

Mathematica graphics

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.

share|improve this answer
    
Do you know how to show the grid inside the box? –  Abhishek Shivkumar 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

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.