# How can i exactly click on a point that has drawed on a plot using ginput ?

4 views (last 30 days)
Le Dung on 11 Jan 2019
Commented: Jan on 4 Nov 2019
Hello!
My problem is:
I have had some points on a figure use plot command with this command lines:
figure;
hold on
x = [1 2 3 4 5]
y = [7 8 9 10 11]
for i = 1:5
plot(x(i),y(i),'*','MarkerSize',12,'Color','r')
end
% Retrieve coordinate of points
[xx,yy] = ginput(length(x))
Now, I want to use ginput() or getPoint() to click on anypoint in the figure.
But, It is difficult to click on a point exxactly.
For example, i want to click on first point that has x = 1 and y = 7. But, when i trying to click on it to retrieve its coordinate, what matlab returns is that i expect (x = 1,y = 7)..
How can i do?????
Thank you so much!
Le Dung on 11 Jan 2019
Edited: Le Dung on 11 Jan 2019
yes.
if i draw a line that contains two points, for example, (4,5) and (10,5). that means i created a horizontal line has 6 units ( for example meter). but if i click on point (4.05,5.1) and point (10.07,5.02) when use ginput(), for example, so, the line that created is having a difference in length from the line i want to create.
and, why do i want to do this?
yes. actually, i‘m building a GUI.
i have two GUIs. main GUI and subGUi. there is a axes on main GUi (gui1) and there are edittext and push button on sub gui( gui2).
when i click on push button on gui2, matlab will draw two points on axes on GUI1 with data (coordinates of points) gets from edittext. and then, i want to draw a line contains two points that drawed previously on axes.
i mean i want to use ginput() click on point 1 and then click on point 2. after click on point 2, matlab will draw a line contains two points
do you understand that i wrote.
because my english is not well

Jan on 11 Jan 2019
Edited: Jan on 11 Jan 2019
Considering my comment, my answer is:
You can't. You would need a massive zooming to try to do so. Remember, that [1.000000000000000, 7.000000000000000] is not necessarily represented by a pixel on the screen, but selecting a pixel is the maximum achievable resolution.
The solution is to adjust your needs: What about finding the point nearest to the selected pixel?
What about using the ButtonDownFcn of the drawn points instead of ginput?
Jan on 4 Nov 2019
The ButtonDownFcn is a property of the object e.g. created by plot or line. Example:
AxesH = axes;
LineH = line(1:10, rand(1,10), 'ButtonDownFcn', {@myCallback, AxesH});
function myCallback(LineH, EventData, AxesH)
disp(AxesH.CurrentPoint)
end