# Is there a streamlines function/package?

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

A search shows this discussion on Makie

Simon Danisch I am sure will be along here soon!

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

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

I edited my post.

Great, thanks!