2016-03-28 14 views
3

Ich habe 3 verschiedene Datensätze, aus denen ich ein Streudiagramm erstellt habe. Verschiedene Datensätze, die ich in verschiedenen Farben codiert habe.Wie wird mit MATLAB die Farbe der kleinsten Quadrate in die gleiche Farbe wie im entsprechenden Scatter-Plot eingestellt?

Mein Code sieht wie folgt aus:

clear all; 
close all; 

% my colormap 
colormap = [0, 0, 0 
      0.5, 0.5, 0.5 
      0, 0.5, 0.5]; 

% x values of 3 different datasets 
xvalues = [10 20 30; 35 65 95; 22 42 82]; 

% y values of 3 different datasets 
yvalues = [1 2 3; 6 12 24; 2 4 8]; 

figure; 
axis([0 90 0 30]); 

% loop for each dataset 
for i = 1:3 

    x = xvalues(i,:);  
    y = yvalues(i,:); 
    scatter(x,y, 60, colormap(i,:)); hold on;  

end 

Jetzt würde ich der kleinsten Quadrate Linien für jeden der Daten-Set in der Farbe des jeweiligen Datensatz hinzufügen.

ich am Ende des Codes hinzugefügt:

% add least-squares lines to scatter plot 
h = lsline; 
set(h,'linewidth',2,'color',colormap(i,:)); 

Dadurch wird die kleinsten Quadrate Linien hinzufügen - alle mit der gleichen Farbe.

Wie kann ich geben jedem der kleinsten Quadrate Linien die Farbe für die jeweiligen Datensätze in dem Streudiagramm verwendet

1

Antwort

1

lsline wird a vector of line objects zurück, wenn Sie mehrere Plot auf Ihrem Achsen-Objekte. Sie müssen die Farben individuell einstellen.

hlines = lsline; 
for k = 1:numel(hlines) 
    set(hlines(k), 'Color', colormap(k, :)) 
end 

Die Art und Weise, dass Sie es tun, werden Sie alle Best-Fit-Linien Einstellung der Farbe, die durch colormap(3,:) angegeben zu sein.

enter image description here

Wenn Sie Standard-Plot Objekte verwenden, anstatt scatter (es gibt keinen Vorteil hier zu streuen, da Sie eine konstante Farbe und Größe verwenden), passen lsline sollte dann automatisch die Farbe des Objekts. Es nicht tun dies für scatter Plots wie die Farbe für jeden Datenpunkt variiert typischerweise.

figure; 
axis([0 90 0 30]); 

% loop for each dataset 
for k = 1:3 
    x = xvalues(k,:);  
    y = yvalues(k,:); 
    plot(x, y, 'o', 'Color', colormap(k,:)); 
    hold on;  
end 

lsline; 
+0

Danke. Habe ich es richtig verstanden, dass das ersetzt: h = lsline; set (h, 'linienbreite', 2, 'color', colormap (i, :)); nach diesem Code: hlines = lsline; für k = 1: numel (hlines) set (hlines (k), 'farbe', colormap (i, :)) end sollte die arbeit tun? Leider bekomme ich die gleiche Ausgabe. Alle Zeilen haben die gleiche Farbe. –

+0

@anneu Es sieht so aus, als hätten Sie es gepackt, während es einen Tippfehler gab. Sie haben Recht, welche Zeilen ersetzt werden sollen, aber es sollte 'colormap (k, :)' statt colormap (i, :) 'sein. Siehe den aktualisierten Code oben – Suever

Verwandte Themen