Verfasst am: 20.04.2016, 09:41
Titel: plot - letzen punkt in einer anderen farbe makieren
Hallo zusammen,
Ich habe ein kleines rechenprogramm erstellt, wo man je nach Angabe einen Punkt bzw 3 verschiedene Punkte nach Datum erhält und diese werden in einem 3d Plot gezeigt.
Das ganze funktioniert mit gui.
Jetzt meine frage, gibt es eine Möglichkeit, die zuletzt berechneten Punkte in einer anderen Farbe darzustellen.
Also ich wähle ein Datum aus und erhalte 3 Punkte die sind jetzt bspw. grun, gelb, blau. (Punkt gelb ist immer konstant.)
Nun möchte ich ein anderes Datum eingeben und bekomme für Punkt grün und blau zwei weitere Punkte im 3d-Plot gezeigt.
Wenn man das dann z.b. 10 mal durchspielt erkennt man schlecht wo die letzten beiden Punkte hingezeichnet worden sind.
Da suche ich eine Möglichkeit wie das umgesetzt werden kann. Entweder durch eine andere Farbe oder das der letzte Punkt im Plot beschriftet wird.
Dafür müsste der vorletzte Punkt ja anders eingefärbt werden wie alle anderen zuvor und der letzte übernimmt die Farbe vom vorletzten oder eben die Beschriftung vom vorletzten Punkt wird gelöscht (um es übersichtlicher zu halten) und der neue wird beschriftet (z.b. mit neu)
Wäre nett, wenn mir einer sagen könnte, ob das umsetzbar ist und noch besser evtl. Mit Lösungsansatz.
Da mein eigentliches Programm sehr groß ist habe ich mal ein reduziertes Progrämmchen für mein Anliegen geschrieben.
Code:
% letzten Punkt im Plot beschriften bzw. in einer andere Farbe darstellen
plot3(0,0,0,'oy','MarkerSize',12,'MarkerEdgeColor','y','MarkerFaceColor','y');
rotate3d, 'on';
hold on;
% Schleife wird n mal durchlaufen (n- kann ein beliebiger Wert von 1 bis 200 annehmen) und zeichnet einen weiteren Punkt in den Plot for i=1:1:3
x=input(['\nGeben Sie eine Zahl ein \n']);
y=input(['Geben Sie eine Zahl ein \n']);
z=input(['\nGeben Sie eine Zahl ein \n']);
a=input(['\n\nGeben Sie eine Zahl ein \n']);
b=input(['\nGeben Sie eine Zahl ein \n']);
c=input(['\nGeben Sie eine Zahl ein \n']);
plot3(x,y,z,'og','MarkerSize',12,'MarkerEdgeColor','g','MarkerFaceColor','g') text(x,y,z,'neu') plot3(a,b,c,'ob','MarkerSize',12,'MarkerEdgeColor','b','MarkerFaceColor','b') text(x,y,z,'neu') end
Also wie gesagt, die For-Schleife fragt nach 2*3 Zahlen und stellt diese Punkte schließlich im Plot dar. (Pro Schleifendurchlauf 2 Punkte)
Nun möchte ich es so umsetzen, dass die letzten zwei Punkte in dem Plot entweder eine andere Farbe annehmen oder eben die Beschriftung 'neu' bekommen.
(Am liebsten mit der Umsetzung neu)
Bedeutet ja, dass der vorletzte Punkt die Farbe aller zuvor gezeichneten Punkte annimmt und der neue Punkte die von seinem Vorgänger bzw. mit Beschriftung wird die letzte Beschriftung 'neu' gelöscht und der Neue übernimmt die Beschriftung.
(Dabei sollen die Punkte nie miteinander verbunden werden, nur eben der letzt "berechnete" soll gekennzeichnet werden)
Habe jetzt eine Lösung gefunden, obwohl diese mir iwie nicht sonderlich gefällt
Code:
%%Plot letzten Punkt beschriften bzw. in einer andere Farbe darstellen
plot3(0,0,0,'oy','MarkerSize',12,'MarkerEdgeColor','y','MarkerFaceColor','y'); %3D plot rotate3d, 'on';
hold on;
h=0;
m=0;
% Schleife wird n mal durchlaufen und zeichnet einen weiteren Punkt in den Plot for i=1:1:3
x=input(['\n\nGeben Sie eine Zahl ein \n']);
y=input(['Geben Sie eine Zahl ein \n']);
z=input(['\n\nGeben Sie eine Zahl ein \n']);
a=input(['\n\nGeben Sie eine Zahl ein \n']);
b=input(['\n\nGeben Sie eine Zahl ein \n']);
c=input(['\n\nGeben Sie eine Zahl ein \n']);
plot3(x,y,z,'og','MarkerSize',12,'MarkerEdgeColor','g','MarkerFaceColor','g')
m=text(x,y,z,'neu');
plot3(a,b,c,'ob','MarkerSize',12,'MarkerEdgeColor','b','MarkerFaceColor','b')
h=text(a,b,c,'neu');
end
mir fallen da zwei moglichkeiten ein. du erstellst für denen punkt einen eigenen plot handle also h(i)=...
dann kannst du immer über h(i).color die farbe ändern.
oder du hast zwei plots bei denen du bei jedem schleifenduchlauf die xdata bzw ydata einträge änderst. ein plot sind die alten punkte einer sind die neuen.
beides ist in etwa gleich einfach zu realisieren.
grüße
_________________
Habe es nun mit der Beschriftung gelöst, da dies im nachhinein die sinnvollere Lösung für mich war. Daher habe ich das mit der Farbauswahl praktisch nicht umgesetzt.
Nochmals ein großes Dankeschön.
Gruß Luep
Einstellungen und Berechtigungen
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.