HOw can I change the size of the arrows

82 次查看(过去 30 天)
I did this code to plot a vector field, and i was wondering how can i change the size of the arrows?
t1 = linspace(-1,100,20);
y1 = linspace(-1,150,20);
[T,Y]=meshgrid(t1,y1);
DY=TribMod1(T,Y); DT=ones(size(DY));
scale = 1./sqrt(DT.^2+DY.^2);
quiver(T,Y, scale.*DT, scale.*DY);
axis([-1 100 -1 151])
ylabel('y')
xlabel('time (t)')
title('Direction field of function(1) with b=0.005')

采纳的回答

Star Strider
Star Strider 2014-6-24
Use the 'AutoScaleFactor' property:
% CREATE DATA:
a = linspace(0,6*pi);
x = exp(-0.1*a) .* cos(a);
y = exp(-0.1*a) .* sin(a);
da = diff([0 a]);
dxda = diff([0 x]) ./ da;
dyda = diff([0 y]) ./ da;
% PLOT:
figure(1)
subplot(2,1,1)
h1 = quiver(x, y, dxda, dyda)
set(h1,'AutoScale','on', 'AutoScaleFactor', 2)
axis equal square
title('Arrows 2')
subplot(2,1,2)
h2 = quiver(x, y, dxda, dyda)
set(h2,'AutoScale','on', 'AutoScaleFactor',0.5)
axis equal square
title('Arrows ½')
produces:

更多回答(1 个)

Geoff Hayes
Geoff Hayes 2014-6-24
From your code, grab the quivergroup handle that is returned from the quiver function
h = quiver(T,Y, scale.*DT, scale.*DY);
You can change the size (width) of the arrows from its default value of 0.5 as follows
set(h,'LineWidth',2)
Note that you could also do this at the line quiver(T,Y, scale.*DT, scale.*DY,'LineWidth',2);.
Try this and see what happens!

类别

Help CenterFile Exchange 中查找有关 Data Distribution Plots 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by