Hi,
I'm trying to perform iterative plotting while changing the color/linestyle within each iteration. Since the number of plots may vary I have created a string matrix which allows for five differnt plot styles.
My current code is:
plot_type = ['''r*-''';'''g+-''';'''b*-''';'''c+-''';'''m*-'''];
%where plot_type(1,1:5) = 'r*-'
for i = 1:k
plot( XX , plt_matrix(i,:) , plot_type(i,1:3) )
end
Any ideas would be appreciated.
Thanks
|
|
0
|
|
|
|
Reply
|
John
|
12/16/2010 11:22:04 PM |
|
On 10-12-16 05:22 PM, John wrote:
> Hi,
> I'm trying to perform iterative plotting while changing the color/linestyle
> within each iteration. Since the number of plots may vary I have created a
> string matrix which allows for five differnt plot styles.
>
> My current code is:
> plot_type = ['''r*-''';'''g+-''';'''b*-''';'''c+-''';'''m*-'''];
> %where plot_type(1,1:5) = 'r*-'
>
> for i = 1:k
> plot( XX , plt_matrix(i,:) , plot_type(i,1:3) )
> end
>
> Any ideas would be appreciated. Thanks
Too many apostrophes.
plot_type = ['r*-'; 'g+-'; 'b*-'; 'c+-'; 'm*-'];
plot(XX, plt_matrix(i,:), plot_type(i,:))
|
|
0
|
|
|
|
Reply
|
Walter
|
12/16/2010 11:37:00 PM
|
|
What you're doing looks OK - I'm not sure what kind of ideas you need.
Still, in case they are any use, here are a couple of functions I've been using for this sort of thing. Both are meant to be used with "hold" switched on. The context for me is display of matching features in stereo image pairs, so they'll certainly need modifying for line plots.
function different_points(x, y)
% Display a lot of points in different colour/symbol combinations
% Vectors for colour/symbol combinations to distinguish matches
colours = ['y';'m';'c';'r';'g';'b'];
syms = ['o';'x';'s';'+';'d';'*';'v';'p'];
lc = length(colours);
ls = length(syms);
for i=1:length(x)
colsym = [colours(mod(i-1,lc)+1), syms(mod(i-1,ls)+1)];
plot(x(i), y(i), colsym);
end
end
function disp_vecs(corrs)
% Display disparity vectors using a variety of colours
colours = ['y';'m';'c';'r';'g';'b'];
lc = length(colours);
[nr, nmatches] = size(corrs);
for i=1:nmatches
colsym = [colours(mod(i-1,lc)+1), '-'];
plot([corrs(2,i); corrs(4,i)], [corrs(1,i); corrs(3,i)], colsym);
end
end
|
|
0
|
|
|
|
Reply
|
David
|
12/16/2010 11:39:05 PM
|
|
Walter Roberson <roberson@hushmail.com> wrote in message <iee7qu$ksn$1@nrc-news.nrc.ca>...
> ...
>
> Too many apostrophes.
> ...
Oops! I missed the obvious problem! I thought John was literally inviting ideas to extend his code, and didn't realise that he was saying that it doesn't work.
John: put the error message in please!
|
|
0
|
|
|
|
Reply
|
David
|
12/16/2010 11:54:06 PM
|
|
On 10-12-16 05:54 PM, David Young wrote:
> Walter Roberson <roberson@hushmail.com> wrote in message
> <iee7qu$ksn$1@nrc-news.nrc.ca>...
>> ...
>>
>> Too many apostrophes.
>> ...
>
> Oops! I missed the obvious problem! I thought John was literally inviting
> ideas to extend his code, and didn't realise that he was saying that it
> doesn't work.
>
> John: put the error message in please!
Ah, if he was looking for ideas to extend his code, then I would suggest he
use the FEX contribution 'plt', which has already been designed to allow
combinations of line attributes.
|
|
0
|
|
|
|
Reply
|
Walter
|
12/17/2010 12:10:53 AM
|
|
Sorry for the confusion. Yes, I was getting an error message. I used David's approach and everything works! Too many '''apostrophes''' !!!
colors = ['r';'g';'b';'c';'m'];
symbols = ['*-';'+-';'*-';'+-';'*-'];
hold on
for i = 1:k
colsym = [colors(i),symbols(i,1:2)];
plot(XX,plt_matrix(i,:), colsym)
end
Thanks
|
|
0
|
|
|
|
Reply
|
John
|
12/17/2010 12:22:05 AM
|
|
"John " <jahewe01@louisville.edu> wrote in message
news:iee6us$lp1$1@fred.mathworks.com...
> Hi,
> I'm trying to perform iterative plotting while changing the
> color/linestyle within each iteration. Since the number of plots may vary
> I have created a string matrix which allows for five differnt plot styles.
>
> My current code is:
> plot_type = ['''r*-''';'''g+-''';'''b*-''';'''c+-''';'''m*-'''];
> %where plot_type(1,1:5) = 'r*-'
>
> for i = 1:k
> plot( XX , plt_matrix(i,:) , plot_type(i,1:3) )
> end
>
> Any ideas would be appreciated. Thanks
Rather than using char arrays, I would use a cell array of strings.
plot_types = {'r*-', 'g+-', 'b*-', 'c+-', 'm*-'};
x = 0:0.1:2*pi;
h = zeros(1, numel(plot_types));
axis([0 2*pi -1 1]);
hold on
for k = 1:numel(plot_types)
h(k) = plot(x, sin(k*x), plot_types{k}, 'DisplayName',
sprintf('sin(%d*x)', k));
end
legend(h)
--
Steve Lord
slord@mathworks.com
comp.soft-sys.matlab (CSSM) FAQ: http://matlab.wikia.com/wiki/FAQ
To contact Technical Support use the Contact Us link on
http://www.mathworks.com
|
|
0
|
|
|
|
Reply
|
Steven_Lord
|
12/17/2010 2:45:50 PM
|
|
|
6 Replies
946 Views
(page loaded in 0.382 seconds)
|