How to plot a different symbol and symbol line for each plot inside this loop?

4 views (last 30 days)
juan sanchez on 27 Nov 2021
Commented: DGM on 28 Nov 2021
for j=1:3
symbolList = ['o', 'x', 's', 'd','.', '^', 'v', '>', '<', '*','p','h','+'];
symbol = sprintf('r%s-', symbolList(mod(j-1,length(symbolList))+1));
plot(a(1,:),b(1,:).*25.4, symbol, 'LineWidth', 0.1);
hold on
plot(c(1,:),d(1,:).*25.4, symbol, 'LineWidth', 0.1);
hold on
plot(e(1,:),f(1,:).*25.4, symbol, 'LineWidth', 0.1);
hold on
end %for 3 plots
juan sanchez on 28 Nov 2021
Thank you, I wanted to numerically add in ascendinr order the next subsequent symbol for the 1st, 2nd and 3rd plots but I was confused. The accepted answer herein explains it better.

DGM on 28 Nov 2021
Edited: DGM on 28 Nov 2021
I'm not sure why you're using a loop to create the same plots three times with different symbols. Are there other columns (of a,b,c etc) that need to be plotted as the loop increments?
Alternatively, do you mean to simply plot each of these three things once, but automatically using a unique symbol for each?
If that's the case, and your data doesn't lend itself to indexing, then you might consider turning symbol into a function. That way you can just do something like this:
symbolList = ['o', 'x', 's', 'd','.', '^', 'v', '>', '<', '*','p','h','+'];
symbol = @(k) sprintf('r%s-', symbolList(mod(k-1,length(symbolList))+1));
hold on
plot((1:10)+5, symbol(1), 'LineWidth', 0.1);
plot((1:10)+10, symbol(2), 'LineWidth', 0.1);
plot((1:10)+15, symbol(3), 'LineWidth', 0.1); Obviously I'm just using placeholder data here.
DGM on 28 Nov 2021
no problem