# How to make a StreamPlot with three variables and two expressions

I'm trying to make a StreamPlot in Mathematica with three variables. I already have two variables, x and y, that make an ellipse via

StreamPlot[{-y,x}]


but I want the vectors to increase as you move radially out from the center (ie ideally I would want a third variable, v, so that it looked like

StreamPlot[{-v*y, v*x}]


So that as v increased the vectors increased as well.

• You might take a look at VectorPlot. Jun 16 '15 at 16:14
• I'm not sure I follow, but it sounds like you're looking for the formula of a vector field in just two variables with such a property. Something like Norm[{x, y}]*{-y, x}. Jun 16 '15 at 16:18
• I'm also not sure what you're looking for; rescaling the vectors as you propose won't change the stream lines at all. Are you looking for the actual arrowheads & lines in StreamPlot to be rescaled according to their location on in the plot? Jun 16 '15 at 16:38
• Yes, @MichaelSeifert, that's what I'm looking for. The farther you go out from the center, I want the actual lines to be larger. What I'm doing is making an ellipse, and as you move outward the velocity around the ellipse should increase. Jun 16 '15 at 16:47
• The vector field {x,-y} produces sets of lines that converge to x=0, not an ellipse Jun 16 '15 at 16:54

There is an option in StreamPlot called StreamScale that allows you to scale the vectors. In the documentation, we find that StreamScale -> {Automatic, 2, Automatic} results in scaled vectors. Alternatively, you can use VectorPlot, which automatically scales the vectors. Using
StreamPlot[{-y,x}, {x,-2,2}, {y,-2,2}, StreamScale -> {Automatic, 2, Automatic}]

the results look like (with StreamPlot on the left and VectorPlot on the right):
Also see, for instance, Getting clearer StreamPlot output, How to get StreamPlot to draw many hundreds of streamlines?, and How can I get better control over StreamPlot? for more information about how StreamPlot works.