2013-08-28 35 views
5

Tôi đã sử dụng lệnh cốt truyện để vẽ một hình và sau đó thay đổi rất nhiều thuộc tính của nó bằng cách sử dụng lệnh set. Tôi cũng lưu trữ các xử lý của cốt truyện (nói h1).Vẽ một âm mưu MATLAB hiện có vào một hình khác

Điều tôi cần là sử dụng tay cầm để vẽ cùng một hình một lần nữa sau trong mã của tôi. Tôi đã kiểm tra lệnh cốt truyện và không tìm thấy bất kỳ phiên bản nào chấp nhận xử lý. Tôi cũng nghĩ đến việc nhận được Xdata và Ydata và sử dụng chúng để tái cốt truyện cùng một hình.

Giải pháp đơn giản nhất là gì?

Chỉnh sửa 1: Mã mẫu hoạt động dựa trên copyobj mà PeterM đề xuất.

hf(1) = figure(1); 
plot(peaks); 

hf(2) = figure(2); 
plot(membrane); 

hf(3) = figure(3); 
ha(1) = subplot(1,2,1); 
ha(2) = subplot(1,2,2); 

for i = 1:2 
    hc = get(hf(i),'children'); 
    hgc = get(hc, 'children'); 
    copyobj(hgc,ha(i)); 
end 

Chỉnh sửa 2: Tôi cũng tìm thấy this function có thể sao chép số liệu (kể cả chú giải) vào một phụ.

Trả lời

5

Tôi đã gặp phải tình huống này trước đây. Tùy thuộc vào những gì bạn đang cố gắng thực hiện chức năng copyobj có thể phù hợp. Chức năng này cho phép bạn lấy nội dung của một trục và sao chép nó vào một hình mới.

2

Bạn có thể sử dụng saveas để lưu hình trong một tệp và open để tải chính xác cùng một hình từ tệp này.

3

Cải thiện @PeterM câu trả lời tốt đẹp, một cách dễ dàng hơn sẽ là:

fig2H=copy(gcf) % or change gcf to your figure handle 

Nhưng nó phụ thuộc vào những gì bạn muốn, nếu bạn muốn chỉ các trục, hoặc các con số lỗ ...

Btw, nó dường như không sao chép xử lý chú giải, ít nhất không phải ở HG2

0

Đây sẽ là cách lười nhất để hoàn thành những gì bạn muốn.

% Sample plot 
f1 = figure(1); 
plot(0:0.1:2*pi, sin(0:0.1:2*pi)); 
f2 = figure(2); 

% The code you need 
saveas(f1, 'temp.fig') 
f2 = hgload('temp.fig') 
delete('temp.fig') 
Các vấn đề liên quan