How to plot data in vertical lines

I want to produce a plot like the one drawn below:
Where I have two values of y for each value of x:
x=[1 2 3 4]
y1=[3 2 3 1]
y2=[4 6 7 3]
What is the best strategy to accomplish this?
Right now I believe the only way to achieve this result by doing something like the folowing piece of code.
However this is not pratical, and I'll have to write some more code, including some for loops, to deal with the original data. Costumizing all the line properties seems a painfull task as well.
plot([1 1],[3 4 ])
hold on
plot([2 2],[2,6])
plot([3 3],[3,7])
plot([4 4],[1,3])
xlim([0,5])

1 comentario

You can use for loop. The colors of the line will be chosen at random, so there's a chance they might be similar or overlap with each other.
x=[1 2 3 4];
y1=[3 2 3 1];
y2=[4 6 7 3];
y=[y1;y2]';
for i=1:numel(x)
plot([x(i) x(i)],y(i,:),'o-')
hold on
end
xlim([0 5])
ylim([0 8])

Iniciar sesión para comentar.

 Respuesta aceptada

Matt J
Matt J el 20 de Oct. de 2022
However this is not pratical
Why not? It can certainly be shortened from what you have, though:
x=[1 2 3 4];
y1=[3 2 3 1];
y2=[4 6 7 3];
h=plot([x;x],[y1;y2]); axis padded
set(h,'Marker','o')

3 comentarios

Tomas Carvalho
Tomas Carvalho el 20 de Oct. de 2022
How would you suggest that I can collor each line according to another variable?
For instances, the lines with length bigger than a certain value are green, and smaller than that are red.
Matt J
Matt J el 20 de Oct. de 2022
Editada: Matt J el 20 de Oct. de 2022
Use the line handles:
x=[1 2 3 4];
y1=[3 2 3 1];
y2=[4 6 7 3];
lengths=y2-y1;
h=plot([x;x],[y1;y2],'-o'); axis padded
set(h(lengths>2),'Color','green')
set(h(lengths<=2),'Color','red')
Tomas Carvalho
Tomas Carvalho el 20 de Oct. de 2022
Thanks!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Productos

Versión

R2021b

Preguntada:

el 20 de Oct. de 2022

Comentada:

el 20 de Oct. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by