2016-09-25 13 views
0

私が読んでいる本には次の図が含まれています。MATLAB:複数の行の間に領域を塗りつぶす

ORSS with False Alarm rate on x-axis and Hit Rate on y-axis

私はできるだけ密接にMATLABで以下の図を複製していますよ。私はラインを再作成するために管理しますが、トラブルで色を埋めるが生じています。

possible_colours = {'r','g','b','c','m','y','w','k','r'}; 

H = [0.01:0.01:0.99]; 

colour_counter = 0; 

for ii = -0.8:0.2:0.8 
    colour_counter = colour_counter + 1; 
    colour_now = possible_colours{colour_counter}; 
    ORSS = ones(1,size(H,2))*ii; 
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1); 
    hold on  
    plot(F,H) 
    fill(F,H,colour_now);  
end 

完璧に必要な行を再作成するコードを取り出しfill(F,H,colour_now)で。しかし、塗りつぶしは正しくありません。

@Doresoomによってこのheavily upvoted answerが関係しているようですが、その例ではx値は一定に保たれていますが、私の場合は一定に保たれているy値です。また、その場合はペア線だけがありますが、私はそれらの多くを持っています。

答えて

2

私はこれが解決策だと思う:

%possible_colours = {'r','g','b','c','m','y','w','k','r'}; 
possible_colours = {'r','g','b','c','r','k','w','y','m'}; 

H = [0.01:0.01:0.99]; 

figure; hold on 
fill([0 1 1],[0 0 1],colorlowerhalf) 
fill([0 1 0],[0 1 1],colorupperhalf) 

colour_counter = 0; 

for ii = -0.8:0.2:0 
    colour_counter = colour_counter + 1; 
    colour_now = possible_colours{colour_counter}; 
    ORSS = ones(1,size(H,2))*ii; 
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1); 
    hold on  
    plot(F,H) 
    fill(F,H,colour_now);  
end 

for ii = 0.8:-0.2:0 
    colour_counter = colour_counter + 1; 
    colour_now = possible_colours{colour_counter}; 
    ORSS = ones(1,size(H,2))*ii; 
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1); 
    hold on  
    plot(F,H) 
    fill(F,H,colour_now);  
end 

それが満たされた領域の重複を避けるためにできます。

しかし、記入する領域の定義にはまだ問題があります。見事に動作します

H = [0:0.01:1]; 
+0

:あなたはHを再定義する必要があることについては

!左上と右下のセクション、つまり元の図の紫色と濃紺のセクションを簡単に入力できる方法があるかどうかは分かりますか? – user1205197

+0

質問を編集しました。それは今仕事をする必要があります – shamalaia

関連する問題