Plotten in Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hi!
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Ich habe eine Matrix mit meinen Messdaten (3-Dimensional, also p,T,v) und will jetzt die einzelnen Punkte plotten.
Das bekomm ich ja noch hin.
Wie kann ich jetzt aber den einzelnen Punkten verschiedene Typen, also einmal soll es ein Kreis sein, das andere mal ein Kreuz usw, zuordnen? Ich kann jeden einzelnen Punkt selbst plotten lassen und am Schluss zusammenfügen, schönes wäre es jedoch, wenn ich ein 4d-Array hätte und das plotten lassen könnte.
Weiß jemand wie ich das hinbekomme?
Gruß Freddy
|
|
|
|
Hallo,
ich denke, eine direkte Möglichkeit gibt es hierfür nicht, aber wir können ja etwas basteln.
Seien x, y und z Spaltenvektoren gleicher Länge, die die Koordinaten unserer Datenpunkte enthalten. Wir wollen die Punkte mit 3 verschiedenen Symbolen darstellen, z.B. (1) Stern, (2) Punkt und (3) mit Linie verbunden.
Nun können wir einen weiteren Vektor derselben Länge anlegen, der für jeden Punkt eine 1, 2 oder 3 enthält, also die Nr. des Symbols. Nennen wir diesen Vektor mal symb.
Nun können wir uns ein Indexarray aufbauen, das die Aufteilung in verschiedene Gruppen übernimmt:
symbRange = (1:length(symb))';
for i=1:max(symb),
idx(symbRange, i) = symbRange.*(symb==i);
idx(1,i) = min(find(symb==i)); idx(end,i) = max(find(symb==i));
idx(symbRange,i) = interp1(find(ind(:,i)>0),ind(find(ind(:,i)>0),i),symbRange,'nearest');
end;
set(0,'DefaultAxesLineStyleOrder','*|.|-','DefaultAxesColorOrder',[1 0 0]);
plot3(x(idx), y(idx), z(idx));
Du kannst es ja mal ausprobieren. Es reicht 1 plot3-Aufruf aus. Natürlich können noch andere Symbole benutzt werden. Dazu muss man nur in dem set-Aufruf den String '*|.|-' entsprechend modifizieren.
Gruß
Martin
|
|
|
|