tags:

views:

35

answers:

3

I need help in plotting lines between points. Suppose, I start with creating 6 random points-

x = rand(6,1);
y = rand(6,1);

So my points are (x(1),y(1)), (x(2),y(2)), (x(3),y(3)), (x(4),y(4)), (x(5),y(5)), (x(6),y(6))

Now I want to draw straight lines between the points 1 & 5, 2 & 6, 3 & 4 and plot them in a single diagram. So I get 3 straight lines.

Any help would be highly appreciated.

A: 

Try

plot([x(1);x(5)],[y(1);y(5)]);
line([x(2);x(6)],[y(2);y(6)]);
line([x(3);x(4)],[y(3);y(4)])

plot empties the graph before plotting. line does not.

KennyTM
+1  A: 

Here are two ways to do this:

First way, using hold on. These lines are separate, i.e if you turn one red, the others will stay blue.

%# plot the first line
plot([x(1);x(5)],[y(1);y(5)]);

hold on %# this will prevent the previous plot from disappearing

%# plot the rest
plot([x(2);x(6)],[y(2);y(6)]);
plot([x(3);x(4)],[y(3);y(4)]);

Second way, making use of the fact that NaN does not get plotted. These lines are grouped, i.e. if you turn one red, all will be red.

%# create array for plotting
xy = NaN(8,2);

%# fill in data
xy([1 2 4 5 7 8],1) = x([1 5 2 6 3 4]);
xy([1 2 4 5 7 8],2) = y([1 5 2 6 3 4]);

%# plot
plot(xy(:,1),xy(:,2))
Jonas
+1  A: 

You can do this with one call to PLOT. If you reshape your x and y data into matrices with each column containing a set of coordinates for one line, then PLOT will draw a different colored line for each column:

index = [1 2 3; 5 6 4];   %# The index to reshape x and y into 2-by-3 matrices
plot(x(index),y(index));  %# Plot the lines
gnovice

related questions