2016-10-01 8 views
-2

差分条件:各繰り返しの最後に動的凡例をクリアする方法。各反復の最後にフィッティングされた直線を削除する方法。ループ内の線グラフ上でダイナミック凡例を取得する方法は?

スレッドDynamic Legend (Updates in every recursion)のこの回答を拡大して、グラフの1つの凡例を反復しようとしています。 OS 2016a
:Debianは8.5 6ビット
Linuxカーネル:4.6つの直線のグラフに凡例がちょうど

enter image description here

MATLABを添付さ

close all; clear all; 

% Test data 
aSize=zeros(2,777); 
aSize=[[0, 0]' randi(3,2,777)]; % STDEV about 3 

x=0:1:180; 

hFig=figure; 

index=1; 
while (index<=7); 

    % origo left alone 
    aSize(:, index+1) = aSize(:, index+1) + index; % to have linearly increasing trend 

    sz=40; 
    legend('-DynamicLegend'); 
    h = scatter(aSize(1,1:index+1)', aSize(2,1:index+1)', sz, ... 
      'MarkerEdgeColor',[0 .5 .5],... 
      'MarkerFaceColor',[0 .7 .7],... 
      'LineWidth',1.5, ... 
      'DisplayName', sprintf('Data')); 
    xlabel('width'); ylabel('height'); 
    hold on; 

    % Optimum 
    x=0:1:max(aSize(1, 1:index+1)); 
    y = x; % assume uniform 
    grid on; 
    h1=plot(x,y, 'black', ... 
     'DisplayName', sprintf('Optimum')); 

    % Fit with R2 linear 
    x=aSize(1,1:index+1); 
    b1 = aSize(1,1:index+1)' \ aSize(2,1:index+1)'; 
    yCalc1 = b1 * aSize(1,1:index+1); 
    Rsq1 = 1 - sum((y(1:index+1) - yCalc1).^2)/sum((y(1:index+1) - mean(y(1:index+1))).^2) 

    % origo needed 
    x = [0 x]; 
    yCalc1 = [0 yCalc1]; 
    h2=plot(x(1:index+2)', yCalc1(1:index+2)', '--p', ... 
     'DisplayName', sprintf('Fit R2 = %d', Rsq1)); 

    drawnow; 

    index=index+1; 

end; 

出力失敗を動的凡例を覆う 提案バックポートの
ハードウェア:Asus Zenbook UX303UA

+1

ループの最後に以前にプロットされたデータを削除する方法を尋ねていますか? –

+1

ループの最後の前に 'ホールドオフ 'を書いてください。それはあなたが探していることをしていますか? –

+1

質問から回答部分を削除しました。質問は質問のみを含むことを意味します。私はあなたの追加があなたが使用したすでに受け入れられた回答に何も追加していないと判断したので、質問にそれがあるという点はありませんでした。追加するには相当なものがあれば、新しい答えで自由にすることができます。 –

答えて

1

この行を削除してdrawnow行の直前に書き、その行の後にhold offと書いてください。ですから、あなたのループの最後には次の行があります。

legend('-DynamicLegend'); 
drawnow; 
hold off 
index=index+1; 
関連する問題