- Normalized Units: The "Units", "normalized" argument is added to the "textarrow" annotation. This ensures the arrow position is specified relative to the figure window, keeping it fixed during zoom.
- Head position: The head coordinates ("xh" and "yh") are set as fixed values between 0 and 1 (normalized units).
- Tail position: The tail coordinates ("xt" and "yt") are defined using data coordinates. You can adjust these values based on your data to position the tail appropriately.
Lock position of text arrow on figure
7 views (last 30 days)
Show older comments
From the figures attached, you can see the problem I'm having.
How would i code for the text arrow to have a locked position, where it would shrink and enlarge as the figure is zoomed out and in respectively. Or at least have the head be stuck at a fixed x&y position
Code I'm currently using, I tried the normal textarrow code, and attempted to fix the problem with the following:
%Red labelled rectangle highlighting the area of interest
rectangle ('position', [105 -7 1 1], 'edgecolor', 'r');
text(104.9,-12, 'Area of Interest','Color','red','FontSize',10,'FontWeight','bold');
% tail
[xt yt] = ds2nfu(105 ,-20);
% head
[xh yh] = ds2nfu(105.643, -6.653);
annotation('textarrow', [xt xh],[yt yh], 'String' , 'Panaitan Island');
0 Comments
Answers (1)
Abhinaya Kennedy
on 9 May 2024
Hi Ishaan,
The code you provided uses data coordinates to specify the position of the text arrow. This means that the arrow will move and resize when you zoom in and out of the figure.
To fix this and have the text arrow maintain a locked position (head fixed) with the tail resizing based on the zoom level, you can use normalized units instead. Here's the modified code:
% Red labelled rectangle highlighting the area of interest
rectangle('position', [0.7 0.2 0.1 0.1], 'edgecolor', 'r');
text(0.69, 0.18, 'Area of Interest', 'Color', 'red', 'FontSize', 10, 'FontWeight', 'bold');
% Head position (fixed in normalized units)
xh = 0.8;
yh = 0.3;
% Tail position (adjustable based on data coordinates)
xt = 0.75;
yt = -0.1;
% Create text arrow with normalized units and adjustable tail
annotation('textarrow', [xt xh], [yt yh], 'String', 'Panaitan Island', 'Units', 'normalized');
Here,
This approach will keep the text arrow's head fixed while the tail resizes based on the data coordinates and zoom level. Heres a link to MathWorks documentation that demonstrates the same in an example: https://in.mathworks.com/help/matlab/ref/annotation.html
0 Comments
See Also
Categories
Find more on Interactive Control and Callbacks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!