当将Parent = gca的annotation('arrow')放大时,可能存在bug

12次浏览(最近30天)
Stefan Rickli
Stefan Rickli 2017年3月22日
评论道: Leptoceratops2020年5月15日
注释('箭头')中似乎有一个bug,当它的'Parent'被设置为一个轴对象时,即。甘氨胆酸的”。)我从a 如何在Stackoverflow
AFAIK可以使用'Position'属性来指定x0和方向,或者通过设置向量'X'和'Y'来指定起始和结束点——在图形的坐标系统中,这是非常方便的。
Matlab还会在我们使用平移和缩放工具时移动注释。
问题 只要我 放大到一个情节 使网格线之间的delta约为0.05。然后 箭头提示 (三角形) 和轴 (线) 开始独立 可以看到截图(红色箭头有其“父”对象设置为轴,蓝色的母公司是图对象,我使用一个坐标变换计算正确的在图坐标,但是注意如果这个箭头的坐标得到外部情节的限制……丑……)。减少箭头的长度没有帮助。这种分离保持不变。
我运行Matlab R2016b/Win。你觉得这是bug吗?
使用下面的代码来调整箭头对象的行为。简单地使用平移和缩放工具在情节。
图;
h_axis =次要情节(1 1 1);
%箭头,它的父对象是子图(轴对象)。可以使用坐标
直接%。
x_ax = [0.3, 0.5];
y_ax = [0.5, 0.5];
h_arrow_axis =注释(“箭头”x_ax y_ax,“颜色”, (1,0,0));
集(h_arrow_axis,“父”, h_axis);
%箭头,其父箭头是数字。需要变换它的坐标
%。
x_fig = [0.7, 0.5];
y_fig = [0.5, 0.5];
[x_t, y_t] = transform_coordinates (h_axis、x_fig y_fig);
h_arrow_figure =注释(“箭头”x_t y_t,“颜色”[0, 0, 1]);
%创建回调以启用图形箭头的重新定位
p =锅;
p.ActionPostCallback = {@pan_zoom_callback_update_arrow, h_axis、h_arrow_figure x_fig, y_fig};
z =放大;
z.ActionPostCallback = {@pan_zoom_callback_update_arrow, h_axis、h_arrow_figure x_fig, y_fig};
函数pan_zoom_callback_update_arrow (~, ~, axis_handle arrow_handle, x, y)
[x_t, y_t] = transform_coordinates (axis_handle, x, y);
arrow_handle。X = x_t;
arrow_handle。Y = y_t;
结束
函数[xaf, yaf] = transform_coordinates (h_axis, x, y)
%摘录自DS2NFU
%将数据空间单位转换为标准化的数字单位。
米歇尔·赫希著
% %得到限制
axun =得到(h_axis,“单位”);
集(h_axis,“单位”“归一化”);
axpos =得到(h_axis,“位置”);
axlim =轴(h_axis);
axwidth = diff (axlim (1:2));
axheight = diff (axlim (3:4));
%转换数据
Xaf = (x-axlim(1))*axpos(3)/axwidth + axpos(1);
Yaf = (y-axlim(3))*axpos(4)/axheight + axpos(2);
%恢复轴单位
集(h_axis,“单位”axun)
结束

接受的答案

1月
1月 2017年3月22日
错误
问题可以复制在我的R2016b/Win使用以下代码:
图;
h_axis =轴;
h_arrow_axis =注释(“箭头”[0.3, 0.5], [0.5, 0.5],“颜色”, (1,0,0));
集(h_arrow_axis,“父”, h_axis);
然后放大。
5个评论

登录评论。

更多的答案(0)

s manbetx 845

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!