How can we Plot a line passing through two points?

630 views (last 30 days)
Emmanuel
Emmanuel on 29 May 2014
Commented: Peter Hansen on 17 Aug 2021
I am given two points (x1,y1) and (x2,y2). How can I plot a line that will pass through these two points and extend till the x and y axis?

Accepted Answer

David Sanchez
David Sanchez on 29 May 2014
If you want a line connecting A and B:
A = [2 3];
B = [4 5];
plot(A,B,'*')
axis([0 10 0 10])
hold on
line(A,B)
hold off
If you want a line through A and B that extend to the plt limits:
xlim = get(gca,'XLim');
m = (B(2)-B(1))/(A(2)-A(1));
n = B(2)*m - A(2);
y1 = m*xlim(1) + n;
y2 = m*xlim(2) + n;
hold on
line([xlim(1) xlim(2)],[y1 y2])
hold off
  5 Comments
Ronaldo Lim
Ronaldo Lim on 27 Nov 2020
excuse me, why do you use "vertival shift from [0,0]" . What's that ?

Sign in to comment.

More Answers (1)

Mahesh
Mahesh on 29 May 2014
A = (x1,y1); B = (x2,y2);
plot(A,B)
  4 Comments
Peter Hansen
Peter Hansen on 17 Aug 2021
First of all, you need to understand that mathlab is made for matrixes and arrays, to easy big data calculation.
So all data is ussaly needed in matrix or arrays.
Therfor when ploting points, you dont plot single points like A and B but and array of x-cordinates of A and B and a array of y-cordinates of A and B.
maybe this will claryfy it for you :)
figure(2); clf(2); hold on; axis([0 10 0 10]); axis padded
% If Point A is in x=1 and y=2
% If Point B is in x=-3 and y=4
% If Point C is in x=-6 and y=-4
x_array = [1 -3 -6];
y_array = [2 4 -4];
plot(x_array(1),y_array(1),'*') % A
plot(x_array(2),y_array(2),'*') % B
plot(x_array(3),y_array(3),'*') % C
% OR to plot all points at once uncoment below line insted, and remve ",'B','C'" from legend
% plot(x_array,y_array,'*') % A, B and C
line(x_array,y_array) % line
legend('A','B','C','line','Location','BestOutside') hold off

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!