私は接続されているノードのセットを表す上三角隣接行列を持っています。すべてのノードは、3つの地理座標x y zによって定義されます。 私の目標は、エッジの方向も考慮に入れて、ネットワークがどのように見えるかを見るためにネットワークをプロットすることです。私は、z座標を考慮していない場合はmatlabに3Dの有向グラフをプロットする方法
、私は簡単に結果を表示することができる午前:
この結果を得るために、コードの行は、次のとおりです。
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])
私は3次元グラフを持つことができるようにグラフにz座標を代入するために私のコードをどのように修正すべきですか? (私はエッジ方向も表示したいと思います!!)。
私は何をしようとしたことはこれです:
p = plot3(F,'XData',xyz(:,2),'YData',xyz(:,1),'ZData',xyz(:,3));
が、私は何も成功していません。
を、私はあなたがカスタム 'plot3'メソッドを記述する必要がありますね。 'digraph'(' edit @ digraph/plot')の 'plot'の実装を見てみると、何か役に立つと思うかもしれません。 – Vahid
私の答えはあなたの問題を解決しましたか? – shamalaia
@shamalaiaあなたの答えはかなり役に立ちます。私はまだ最終的な答えを待っているし、他の誰も他のオプションを与えていない場合は、私は正しいものとしてあなたのことを確認します... btw赤い線分の中央に矢印の頭を設定する方法を知っていますか? –