Skip to main content

plotting - How to get StreamPlot to draw many hundreds of streamlines?


For artistic reasons, I want to draw an extremely dense StreamPlot with something like a thousand streamlines. I tried setting StreamPoints -> {Automatic, d} where $d$ is a small value specifying the minimum distance between streamlines, but after a point reducing the value of $d$ stops having an effect.


GraphicsColumn[
StreamPlot[{-1 - x^2 + y, 1 + x - y^2}, {x, -3, 3}, {y, -3, 3},
StreamPoints -> {Automatic, #}, ImageSize -> Medium] & /@ {1, 0.3,
0.1, 0.03, 0.01}]

enter image description here


The same thing happens when setting StreamPoints -> n for increasing values of $n$, or when manually seeding hundreds of seed points; Mathematica silently refuses to plot any more streamlines.



How can I get around this? Is it possible to plot arbitrarily closely spaced streamlines using StreamPlot?


Update: To clarify, I want to keep the style of the fully-automatic default StreamPlot, which attempts to maintain a uniform spacing between streamlines, and just make it denser. So I don't want to get rid of the minimum distance entirely; I just want to lower it. To save everyone some time, here is what I find unsatisfactory about all the documented settings for StreamPoints.



  • None: Obviously no good.

  • $n$: Stops having an effect somewhere between 50 and 100.

  • Automatic, Coarse, and Fine: Not dense enough.

  • {p1, p2, ...} and {{p1, g1}, ...}: See n.

  • {spec, d}: d stops having an effect somewhere between 0.2 and 0.1.

  • {spec, {dStart, dEnd}}: Strangely, increasing dEnd plots more streamlines. Compare {Automatic, {0.5, 10}} with {Automatic, 0.5} and {Automatic, {0.5, 0.5}}. I don't understand this setting at all.

  • {spec, d, len}: When spec is Automatic, len has no effect as far as I can tell. On the other hand, when spec is {p1, p2, ...}, len causes d to be ignored completely.





Comments