注释一个箭头在一块。
21日视图(30天)
显示旧的评论
接受的答案
1月
2018年3月2日
编辑:1月
2018年3月2日
参见:
//www.tatmou.com/matlabcentral/answers/346297-how-to-draw-an-arrow-using-non-normalized-coordinates
搜索在这个论坛和FileExchange是个好主意。
更多的答案(2)
Nirjhar库马尔
2019年4月2日
改编
马库斯yoder)
代码
https://in.mathworks.com/matlabcentral/answers/346297-how-to-draw-an-arrow-using-non-normalized-coordinates
。
打开一个图,通过x的位置数据的以下功能
函数obj = dataArrow2 (xpos)
%这个函数将画一个箭头指定x数据位置。
%,
%的阴谋(0:0.001:10罪(0:0.001:10))
% dataArrow2 ((3000 6000 9000))
处理= findall (0,“类型”,“图”);
为fig_cnt = 1:1:长度(处理)
图(处理(fig_cnt,1))
ax =处理(fig_cnt, 1);
% hLeg = findobj(处理(fig_cnt, 1)、“类型”、“传奇”);
%设置(hLeg,“可见”,“关闭”)
axObjs = findobj(处理(1,1),“类型”,“轴”);% axObjs = ax.Children;
dataObjs = axObjs.Children;
oldunits =得到(axObjs,“单位”);
集(axObjs,“单位”,“英寸”);
axpos = axObjs.Position
集(ax,“单位”,oldunits);
oldunits =得到(处理,“单位”);
集(处理,“单位”,“英寸”);
figpos = handles.Position
集(处理,“单位”,oldunits);
%设置(hLeg,“可见”,“关闭”)
%得到轴绘制区域的数据单位
ax_xlim = ax.CurrentAxes.XLim;
ax_ylim = ax.CurrentAxes.YLim;
ax_per_xdata = axpos (3)。/ diff (ax_xlim);
ax_per_ydata = axpos (4)。/ diff (ax_ylim);
为我= 1:1:长度(dataObjs)
Xdata = dataObjs .XData;
Ydata = dataObjs .YData;
%这是figure-relative
为j = 1:1:长度(xpos)
Xpixels = (Xdata ([xpos (j) xpos (j) + 1])——ax_xlim (1))。* ax_per_xdata + axpos (1);
%如果设置(gca、“xdir”“反向”)使用
% Xpixels = (Xdata ([pos pos + 1])——ax_xlim (1))。* ax_per_xdata + axpos (3) + axpos (1);
Ypixels = (Ydata ([xpos (j) xpos (j) + 1])——ax_ylim (1))。* ax_per_ydata + axpos (2);
%如果设置(gca、“ydir”“反向”)使用
% Ypixels = (Ydata ([pos pos + 1])——ax_ylim (1))。* ax_per_ydata + axpos axpos (2) + (4);
注释(“箭头”Xpixels / figpos (3), Ypixels / figpos (4));
结束;
obj = 1;
结束
结束;