Clear Filters
Clear Filters

Text position based on another Text

2 views (last 30 days)
I need to plot a vertical text (text 2) next to a horizontal text (text 1), if I use the the same position that I used to plot text1 they become superimposed.
I've tried to infer the second position based on the Extent property of text1, but I can't get the units right:
rec = txt.Extent;
pos_x = rec(1) + rec(3);
pos_y = rec(2);
I've tried also with units in pixels but that didn't worked either.
The figure is a time series, I couldn't find any convertion function.
From the documentation it seems to me that the Extent values are normalized but I dont know if anything else is needed to display the second position on those coordinates.
Any pointers?? (hehe...get it?)

Accepted Answer

Star Strider
Star Strider on 12 Aug 2020
I am not certain what the problem is.
Try something like this:
x = 1:20;
y = 10*sin(pi*x/5);
plot(x, y)
vtext = compose('%s\n%s\n%s\n','Vertical','text','example');
htext = compose('%s', 'Horizontal text example');
text(6,5,vtext,'VerticalAlignment','middle', 'HorizontalAlignment','right')
text(6,5,htext, 'HorizontalAlignment','left')
juan pedrosa
juan pedrosa on 12 Aug 2020
The problem happens when both texts are centered horizontally, I see that your solution is better and I'll use it, but I wonder, shouldn't I be able to infer based on the extent position of text1 the position for text2?
It shouldn't need to be more complicated than my code right? If not then maybe I misunderstood the documentation or how the relative coordinates are calculated.
Star Strider
Star Strider on 12 Aug 2020
If they are both centered horizontally, I would use 'VerticalAlignment','top', for the vertical one, and 'VerticalAlignmment','bottom' for the horizontal one.
In my code, the text calls then become:
text(6,5,vtext,'VerticalAlignment','top', 'HorizontalAlignment','center')
text(6,5,htext,'VerticalAlignment','bottom', 'HorizontalAlignment','center')
When I ran that just now (with the rest of my code unchanged), it appeared to produce the desired result, at least as I understand what you want. Note that the coordinates and 'HorizontalAlignment' name-value pair arguments are the same for both text calls, with only the 'VerticalAlignment' name-value pair arguments different.

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!