Verfasst am: 11.06.2021, 15:13
Titel: Legende im 3D-Plot individuell anpassen
Hallo liebes Forum,
ich habe einige Koordinaten im Dreidimensionalen, die ich mir in einem 3d-Plot anzeigen lasse. Zusätzlich lasse ich mir Verbindungslinien zwischen den Koordinaten drucken. Ein Teil der Verbindungslinien wird über eine for-Schleife eingezeichnet, die zur Unterscheidung eine andere Linienart und -farbe verwenden. Der vereinfachte Code mit den relevanten Zeilen lautet:
Code:
figure(1) %erstellen eines Diagramms
plot3(A(:,1), A(:2), A(:,3), 'g*', 'LineWidth', 2, 'DisplayName', 'A');
%Drucken der 3D-Positionen von A
hold on; %überschreiben des vorherigen Plots wird
%ausgeschaltet
plot3(B(:,1), B(:,2), B(:,3), 'b*', 'LineWidth', 3, 'DisplayName', 'B');
%Drucken der 3D-Positionen Con B
plot3(C(:,1), C(:,2), C(:,3), 'r*', 'LineWidth', 3, 'DisplayName', 'C');
%Drucken der 3D-Positionen von C
plot3([B(:,1) C(:,1)]', [B(:,2) C(:,2)]', [B(:,3) C(:,3)]', 'LineStyle', '-', 'Color', 'black', 'LineWidth', 1, 'DisplayName', 'Verbindung B-C');
%Drucken von Verbindungslinien
for for
l1 = line([A(a,1) B(b,1)] , [A(a,2) B(b,2)], [A(a,3) B(b,3)], 'LineStyle', '--', 'Color', 'green', 'LineWidth', 1, 'DisplayName', 'Verbindung A-B-C');
%Linien zeichnen
end end
for for
l2 = line([A(a,1) C(c,1)] , [A(a,2) C(c,2)], [A(a,3) C(c,3)], 'LineStyle', '--', 'Color', 'green', 'LineWidth', 1, 'DisplayName', 'Verbindung A-B-C');
%Linien zeichnen
end end
Das Aussehen der Legende habe ich im Bild "Legende1" angefügt.
Jetzt habe ich das Problem, dass die Linienfarbe und -art für die Verbindungslinien gleich angezeigt werden (schwarz). Ich möchte aber für den Eintrag: "Verbindung A - B - C" die von mir im Code angegeben grün-gestrichelte Linienart anzeigen lassen.
Eine alternative Schreibweise für zur Darstellung der unterschiedlichen Linienfarben und -arten habe ich hier im Forum gefunden. Über die Erweiterungen (..., 'DisplayName', 'Verbindung A - B -C ') im Code für den 3D-Plot und dem Befehl:
zeigt es mir alle geplottet Verbindungslinien in der gewünschten Art an. Leider schreibt es mir in die Legende alle Verbindungslinien hinein (siehe Bild "Legende2"), obwohl ich an der Stelle nur jeweils einen Legendeintrag benötige.
Gibt es eine Möglichkeit, einen der beiden Codevarianten so zu gestalten, dass es mir für die zwei Linienarten jeweils nur einen Eintrag mit den entsprechenden Linienfarben und -aussehen erzeugt?
Im Forum bin ich leider nur auf Abwandlungen meines Codes gestoßen, der jeweils nur die eine oder andere Variante meiner vorhanden Versionen ausgibt.
wobei p1 - p3 die Rückgabeargumente der ersten drei Plots sind:
p1 = plot3(A(:,1), A(:2), A(:,3), ...
etc.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Durch die Schleifen und das wiederholende Einlesen von Strecken zwischen de Punkten habe ich die Linien durch einen 3D Plot geändert, l1 -> P5 und l2 -> p6. Ich habe danach bei p5 und p6 noch ein "end" in Klammern hinzugefügt. Somit zeigt es mir die gewünschten Linienfarben für die letzte Strecke an und meine Legende sieht so aus wie gewünscht.
Gruß
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.