2013-04-26 125 views
5

以下是我的matlab代码的一部分。如所示,我想在一个图中绘制8条曲线。但我想用一种独特的颜色制作每条曲线。我也想更改图例,以便每个i更改。如何在MATLAB中的每次迭代中更改图的颜色?

例如,对于i = 1,图例将是gho-1,对于i = 2 gho-2等等。我希望它是自动的,因为我有时会从ex:(i = 1:20)更改i

for i=1:8 
. 
. 
. 
plot(b,r,'b'); 
legend(['qho-',num2str(i)]);  
hold on 
end 

我该怎么做?

嗨再次,

我有其他的问题:如果 我有以下

for i=1:8 
. 
b1=(1:3,:) 
b2=(3:6,:) 
figure(1);plot(b1,r,'*'); 
figure(2);plot(b2,r,'*'); 

Leg{i} = ['qho-',num2str(i)];  

end 
legend(Leg) 

我只为只有最后一个数字色彩的传说。不适用于两者.. 我该如何解决这个问题?!

再次感谢

+0

你应该问后续的问题作为新的问题 – Dan 2013-04-30 13:37:14

回答

8

只需使用hold all代替hold on,把传奇的标签在单元阵列

hold all 
for i=1:8 
    . 
    . 
    . 
    plot(b,r); 

    Leg{i} = ['qho-',num2str(i)];  

end 
legend(Leg) 

例如见这个问题:Sparse matrix plot matlab


注:

Matlab的R2014b向前hold on已被修改为像hold all,即改变每次一绘制的曲线的颜色。 The docs指出将在以后的版本中删除hold all语法。

+0

Ojjj,谢谢SOOO了。这完美的作品:) :) :) .... – YSF 2013-04-26 12:54:20

+0

'抱住所有'是一个隐藏的宝石,并不是很多人知道。 – shoelzer 2013-04-26 14:09:12

+1

'hold all'确实限制了股票的7种颜色,然后循环。如果你想定义你自己的颜色集,你可以打开你的图形和'set(gca,'ColorOrder',myColors)',其中'myColors'是RGB值的N×3矩阵。 – 2013-04-26 14:26:00

7

如何像:

figure, hold on 
N = 8; 
h = zeros(N,1); %# store handle to line graphic objects 
clr = lines(N); %# some colormap 
for i=1:N 
    %# plot random data 
    y = cumsum(randn(100,1)); 
    h(i) = plot(y, 'Color',clr(i,:)); 
end 
hold off 
legend(h, num2str((1:N)','gho-%d')) %# display legend 

plot

+0

也很棒。很多方法可以选择:) :) ..非常感谢:) – YSF 2013-04-26 13:00:05

+0

谢谢!有没有什么办法可以用'subplot'在循环中做这个窍门? 1个图上有2个子图,每次迭代都有附加的图, – soupault 2014-12-23 13:47:53

相关问题