timmm
#1
Does anyone know of a package to compute 3D streamlines in Julia?

Like Matlab’s: https://de.mathworks.com/help/matlab/ref/stream3.html

I specifically want to get the XYZ data describing the streamlines.

If not a package in Python that I can retrieve these with PyCall would also work.

Tim

1 Like

johnh
#3
A search shows this discussion on Makie

Simon Danisch I am sure will be along here soon!

timmm
#4
OK great, I updated to the latest version of Makie (Julia 1.1.1) and using either

http://juliaplots.org/MakieReferenceImages/gallery//streamplot_1/index.html or

http://juliaplots.org/MakieReferenceImages/gallery//streamplot_3d/index.html from

http://makie.juliaplots.org/stable/ I get the following error:

```
streamplot(f, -1.5..1.5, -1.5..1.5, -1.5..1.5, colormap = :magma, gridsize = (10, 10), arrow_size = 0.06)
ERROR: UndefVarError: streamplot not defined
streamplot(f, -1.5..1.5, -1.5..1.5, colormap = :magma)
ERROR: UndefVarError: streamplot not defined
```

Any suggestions? I am also interested to find a way to easily return X Y and Z of the lines.

Did you also run `using Mackie`

?

Running the full example code works for me (you do have to include `using Makie`

, though).

As for getting the lines back, you could dig through the sub-plots of the streamplot. For example (and I haven’t tried this),

```
sp = streamplot(...)[end]
sp.plots[1][1] # should be a Vector{Point}
```

If you only need the streamlines you can call the implementation directly:

```
arrow_pos, arrow_dir, line_points = AbstractPlotting.streamplot_impl(Point2f0, x->Point2f0(-0.1*x[2], 0.1*x[1]), Rect(0,0,1,1), (100,100), 0.1 )
```

or in 3d

```
arrow_pos, arrow_dir, line_points = AbstractPlotting.streamplot_impl(Point3f0, x->Point3f0(-0.1*x[2], 0.1*x[1], -0.1x[3]), Rect(0,0,0,1,1,1), (100,100,100), 0.1 )
```

2 Likes

timmm
#8
Great, I now have it plotting. mschauer do you have an code snippet in 3D where you extract the line data?

Would I use “Point3f0” and “Cube”?

Cheers,

Tim