2012-03-03 85 views
4

NノードとMエッジを持つプロットを描画しています。ノードAからノードBへのエッジとノードBからAへのエッジが存在する可能性があるので、両方のラインを描くために直線を使用することはできません。どのようにしてそれらのうちの1つを他のものと区別できるように曲線にすることができますか?jとkの間に直線を描くコードです。Matlabで曲線を描く方法

line([Xloc(j) Xloc(k)], [Yloc(j) Yloc(k)], 'LineStyle', '-');

答えて

8

描画する中間点を定義する必要があります。

次に、これらを手動で定義するか、スプライン補間を調べることができます。

スプライン補間では、完全な曲線を決定するために中間点を1つだけ必要とします。

MATLABでは、デモspline2dが見つかりました。ここでの要点である:

% end points 
X = [0 1]; 
Y = [0 0]; 
% intermediate point (you have to choose your own) 
Xi = mean(X); 
Yi = mean(Y) + 0.25; 

Xa = [X(1) Xi X(2)]; 
Ya = [Y(1) Yi Y(2)]; 

t = 1:numel(Xa); 
ts = linspace(min(t),max(t),numel(Xa)*10); % has to be a fine grid 
xx = spline(t,Xa,ts); 
yy = spline(t,Ya,ts); 

plot(xx,yy); hold on; % curve 
plot(X,Y,'or')  % end points 
plot(Xi,Yi,'xr')  % intermediate point 

Resulting plot

splined2

においては、点のより大きなセットのために使用されるが、中間点はありません。あなたのポイントをスムーズに接続したいだけなら、それは見てみる価値があるかもしれません。

+0

返信いただきありがとうございます! – Sara

-1

よりもむしろ1が湾曲すること、オフセット、あるいは、あなたは異なる方向に異なるlinestyle Sを使用することができます。

1行目:plot(..., 'Linestyle', '-', 'Linewidth', 1)

2行目:plot(..., 'Linestyle', '.-', 'Linewidth', 3)

これは、空間の任意のシフトを必要とせずに異なる方向のあなたの線を区別可能にするでしょう。

3

This functionファイル交換からのものは、まさにあなたが必要としているようです。著者の記述から:

ダイレクト(1ウェイ)エッジが曲率は反時計回りに屈曲点

あなたは、それが必要余分な機能や微調整が必​​要な場合から離れると同様に曲がった点線をプロットしていますコードを必要に応じて簡単に変更できます。

+0

オハイオ州はそれが助けてくれてありがとう! – Sara

関連する問題