2016-05-27 3 views
-2

Ich habe 2 Variablen: Anzahl von Stufen (S): zwischen 1 und 30 TRUE POSITIVE RATE (TPR): stets zwischen 0,8 und 1 und falsch positive Rate (FPR): zwischen 0 und 1Wie zeichnen Sie diese Punkte in der richtigen Form?

Bei Ich bekomme TPR und FPR ich muss klammern (TPR^S) und (FPR^S), und einen Graphen plotten, dann andere Werte von ihnen bekommen und plotten in der gleichen Figur, um einen Vergleich zu machen.

numstages=12; 
TPR=0.995; 
FPR=0.5; 

for i=1:numstages 
    TPRstage(i)=(TPR^i); 
    FPRstage(i)=(FPR^i); 
end 


TPRstage=fliplr(TPRstage); 
FPRstage=fliplr(FPRstage); 


figure; 
plot(FPRstage,TPRstage,'-'); 

enter image description here

figure; 

plot(FPRstage, TPRstage, '+r'); % plot the original points 
n = numel(FPRstage); % number of original points 
xi = interp1(1:n, FPRstage, linspace(1, n, 10*n)); % new sample points 
yi = interp1( FPRstage, TPRstage, xi); 
hold all; 
plot(xi, yi); % should be smooth between the original points 

enter image description here

Wie Sie im Bild sehen, das ist eine graphische Darstellung des gleichen Wertes von TPR und 3 von FPR: 0,2, 0,3, 0,5. Ich möchte, dass die X- und Y-Achsen zwischen [0,1] liegen. Wenn FPR ist 0,3 oder 0,2 ist es dort stoppen, ich möchte die Linie horizontal zu 1 von X, und von (0, 0) zu starten. similair auf diese: enter image description here

und die Größe zwischen 0 und 0,8 kleiner unalf die Änderungen in der Grafik zwischen 0,8 und 1.

Antwort

1

Für x-Achse zu sehen. Ich habe 0 am Anfang und 1 am Ende des Arrays xi angefügt.

xi=[0 xi 1]; 

Für Y-Achse. Das Diagramm beginnt bei 0.94 in Y-Achse. Also habe ich an den Anfang und 1 am Ende yi angehängt.

yi=[0.93 yi 1]; 

verändert dann das Etikett von 0.93-0.

set(gca,'YTick',[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1]); 
set(gca,'YTickLabel',{'0','0.94','0.95','0.96','0.97','0.98','0.99','1'}); 

Hier ist der aktualisierte Code.

figure 
for index=1:3 
FPRarray=[0.2 0.3 0.5]; 

numstages=12; 
TPR=0.995; 
FPR=FPRarray(index); 

for i=1:numstages 
    TPRstage(i)=(TPR^i); 
    FPRstage(i)=(FPR^i); 
end 


TPRstage=fliplr(TPRstage); 
FPRstage=fliplr(FPRstage); 

n = numel(FPRstage); % number of original points 
xi = interp1(1:n, FPRstage, linspace(1, n, 10*n)); % new sample points 
yi = interp1( FPRstage, TPRstage, xi); 
hold all; 

xi=[0 xi 1]; 
yi=[0.93 yi max(yi)]; 
plot(xi, yi); % should be smooth between the original points 
set(gca,'YTick',[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1]); 
set(gca,'YTickLabel',{'0','0.94','0.95','0.96','0.97','0.98','0.99','1'}); 
end 
+0

ich kann nichts sehen sie sind klein. @ Rijul Sudhir – matlab22

+0

Es ist wegen der Werte in 'TPRstage' und' FPRstage'. Wenn der Wert keine Bedeutung hat, können Sie ihn auf "0" und "1" normalisieren. –

+0

kann es nicht verstehen und Ihre Modifikation zeigt die Linien in der Spitze der Achsen @ Rijul Sudhir – matlab22