# Degenerate arrows/points in StreamPlot

Drawing a StreamPlot of a linear dynamical system:

A = {{9, -15}, {7, -9}};
StreamPlot[A.{x, y}, {x, -2, 2}, {y, -2, 2}, StreamPoints -> Coarse]


results in a few colinear points inside the ellipse. I guess they are some degenerate arrows, but it looks very confusing, so how to get rid of those? (They stay there when StreamPoints -> Medium as well, although less abundant.)

$Version  "12.1.1 for Linux x86 (64-bit) (June 19, 2020)" ## 2 Answers Delete short arrows?: A = {{9, -15}, {7, -9}}; StreamPlot[A . {x, y}, {x, -2, 2}, {y, -2, 2}, StreamPoints -> Coarse] /. Arrow[a_] /; Total[Norm /@ Differences[a]] < 0.1 :> {}  • Note to editor(s): Norm[Differences[a]] is a matrix norm of an$(n-1) \times 2$of the difference vectors of the coordinates of the$n\$ points of each arrow, the meaning of which escapes me; Total[Norm /@ Differences[a]] gives the length of the arrow. A slightly simpler formulation would be ArcLength[Line@a]. It would be really nice if ArcLength worked with Arrow, but it does not. Feb 5 at 16:57
• Norm[Differences[a]] works in this code. Feb 5 at 22:24
• @rhomboidRhipper It implements a selection criterion that, luckily, happens to work, but it's the wrong idea and not equivalent. It would result in the deletion of a = Table[{x, Sin[x]}, {x, 0., 0.5, 0.01}];, which would be wrong, since Arrow[a] makes a rather long arrow. The difference above if < 0.1 is changed to < 0.2 is evident, too. Feb 6 at 2:25

Set the aratio and npts in SteamScale maybe one method.

A = {{9, -15}, {7, -9}};
StreamPlot[A . {x, y}, {x, -2, 2}, {y, -2, 2}, StreamPoints -> Coarse,
StreamScale -> {Automatic, 2, .01, Automatic}]


• Ingenious, but changing anything, like AspectRatio -> 1/GoldenRatio, makes the arrows display ugly, and then altering StreamScale make the degenerate arrows appear again. Feb 5 at 1:16