Lock position of text arrow on figure

조회 수: 7 (최근 30일)
Ishaan Chauhan
Ishaan Chauhan 2021년 2월 17일
답변: Abhinaya Kennedy 2024년 5월 9일
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');

답변 (1개)

Abhinaya Kennedy
Abhinaya Kennedy 2024년 5월 9일
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,
  1. 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.
  2. Head position: The head coordinates ("xh" and "yh") are set as fixed values between 0 and 1 (normalized units).
  3. 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.
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

카테고리

Help CenterFile Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by