Problem by drawing a line on axes

3 ビュー (過去 30 日間)
Ouael Chkoundali
Ouael Chkoundali 2019 年 1 月 10 日
コメント済み: Adam Danz 2019 年 1 月 10 日
Hallo,
I want to draw a vertical line on an axes on GUI after selecting a point through which the line passes using a callback button.
I have 2 Problems:
1- I can choose a point that is outside the axes.
2- After clicking with the mouse to choose the point, the drawn line doesn't pass through the point and it is not vertical.
Here is my code:
% --- Executes on button press in draw.
function draw_Callback(hObject, eventdata, handles)
% hObject handle to draw (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%h = imline(gca);
axes(handles.axes)
[x,y] = ginput(1);
h = line ([x,y], ylim);

採用された回答

Adam Danz
Adam Danz 2019 年 1 月 10 日
編集済み: Adam Danz 2019 年 1 月 10 日
There are two errors.
First, you're getting a diagonal line because the first input of line() contains all x-values but you're entering [x,y].
Second, there's no need to use the y-coodinate of the ginput().
Here's what you want:
line([x,x], ylim)
In addition to this, I suggest using the asix handle to ylim in case a different axis is current.
line([x,x], ylim(h)) %h is the handle to your gui axis.
  2 件のコメント
Ouael Chkoundali
Ouael Chkoundali 2019 年 1 月 10 日
Thanks a lot Adam
Adam Danz
Adam Danz 2019 年 1 月 10 日
Glad it all worked out!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGraphics Object Programming についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by