How can I have automatic marker shapes for multiple curves
28 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Antoine Boissinot
el 23 de Ag. de 2023
Comentada: Voss
el 1 de Sept. de 2023
I have N curves to plot and some of the points are exacty on top of one another. Since Matlab automatically choose the default colors of the curves you plot, I can't see the points under the other. If there was a way to have automatic default marker shapes, then I would be able to see the points under. The thing is the number of curves is an input I can vary, that's why I can't simply specify the shape of the markers for each curve.
0 comentarios
Respuesta aceptada
Walter Roberson
el 23 de Ag. de 2023
The relevant documentation is at https://www.mathworks.com/help/matlab/ref/matlab.graphics.axis.axes-properties.html . Unfortunately what it implicitly indicates is, NO, there is no automatic marker choice.
What there is at the moment is LineStyleOrder, and the new (R2023a) LineStyleCyclingMethod, and ColorOrder, and a couple of related properties. That is, you can automatically cycle though line styles and you can cycle through colors; as of R2023a you can set it to cycle through both at the same time (each new line moves on to the next line style and next color).
When there are a number of lines close together, unfortunately line style and color are not always sufficient and you need markers too, but at present there is no facility for automatically cycling markers.
0 comentarios
Más respuestas (1)
Dyuman Joshi
el 23 de Ag. de 2023
"The thing is the number of curves is an input I can vary, that's why I can't simply specify the shape of the markers for each curve."
That can be taken care of
makingPlots(16)
axis([0 11 -0.5 1.5])
%Making N plots
function makingPlots(N)
%Define markers to be used
markers = {'o','+','*','.','x','s','d','^','v','>','<','p','h'};
num = numel(markers);
%Random array with N columns
arr = rand(10,N);
figure
for k=1:N
val=rem(k,num)+num*(rem(k,num)==0);
plot(arr(:,k),'Marker',markers{val})
hold on
end
end
Also, instead of using the val I defined above, you can use
%1
num-rem(k,num)
%2
rem(k,num)+1
%3
randi(num)
And many other options. You can choose whatever order you want to use.
Ver también
Categorías
Más información sobre Labels and Annotations 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!