我有一個上三角相鄰矩陣,它表示一組連接的節點。每個節點由三個地理座標定義:x y z。 我的目標是繪製網絡以便通過考慮邊緣的方向來查看它的外觀。如何繪製matlab中的三維有向圖
如果我不考慮z座標,我能夠很容易地顯示結果:
的代碼來獲得這個結果的線路有:
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])
我應該如何修改我的代碼,以便將z座標分配給圖形,以便我可以創建一個3d圖形? (記得我也想顯示邊緣方向!!)。
我試圖做到這一點:
p = plot3(F,'XData',xyz(:,2),'YData',xyz(:,1),'ZData',xyz(:,3));
,但我沒有成功。
我想你必須寫一個自定義的'plot3'方法。查看'digraph'的'plot'的實現('edit @ digraph/plot'),你可能會發現一些有用的東西。 – Vahid
我的答案是否解決了您的問題? – shamalaia
@shamalaia你的回答很有幫助;我仍然在等待更多的最終答案,並且在沒有其他人提供其他選項的情況下,我將確認你的答案是正確的......順便說一句,你知道如何將箭頭設置在紅色段的中間嗎? –