2013-04-26 77 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

相關問題