Ich habe eine obere dreieckige angrenzende Matrix, die eine Menge von Knoten darstellt, die verbunden sind. Jeder Knoten wird durch drei geographische Koordinaten definiert: x y z. Mein Ziel ist es, das Netzwerk zu plotten, um zu sehen, wie es aussieht, indem ich auch die Richtung der Kanten berücksichtige.Wie 3d gerichteter Graph in Matlab geplottet wird
Wenn ich berücksichtigen nicht die z-Koordinate, ich bin in der Lage das Ergebnis leicht anzuzeigen:
die Codezeilen, um dieses Ergebnis zu bekommen sind:
A = [0 1 1 0 0 0 0;
0 0 1 1 0 0 0;
0 0 0 1 1 1 0;
0 0 0 0 1 1 0;
0 0 0 0 0 0 1;
0 0 0 0 0 0 1;
0 0 0 0 0 0 0];
xyz = [ 0 0 0;
-15 20 5;
17 24 -3;
-5 36 7;
-14 50 -8;
16 56 3;
3 70 -1];
F = digraph(A);
figure
p = plot(F,'XData',xyz(:,2),'YData',xyz(:,1)); axis equal;
highlight(p,1,'NodeColor','g'); highlight(p,size(A,1),'NodeColor','r');
view([0 90])
Wie soll ich meinen Code ändern, um dem Diagramm auch die z-Koordinaten zuzuordnen, damit ich ein 3D-Diagramm haben kann? (Denken Sie daran, dass ich auch die Kantenrichtung anzeigen möchte!).
Was ich versucht ist, dies zu tun:
p = plot3(F,'XData',xyz(:,2),'YData',xyz(:,1),'ZData',xyz(:,3));
aber ich hatte keinen Erfolg.
Ich denke, Sie haben eine benutzerdefinierte 'plot3' Methode zu schreiben. Schauen Sie sich die Implementierung von 'plot' für' digraph' an ('edit @ digraph/plot'), vielleicht finden Sie etwas Nützliches. – Vahid
hat meine Antwort Ihr Problem gelöst? – shamalaia
@shamalaia Ihre Antwort ist ziemlich hilfreich; Ich warte immer noch auf weitere mögliche Antworten und in dem Fall, dass niemand andere Optionen gibt, werde ich Ihre als die richtige bestätigen ... wissen Sie, wie man die Pfeilspitze in der Mitte der roten Segmente setzt? –