3
$\begingroup$

I got a 2D vector with the following code.

lx = N[Table[{{r Cos[phi], r Sin[phi] }, { -Sin[phi], Cos[phi]}}, {r, 
     0.5, 2, 0.5}, {phi, 0, 2 \[Pi], (2 \[Pi])/(10 (r + 0.1))}]];
ListVectorPlot[lx, VectorPoints -> All]

Figure 1

Figure 1

I would like to plot a similar 3D vector, where the vectors is distributed around a circle. I tried VectorPlot3D, but I get the 3D vector with square lattice, which is not what I expect. I want the 3D vectors are arranged on a circle line, similar to the 2D vectors. Thanks for any suggestion.

enter image description here

Figure 2

$\endgroup$
5
$\begingroup$

You can use Graphics3D combined with Arrow. If you want to change colors, just modify the value of nn.

nn=1;    
dx = 0.5;
    tab = Table[
       Flatten[Table[
         Arrow[{{c Cos[x] Sin[y], c Sin[x] Sin[y], 
            c Cos[y]}, {c Cos[x + dx] Sin[y], c Sin[x + dx] Sin[y], 
            c Cos[y]}}], {x, 0, 2 Pi, dx}, {y, 0, 2 Pi, dx}], 1], {c, 1, 
        3, 1}];
    Graphics3D[Table[{Hue[nn/i], tab[[i]]}, {i, 1, Length[tab]}]]

enter image description here

$\endgroup$
  • $\begingroup$ Thanks a lot! It would be nice if the color of the arrow can be determined by the value of r. $\endgroup$ – Jing Dec 20 '15 at 7:23
3
$\begingroup$

You can try SliceVectorPlot3D

SliceVectorPlot3D[{x, y, z}, {Norm[{x, y, z}, 2] == 2.5}, {x, -3, 
  3}, {y, -3, 3}, {z, -3, 3}, VectorPoints -> 7, 
 VectorStyle -> "Arrow3D", PlotStyle -> Opacity[0], Boxed -> False, 
 Axes -> False]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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