Oh! In fact, linestyle='dashed' works, just the quiverβs arrows are filled by default and do not have a line width. These are patches instead of paths.
If you do something like this:
import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.axis('equal') ax.quiver((0,0), (0,0), (3,1), (1,0), angles='xy', scale_units='xy', scale=1, linestyle='dashed', facecolor='none', linewidth=1) ax.axis([-4, 4, -4, 4]) plt.show()

You get dashed arrows, but probably not exactly what you had in mind.
You can play around with some options to get a little closer, but it still doesn't look very good:
import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.axis('equal') ax.quiver((0,0), (0,0), (3,1), (1,0), angles='xy', scale_units='xy', scale=1, linestyle='dashed', facecolor='none', linewidth=2, width=0.0001, headwidth=300, headlength=500) ax.axis([-4, 4, -4, 4]) plt.show()

Therefore, another way would be to use hatches:
import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.axis('equal') ax.quiver((0,0), (0,0), (3,1), (1,0), angles='xy', scale_units='xy', scale=1, hatch='ooo', facecolor='none') ax.axis([-4, 4, -4, 4]) plt.show()
