Verfasst am: 04.12.2013, 17:14
Titel: 3D Plot einfärben
Huhu liebe Community,
ich plotte seit kurzem einige Dinge in 3D, aber verzweifle langsam an der Art und Weise die geplotteten Flächen zu füllen. Ich hoffe ihr könnt mir weiterhelfen! Mein 3 D Plot Script sieht folgendermaßen aus!
In einer Variable sind drei für mich relevante Spalten die ich in 3D plotten möchte. Wenn ich Sie plotte und mit fill3 einfärbe, färbt er mir die Flächen unter den Plots. Bei patch sieht es ähnlich obskur aus. Ich bekomme bei fill3 folgende Grafik (1) und möchte gerne einen Plot in solcher Einfärbung Grafik (2). Bedeutet ich möchte nicht die FLäche unter, sondern zwischen den Werte auf der x und y Achse. Es soll eine Art Welle entstehen. Ist das möglich?
vermutlich musst du erst auf ein gemeinsames Gitter interpolieren. Dazu kann dir die Funktion griddata() helfen und dann ein Plot mit surf().
Viele Grüße,
Nras.
Edit: Das sieht ja so aus, als hättest du bereits Daten auf einem regelmäßigen Gitter, nur sind die noch nicht so angeordnet. Vermutlich steht in der ersten Spalte nun 24(?) mal der gleiche Wert für den Tag und deine zweite Spalte wiederholt ständig dieselben Uhrzeiten?
Entweder hilft da ein unique() und ein anschließendes meshgrid() oder vielleicht kriegt man da auch mit reshape() direkt was hin. Aber ohne die Daten zu sehen kann man nur raten.
Viele Grüße,
Nras.
Joey_55
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.12.2013, 15:18
Titel:
Hallo Nras,
leider bekomme ich das mit den Daten noch nicht so gut hin, weswegen ich einfach mal die Tage gelasse habe, wie sie waren.
Je Tag(Y-Achse) gibt es 24 Werte die ich auf der X_Achse darstelle und diese sollen über die Tage (Siehe Grafik 1 Kopie) eingefärbt werden.
Ich weiß leider überhaupt nicht mehr weiter...
Ich habe dir mal die Dateien rangehangen. Die dritte Spalte der Variable entspricht dem EEX-Preis. Hoffentlich kannst du mir helfen!
ich danke dir nochmals recht herzlich für deine Hilfe.
Genauso soll es aussehen.
Nachdem ich(du) das jetzt geplottet habe, wollte ich statt der Tageszahl noch ein Datum einpflegen. Dazu musste ich natürlich den Variablenumfang von EEX_... erweitern. Es sieht jetzt wie folgt aus:
ich bin mir gar nicht sicher, ob meshgrid mit Strings umgehen kann, bzw. was dann passiert. Vor allem mit der Kombination aus unique. Aber du kannst dir das manuelle Umwandeln komplett sparen. Matlab kann mit den datenums ziemlich gut umgehen.
% Als Fläche: [X,Y] = meshgrid(1:24,unique(EEX_Day_Ahead_Test(:,1)));
hold on
surf(X,Y,(reshape(EEX_Day_Ahead_Test(:,3),24,12))') datenum('y','yyyy-mm-dd')
dir weitergeholfen hätte.
in deinem Plot gibt es 3 Achsen, die x-, die y- und die z-Achse. Auf der y-Achse steht die Zeit in Tagen, auf der x-Achse die Uhrzeit und auf der z-Achse die entsprechenden Werte.
Das 'y' steht dann dafür, dass der y-Achse dieses Format gegeben wird.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.