Best Text/number location on the plot

Hello,
I want to generate the values of x on each subplot and i was wondering if there is a way to get the text or numbers placed in 'best' location than specifying (x,y) coordinates for the text location.
x(1) on plot 1
x(2) on plot 2 etc inside a forloop
thank you
dan

 Respuesta aceptada

One approach is to use the legend position after using the 'Location','best' name-value pair, and then interpolating the relative values to the relevant ‘x’ and ‘y’ values (and adding a ‘fudge factor’ if necessary).
x = 1:10;
y = randn(2,size(x,2));
figure
plot(x, y)
Ax = gca;
hl = legend('Location','best');
pos = hl.Position;
txtx = interp1([0 1],xlim,pos(1)*1.1);
txty = interp1([0 1],ylim,pos(2)*1.1);
delete(hl)
text(txtx,txty,'Hi there!')
Experiment to get the desired results.
.

4 comentarios

danel james
danel james el 30 de Jul. de 2022
Great! I have to accept this answer :)
I generated numbers on each plot(decimal numbers)
But I want to get 2 decimals after the decimal point. Like 3.12 than 3.12345 etc on each plot Thank you again
Star Strider
Star Strider el 30 de Jul. de 2022
As always, my pleasure!
I am not certain what you are asking, hwoever the round function should do that. (The original version rounded only to the nearest integer, however since R2014b, also to a fixed number of decimal places. If you have the earlier version, it is straightforward to create a version of it to round to a fixed number of decimal places.)
.
danel james
danel james el 30 de Jul. de 2022
Not really! i want to prnit time for each particular plot and on top of each plot should be the corresponding time. But its howing me time has 4 digits after decimal place.
round(t,3) is not working at all
Star Strider
Star Strider el 31 de Jul. de 2022
This is new, and not entirely well-described.
With respect to the text object, perhaps:
text(txtx,txty, sprintf('Time %.2f', time))
assuming here that ‘time’ is a scalar double. If it’s something else, I need to know. See the documentation on sprintf for details.

Iniciar sesión para comentar.

Más respuestas (1)

Nikolas
Nikolas el 5 de Jun. de 2024

0 votos

Another way that may be more intuituve is to find the max of the x any y values and multiply them by a percentage for the location. for example: text(max(xdata)*.10,max(ydata)*0.9,'Heat Exchanger effectiveness'); Which is the equivilant to northwest location

Categorías

Etiquetas

Preguntada:

el 30 de Jul. de 2022

Respondida:

el 5 de Jun. de 2024

Community Treasure Hunt

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

Start Hunting!

Translated by