How to display the coordinate of the point in the figure
Show older comments
The problem is similar to this but I have an x-axis that decreases from 1 to 0 at increments of 0.1 https://www.mathworks.com/matlabcentral/answers/89104-how-to-display-the-coordinate-of-the-point-in-the-figure
for k=1:numel(x)
text(x(k),y(k),['(' num2str(x(k)) ',' num2str(y(k)) ')'])
end
I also need to adjust the window for this but axis won't work because it only applies for increases x-values.
Can someone advise me how to accommodate for these changes?
Answers (3)
T
on 24 Jan 2016
0 votes
Walter Roberson
on 24 Jan 2016
0 votes
The labels are being put into the proper place on the graph. Your third point is at y = -3.something which happens to be outside the range of what you are displaying. That is not the fault of text(), that is because you have told it coordinates that are not on your graph.
5 Comments
T
on 24 Jan 2016
Walter Roberson
on 24 Jan 2016
That code does not produce the plot you show above, not even if you set(gca,'xdir','reverse') to reverse the X axes. The upper line that is plotted in your image is about 5 units lower than the actual y2(y1(f)) value. Meanwhile the third text label that is to the upper right and outside the graph appears to be at the correct y2(y1(f)) value.
Side note: you can make your plotting shorter, using just a single statement.
h = plot( f , y1(f), '--o', f, y2(y1(f)), '--o' )
I would, by the way, not call the result ax1 as the result of plot() is line objects, not axes objects.
T
on 25 Jan 2016
Walter Roberson
on 25 Jan 2016
clf
f = [ 0.99 , 0.77, 0.55, 0.33 ];
y1 = @(f)(-14.2 +1000.0) * f.^(1.02 - 1.0) - 1000.0;
y2 = @(newvariable) (1.02 * (newvariable +1000.0) - 1000.0);
y1f = y1(f);
y2y1f = y2(y1f);
y1_0 = fzero(y1,[0,realmax]);
y2y1_0 = fzero(@(x) y2(y1(x)),[0,realmax]);
h = plot( f , y1f, '--ob', f, y2y1f, '--ok', y1_0, 0, '*r', y2y1_0, 0, '*g' );
set(gca, 'xdir', 'reverse')
XY = [f(:), y1f(:); f(:), y2y1f(:); y1_0, 0; y2y1_0, 0];
labels = cellstr([num2str(XY(:,1)),repmat(', ',size(XY,1),1),num2str(XY(:,2))]);
text(XY(:,1), XY(:,2), labels);
legend(h, {'y1(x)', 'y2(y1(x))', 'y1(x) = 0', 'y2(y1(x)) = 0'}, 'location', 'southwest');
T
on 25 Jan 2016
Afshin Aghayan
on 8 Oct 2019
0 votes
you can use this code for displaying any data in the form of [x, y, f(x,y)] or data with coordinate
Categories
Find more on Graphics Performance 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!