2012-03-03 141 views
4

我正繪製一個有N個節點和M個邊的繪圖。從節點A到節點B以及節點B到A可以有一條邊,所以我不能用直線畫出兩條線。我怎樣才能讓其中一個彎曲,以便與另一個區分開來?這裏是我的代碼,在j和k之間繪製一條直線。如何在Matlab中繪製曲線

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

回答

8

您將需要定義要繪製的中間點。

然後您可以手動定義它們,或者查看樣條插值。

使用樣條插值,您只需要一箇中間點來確定完整曲線。

在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 2012-03-04 05:34:25

-1

而不是使一個彎曲,偏移,或以其它方式,可以使用不同linestyle S爲不同的方向:1

線:plot(..., 'Linestyle', '-', 'Linewidth', 1)

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

這會讓你的線條在不同的方向上有所區別,而不需要在空間上任意移動。

3

This function來自文件交換似乎正是你所需要的。從作者的描述:

定向(1路)邊繪製成曲線虛線與曲率彎曲逆時針方向從點

如果你需要額外的功能或調整的話,應該走開簡單地將代碼更改爲您的需求。

+0

哦謝謝它有幫助! – Sara 2012-03-05 01:14:03