vf = VectorPlot[{1, p*Exp[-p]}, {t, 0, 5}, {p, 0, 3},
VectorScale -> {0.05, Automatic, None}, VectorPoints -> 20,
VectorStyle -> {Gray, Arrowheads}, AspectRatio -> Automatic]


Which gives the following image. Is my thinking incorrect?

Absolutely weird, look what happens when I reverse the order of Gray and Arrowheads, changing no other code.

vf = VectorPlot[{1, p*Exp[-p]}, {t, 0, 5}, {p, 0, 3},
VectorScale -> {0.05, Automatic, None}, VectorPoints -> 20,
VectorStyle -> {Arrowheads, Gray}, AspectRatio -> Automatic] Is this a bug?

Running Version 10.0.1.0.

A list of styles is the syntax for giving a series of styles to be applied cyclically to each of a series of plot elements. For example:

VectorPlot[{{y, -x}, {x, y}}, {x, -3, 3}, {y, -3, 3}, Observe that one field gets Gray while the other gets Arrowheads. The correct syntax should be to use a sub-list (as Lou showed) or Directive, and here it works:

VectorPlot[{{y, -x}, {x, y}}, {x, -3, 3}, {y, -3, 3}, Observe that this time one field gets both Gray and Arrowheads while the other gets Red.

However I think there may be a bug in that order matters where I cannot see why it should. This does not work the same as the plot above:

VectorPlot[{{y, -x}, {x, y}}, {x, -3, 3}, {y, -3, 3}, Edit: In version 10.1.0 under Windows the output of this last command is the same as that of the penultimate one, so it looks like it was a bug and has since been fixed.

• Directive in VectorStyle doesn't work with Arrowheads though. Mathematica 10.0.2 for Mac here. – Taiki Apr 27 '15 at 21:11

Set the style for vector fields:

vf = VectorPlot[{1, p*Exp[-p]}, {t, 0, 5}, {p, 0, 3},
VectorScale -> {0.05, Automatic, None}, VectorPoints -> 20,
VectorStyle -> {{Red, Arrowheads}}, AspectRatio -> Automatic] 