2010-09-03 39 views
7

Tôi có hai mảng hai-by-n, đại diện cho 2d-điểm. Hai mảng này được vẽ trong cùng một hình, nhưng trong hai phần con khác nhau. Đối với mỗi điểm trong một mảng, có một điểm tương ứng với mảng kia. Tôi muốn thể hiện sự tương ứng này bằng cách vẽ một đường thẳng từ một trong các ô con đến vùng phụ khác.Vẽ đường thẳng giữa hai ô con

Các giải pháp tôi đã tìm thấy được một cái gì đó như:

ah=axes('position',[.2,.2,.6,.6],'visible','off'); % <- select your pos... 
line([.1,.9],[.1,.9],'parent',ah,'linewidth',5); 

này âm mưu một dòng trong hệ tọa độ được đưa ra bởi các trục gọi. Để điều này làm việc cho tôi, tôi cần một cách để thay đổi hệ tọa độ giữa hệ thống phụ và hệ thống mới. Có ai biết làm thế nào điều này có thể được thực hiện?

Có thể có cách khác để thực hiện việc này. Nếu vậy tôi rất muốn biết.

Trả lời

7

Trước tiên, bạn phải chuyển đổi tọa độ trục để tìm tọa độ. Sau đó, bạn có thể sử dụng chức năng ANNOTATION để vẽ các đường trong hình.

Bạn có thể sử dụng Data space to figure units conversion (ds2nfu) gửi trên FileExchange.

Dưới đây là một ví dụ mã:

% two 2x5 arrays with random data 
a1 = rand(2,5); 
a2 = rand(2,5); 

% two subplots 
subplot(211) 
scatter(a1(1,:),a1(2,:)) 
% Convert axes coordinates to figure coordinates for 1st axes 
[xa1 ya1] = ds2nfu(a1(1,:),a1(2,:)); 


subplot(212) 
scatter(a2(1,:),a2(2,:)) 
% Convert axes coordinates to figure coordinates for 2nd axes 
[xa2 ya2] = ds2nfu(a2(1,:),a2(2,:)); 

% draw the lines 
for k=1:numel(xa1) 
    annotation('line',[xa1(k) xa2(k)],[ya1(k) ya2(k)],'color','r'); 
end 

Hãy chắc chắn rằng các mảng dữ liệu của bạn đều bình đẳng trong kích thước.

Chỉnh sửa: Đoạn mã trên sẽ thực hiện chuyển đổi dữ liệu cho trục hiện tại. Bạn cũng có thể làm điều đó cho các trục cụ thể:

hAx1 = subplot(211); 
% ... 
[xa1 ya1] = ds2nfu(hAx1, a1(1,:),a1(2,:)); 
+1

Cảm ơn bạn. Điều này đã giúp tôi rất nhiều! – PKeno

+1

Không hoạt động đối với tôi: các dòng được rút ra từ một 'subplot' đến cái khác, nhưng chúng không liên kết các điểm. Hơn nữa, khi tôi thay đổi kích thước hình, các dòng thay đổi vị trí tương đối của chúng ... – Shai

+0

Tôi nghĩ rằng đó là lỗi trong kịch bản đã gửi. @Shai – SolessChong

-1

Một giải pháp đơn giản là sử dụng thanh công cụ trong cửa sổ hình. Chỉ cần nhấp vào "chèn" và sau đó "Dòng".

Các vấn đề liên quan