I'm trying to create a vector plot with uniform vector scaling. I need the x and y ranges to be very different, because I need to highlight the angle between the vectors and the y=0 axis. This means that I can't use an automatic aspect ratio, however, changing the aspect ratio is changing the vector scaling in a way that I don't understand.
This is my code
Show[VectorPlot[{If[y>0, 1-2x, 1-x], If[y>0, -6/25+2/5x-3/2y, -7/25+2/5x-1/2y]},
{x,0.49,0.8}, {y,-0.01,0.01}, VectorStyle->Black, VectorPoints->Coarse,
VectorScale->{0.05, 1, None}, AspectRatio->0.62],
ContourPlot[y==0, {x,0.48,0.8}, {y,-0.01,0.01}, ContourStyle->{Black}]]
which gives the following vector plot
I specifically need the arrows on the top left to be approximately the same size as the rest of them, and to not cross the y=0 axis. I've also entered specific functions into sfun, for instance
Show[VectorPlot[{If[y>0, 1-2x, 1-x], If[y>0, -6/25+2/5x-3/2y, -7/25+2/5x-1/2y]},
{x,0.49,0.8}, {y,-0.01,0.01}, VectorStyle->Black, VectorPoints->Coarse,
VectorScale->{0.05, 1, #2&}, AspectRatio->0.62],
ContourPlot[y==0, {x,0.48,0.8}, {y,-0.01,0.01}, ContourStyle->{Black}]]
which should give a uniform vector length for the same y values, but instead gives the picture below, where there is the same vector length problem in the upper left corner.
Is there a way to scale the vectors so that this doesn't happen?
VectorPlot
was changing the plot range so that it didn't not match the plot domain. See my answer. $\endgroup$