2016-07-19 4 views
0

Ich versuche, 4 verschiedene Funktionen zu zeichnen, die ich verwalten zu tun, indem Sie den folgenden Code:Plotten einzelne Punkte auf verschiedenen bestehenden Funktionen

clear all;clc;close all; 

normalDiffuse = [2 7.4567 
3 7.1941 
4 6.9443 
5 6.7455 
6 6.5636 
7 6.3707 
8 6.2483 
10 5.9840 
14 5.5388 
16 5.3825 
20 5.0466 
23 4.8314]; 

diffuseWithNoise = [2 7.9944 
3 7.9237 
4 7.7955 
8 7.2938 
10 7.1093 
11 7.0366]; 

specularSurface = [2 6.3446 
4 5.9177 
6 5.8365 
7 5.6191]; 

shadows = [2 8.6936 
4 8.5689 
8 8.5490 
16 8.4074 
32 7.7302 
33 7.6296]; 

xmarkers = ; 

figure(1); 
p = plot(normalDiffuse(:,1),normalDiffuse(:,2),... 
    diffuseWithNoise(:,1),diffuseWithNoise(:,2),... 
    specularSurface(:,1),specularSurface(:,2),... 
    shadows(:,1),shadows(:,2)); 
%set(p(1),'Marker','o'); 
set(p(1),'Color',[1 0 0]); 
set(p(1),'MarkerFaceColor',[1 0 0]); 
%set(p(2),'Marker','hexagram'); 
set(p(2),'Color',[0 1 0]); 
set(p(2),'MarkerFaceColor',[0 1 0]); 
%set(p(3),'Marker','square'); 
set(p(3),'Color',[0 0 1]); 
set(p(3),'MarkerFaceColor',[0 0 1]); 
%set(p(4),'Marker','diamond'); 
set(p(4),'Color',[1 0 1]); 
set(p(4),'MarkerFaceColor',[1 1 0]); 
for i=1:4 
    set(p(i),'LineStyle','-'); 
    set(p(i),'MarkerSize',10); 
    set(p(i),'MarkerEdgeColor',[0 0 0]); 
end 
grid; 
legend('Normal diffuse', 'Diffuse with noise','Specular surface',... 
    'Shadows'); 
xlabel('SPP'); 
ylabel('MSRE'); 

Was ich versuche jetzt hinzuzufügen, ist nicht eine andere Funktion, aber einzelne Punkte für jede Funktion. Zum Beispiel möchte ich für die erste Menge von Punkten, dass auf dem relativen Funktionsdiagramm ein Symbol (ein Kreis zum Beispiel) auf der Funktion selbst erscheint, wenn X = 4. Und so will ich dasselbe für die anderen Funktionen, aber für anderes X Werte. Am Ende möchte ich in der Legende dieses besondere Zeichen (Kreis in unserem Fall) als besonderen Wert hinzufügen. Können Sie mir bitte helfen? Danke im Voraus!

Antwort

1

Sie können hold on verwenden, um zusätzliche Funktionen auf der Abbildung zu zeichnen. Zum Beispiel können Sie tun:

x=1:1:100; 
y=sin(x); 
figure,plot(x,y) 
hold on, plot(x(4),y(4),'o','MarkerSize',20); 
legend('data','point') 

Sie können dann die Figur bearbeiten, und löschen Sie die Legende, die Sie wollen oder nicht ändern, den Text/size