Multiple lines in one graph
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Respuesta aceptada
Stephen23
el 10 de Mzo. de 2018
Editada: Stephen23
el 10 de Mzo. de 2018
Here is one solution using NaN's to mask out parts of the lines, and plotting them for each thickness. For this to work it is also required to interpolate the data (try it without to see the difference). I don't claim that this is very efficient, but for a small number of lines and nodes it will work.
Xi = [1;2;3;4;5;6];
Yi = [1,2,2,2,1,1;2,2,2,2,3,4;3,3,3,3,3,4;4,3,3,3,4,5;5,5,2,2,4,4].';
plot(Xi,Yi,'LineWidth',3)
hold on
ylim([0,6])
N = numel(Xi);
Xo = interp1(1:N,Xi,1:0.5:N);
Yo = interp1(1:N,Yi,1:0.5:N);
D = bsxfun(@minus,Yo,permute(Yo,[1,3,2]))==0;
D = D(1:end-1,:,:) & D(2:end,:,:);
D = convn(D,[1;1])>0;
S = sum(D,3);
for k = 2:max(S(:))
Yo(S<k) = NaN;
plot(Xo,Yo,'k','LineWidth',k*3)
end
Giving:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/179916/image.png)
You can adjust the colors and line thickness as you see fit. With some effort you could simplify and make it more efficient (e.g. remove columns with all NaN, or use indexing to extract only the non-NaN portions of M and plot only them).
0 comentarios
Más respuestas (1)
elham kreem
el 9 de Mzo. de 2018
let
y = 1:2:40
x1=4:2:43
x2 = 8:3:66
x3 = 1:4:80
figure ;
plot( x1 , y , ' r ' , x2 , y , ' b--o' , x3,y , 'g-*')
0 comentarios
Ver también
Categorías
Más información sobre Line Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!