MATLAB: How to change an arrow in a quiver plot

arrowchangeMATLABquiver

How can I change the color/line width of a single arrow in a quiver plot?

Best Answer

This functionality does not currently exist in "quiver" in MATLAB R2015b, but the same effect can be achieved by creating two separate quiver plots and enforcing equal scales between them.
Turning off the 'AutoScale' property of "quiver" prevents "quiver" from rescaling vectors according to the data. By manually scaling the data, the same scale can be kept between two quiver plots. Refer to the following example which creates a quiver plot of a vector field and colors one of the vectors differently.
 
stepX = 0.2;
stepY = 0.2;
[x,y] = meshgrid(0:stepX:2,0:stepY:2);
x = x(:);
y = y(:);
u = cos(x).*y;
v = sin(x).*y;
%manually scale u and v
scale = max( stepX/max(u), stepY/max(v) );
u = scale*u;
v = scale*v;
I = 52; %choose an arrow to change
figure
a = quiver(x(I),y(I),u(I),v(I),'AutoScale','off','Color','red','MaxHeadSize',Inf);
%remove point from the data
x(I) = [];
y(I) = [];
u(I) = [];
v(I) = [];
hold on
quiver(x,y,u,v,'AutoScale','off','Color','blue')