# plot graphic with different color

4 views (last 30 days)
Hi,
I have a data set made by two vector x and y.
I need to plot it to obtain an effect like the one attached.
So i need the lines to be green if y >= 0,
and red elsewhere.
Can anyone help me?

#### 1 Comment

Bob Nbob on 14 Feb 2020
If you have a pair of vectors, x and y, how are you getting lines? Are you using the x and y values of corresponding elements in the vectors to make cartesian coordinates? Are you connnecting these coordinates to each other or to a common point?
Do you have any code that you have written out so far?

fred ssemwogerere on 14 Feb 2020
Hello, with logical indexing, you could create two separate pairwise sets of data, with one set comprised of plots of x versus y-data greater than zero, and another set comprised of x and y-values less than zero. These can then be plotted on the same figure but with different 'color' properties.

#### 1 Comment

fred ssemwogerere on 14 Feb 2020
Something like:
% Assuming your 'x' and 'y' vectors as;
x=[3 2 4 3 5 1];y=[-1 3 -5 2 -3 6];
% For y>0, use logical indexing to create separate set, while also choosing the corresponding values in 'x'
x1=x(y>0);y1=y(y>0);
% Do the same for y<0
x2=x(y<0);y2=y(y<0);
% Go ahead and plot (assuming you are using the 'plot' function)
figure
handl1=plot(x1,y1,'-r');
hold on
handl2=plot(x2,y2,'-g');
hold off

Bob Nbob on 14 Feb 2020
If you're using the plot command, it is relatively easy to define a different color for a plot. Setting the condition where this color applies is more difficult, and requires we have a better understanding of your application to answer.
plot(x,y,'g'); % Plot the x and y values as cartesian coordinates with a green line connecting them.