フィルターのクリア

How to show selected points and connect first point to last point?

18 ビュー (過去 30 日間)
Mariam Shahab
Mariam Shahab 2022 年 9 月 26 日
コメント済み: Mariam Shahab 2022 年 10 月 1 日
Hi all,
I have the following code:
[x,y]=ginput(); % user can chose any number of coordinates by clicking on graph
plot(x,y);
Is there a way that when the user clicks in the graph, the selected points are marked (to show the selected points)?
Lastly, I want the first point to connect to the last point, but I am not sure how to do this.
I will appreaciate if someone can help me out with my two inquiries. Many thanks!
  2 件のコメント
Geoff Hayes
Geoff Hayes 2022 年 9 月 26 日
@Mariam Shahab - if you want the last point to be connected to the first point, then the easiest way to do this might be to append the first points' x and y coordinates to the x and y arrays respectively. To show which points, have been selected, just change the call to plot so that you incoude a shape at that point. For example
plot([x ; x(1)],[y ; y(1)], 'bo-');
might do what you want.
Mariam Shahab
Mariam Shahab 2022 年 9 月 26 日
Thank you. This was what I was looking for.

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

採用された回答

Daksh
Daksh 2022 年 9 月 29 日
Hi
It is my understanding that you wish to view marked points in real time as the user selects multiple points in a plot using "ginput" and you want all points connected, all the way from the first to the last in order through a line.
The following code illustatres how to achieve the same; I've assumed you know the number of points to be marked beforehand (I've taken 5 points in this case) and I've also put the number tag string on each marked point to depict the order of point marking:
clear all
close all
%assuming you want to plot 5 points for example
n=5;
a=zeros(n,1);
b=zeros(n,1);
%running a loop over all selected points
for i=1:5
%allowing user to click a point to choose, x,y store the coordinates
[x,y] = ginput(1);
%text depiction for each point, with "i" as the point marker
h1 = text(x,y,int2str(i), ...
'HorizontalAlignment','center', ...
'Color', [1 0 0], ...
'FontSize',8);
a(i)=x;
b(i)=y;
end
hold on
%plotting a line between all points
plot([a ; a(1)],[b ; b(1)], 'b-');
hold off
Hope it helps

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by