2017-04-14 71 views
0

我目前正在做一個迭代過程,其中我創建一個圖形,添加一個圖形,然後附加一個圖例項目。我將其作爲一系列命令執行,但已將其收集在下面的腳本中。請注意,這不能是一個腳本,因爲實際繪圖取決於外部過程,因爲我無法控制它們,所以我必須進行物理迭代。在matlab中添加後續繪圖到圖例

>> x = [0:1:10] 
>> y1 = [] 
>> y2 = [] 
>> y3 = [] 
>> figure 
>> hold on 

>> for i = 1:size(x,2) 
    y1(i) = x(i)^2 
end 

>> plot(x,y1,'b') 
>> legend('x^2') 

>> for i = 1:size(x,2) 
    y2(i) = 2*x(i)^2 
end 

>> plot(x,y2,'r') 
>> legend('2*x^2') 

>> for i = 1:size(x,2) 
    y3(i) = 3*x(i)^2 
end 

>> plot(x,y3,'g') 
>> legend('3*x^2') 

正如預期的那樣,這會創建一個包含感興趣的三個函數但只包含最後一個項目的圖例的圖。我對此感到不滿意,因爲當我將其作爲一系列命令執行時,我必須每次都使用舊項目和新項目創建新的圖例。爲了達到預期的效果如下

>> x = [0:1:10] 
>> y1 = [] 
>> y2 = [] 
>> y3 = [] 
>> figure 
>> hold on 

>> for i = 1:size(x,2) 
    y1(i) = x(i)^2 
end 

>> plot(x,y1,'b') 
>> legend('x^2') 

>> for i = 1:size(x,2) 
    y2(i) = 2*x(i)^2 
end 

>> plot(x,y2,'r') 
legend('x^2','2*x^2') 

>> for i = 1:size(x,2) 
    y3(i) = 3*x(i)^2 
end 

>> plot(x,y3,'g') 
>> legend('x^2', 2*x^2','3*x^2') 

什麼是追加最近添加的情節當前傳說,而無需重寫所有先前的內容的有效方式的命令必須進行修改?謝謝。

回答

1

你不能只追加到一個圖例,但你可以記住它,而不必知道之前發生了什麼。這依賴於您將圖例分配給變量,並使用其String屬性來調用以前的條目。

% define plotting variables here 
x=0:0.1:1; y1=x.^2; y2=2*x.^2; y3=3*x.^2; 
% initialise figure 
figure; hold on; 
% plot 1 
plot(x, y1, 'b'); 
L = legend('x^2'); 
% plot 2 
plot(x, y2, 'r'); 
L = legend([L.String, {'2*x^2'}]); 
% plot 3 
plot(x, y3, 'k'); 
L = legend([L.String, {'3*x^2'}]); 

結果:

plot