How can I have automatic marker shapes for multiple curves
55 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Antoine Boissinot
am 23 Aug. 2023
Kommentiert: Voss
am 1 Sep. 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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 23 Aug. 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 Kommentare
Weitere Antworten (1)
Dyuman Joshi
am 23 Aug. 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.
Siehe auch
Kategorien
Mehr zu Labels and Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!