2011-12-17 12 views
6

Załóżmy na przykład, miałem ...Podłączanie końcowy i początkowy punkt prostej xy działki (kreślenie zamknięta krzywa/wielokąt)

x = [1 1 2 2]; 
y = [1 2 2 1]; 
plot(x, y, 'b-'); 

będę dostać działkę z linii łączących punkty (1,1), (1,2) i (2,2). Czy istnieje jakiś sposób, aby połączyć końcowy punkt z pierwszym, uzupełniając w ten sposób kwadrat na działce?

Wstawiam również linie tekstu z punktami, więc po prostu dodanie kolejnego punktu 1,1 nie jest opcją.

Odpowiedz

10

impoly mogą być przydatne, jednak stwarza modyfikowalna krzywą, która jest mniejsza niż powierzchni.

Można napisać prostą funkcję, która:

function plotc(x,y,varargin) 
    x = [x(:) ; x(1)]; 
    y = [y(:) ; y(1)]; 
    plot(x,y,varargin{:}) 
end 

Nawiasem mówiąc, operator (:) okrężnicy służy jako defensywnych środków programowych. W ten sposób, x i y mogą być wektorami wierszowymi lub kolumnowymi.

varargin pozwala na stosowanie dodatkowych parametrów, takich jak:

plotc(x,y,'Color','r'); 
plotc(x,y,'Parent',a,'LineWidth',2); 
+1

niesamowite! działało idealnie:] –

2

Jeśli twoje ostatnie i ostatnie punkty nie są takie same, plot nie będzie wiedział, że chcesz mieć zamkniętą krzywą. Więc dodaj dodatkowy punkt do listy, aby narysować lub spróbuj użyć, na przykład, rectangle.