2016-03-24 8 views
1

Möchten Sie nur mehr Daten eine Legende hinzufügen, ohne es zu löschen. Wie eine Legende "Hold on"Matlab dynamische Legende/Legende "festhalten" wie Verhalten

Probe.

plotData = array von Plotdaten, wie PlotData (i) = Grundstück (...

N = Größe PlotData

-Code:

for i = 1:N 
    str = sprintf('My plot y %d', i); 
    %legendData(:,i) = [plotData; str]; %#ok<SAGROW> 
    %[~,~,~,current_entries] = legend; 
    %legend([current_entries [plotData; str]]); no sucess here 

    % This command will erase the previous one. 
    legend(plotData,str); 
end 

legend([plotX1,plotX2],'x 1','x 2'); 

ich glaube, ich kann Speichern Sie die Legende Informationen aus der Schleife und fügen Sie es in gewisser Weise auf die letzte Zeile, so etwas wie:

legend(DATAFROMLOOP?? [plotX1,plotX2],'x 1','x 2'); 

Dies ist eine mögliche Lösung, aber ich weiß nicht, wie es zu tun.

Antwort

2

Sie möchten die DisplayName Eigenschaft Ihrer Plot-Objekte festlegen und dann legend einmal aufrufen, wenn Sie fertig sind Plotten alles. legend ruft automatisch die Zeichenfolgen aus der DisplayName-Eigenschaft ab, um die Legende zu füllen.

hplot1 = plot(rand(10,1), 'DisplayName', 'plot1'); 
hplot2 = plot(rand(10,1), 'DisplayName', 'plot2'); 

legend([hplot1, hplot2]); 

enter image description here

Sie können dies in einer Schleife leicht übernehmen:

% Create 10 plots within a loop 
N = 10; 

% Pre-allocate graphics objects 
hplots = gobject(N, 1); 

for k = 1:N 
    hplot(k) = plot(rand(10, 1), 'DisplayName', sprintf('My plot y %d', k)); 
end 

legend(hplot); 

enter image description here

Verwandte Themen