Bạn có thể lạm dụng quiver
, bằng cách này bạn không cần phải đối phó với các đơn vị con số bình thường không khéo tay bằng cách sử dụng annotation
drawArrow = @(x,y) quiver(x(1),y(1),x(2)-x(1),y(2)-y(1),0)
x1 = [10 30];
y1 = [10 30];
drawArrow(x1,y1); hold on
x2 = [25 15];
y2 = [15 25];
drawArrow(x2,y2)
quan trọng là lập luận 5th của quiver
: giúp chặn đứng một tỉ lệ khác mặc định, như chức năng này được thực sự sử dụng để vẽ các lĩnh vực vector. (Hoặc sử dụng poperty giá trị cặp 'AutoScale','off'
)
Bạn cũng có thể thêm tính năng bổ sung:
drawArrow = @(x,y,varargin) quiver(x(1),y(1),x(2)-x(1),y(2)-y(1),0, varargin{:})
drawArrow(x1,y1); hold on
drawArrow(x2,y2,'linewidth',3,'color','r')
Nếu bạn không thích các đầu mũi tên, bạn cần phải quay trở lại chú thích và điều này Câu trả lời là may hữu ích:
How do I change the arrow head style in quiver plot?
Một số nhận xét về nhận xét:
Kích thước đầu mũi tên có thể được điều chỉnh với thuộc tính 'MaxHeadSize'
, không phù hợp.Các giới hạn trục cần phải được đặt sau
x1 = [10 30];
y1 = [10 30];
drawArrow(x1,y1,{'MaxHeadSize',0.8,'Color','b','LineWidth',3}); hold on
x2 = [25 15];
y2 = [15 25];
drawArrow(x2,y2,{'MaxHeadSize',10,'Color','r','LineWidth',3}); hold on
xlim([1, 100])
ylim([1, 100])
The solution by sed có vẻ là tốt nhất, bởi vì nó cung cấp đầu mũi tên có thể điều chỉnh.
tôi chỉ muốn quấn nó vào một hàm:
function [ h ] = drawArrow(x,y,xlimits,ylimits,props)
xlim(xlimits)
ylim(ylimits)
h = annotation('arrow');
set(h,'parent', gca, ...
'position', [x(1),y(1),x(2)-x(1),y(2)-y(1)], ...
'HeadLength', 10, 'HeadWidth', 10, 'HeadStyle', 'cback1', ...
props{:});
end
mà bạn có thể gọi từ kịch bản của bạn như sau:
drawArrow(x1,y1,[1, 100],[1, 100],{'Color','b','LineWidth',3}); hold on
drawArrow(x2,y2,[1, 100],[1, 100],{'Color','r','LineWidth',3}); hold on
đem lại cho bạn kết quả khá tương đồng:
sử dụng 'annotation' –
khi sử dụng "chú thích ('mũi tên', x, y)" Im nhận lỗi... ? – user3668129
bạn đang sử dụng nó như thế nào? bạn nhập gì Dù sao có 2 câu trả lời dưới đây ... –