2012-05-18 23 views
10

Chúng ta hãy nói rằng chúng ta có một 1-by-2 âm mưu phụ và chúng tôi vẽ một số đồ họa bên trong như sau:Làm thế nào để giữ cho âm mưu phụ kích thước không thay đổi sau khi đặt một colorbar

subplot(1,2,1) 
surf(peaks(20)) 

subplot(1,2,2) 
surf(peaks(20)) 

enter image description here

Và sau đó chúng tôi muốn đặt một colorbar:

colorbar 

enter image description here

tôi don không muốn con số đúng squezzed như trong kết quả. Làm thế nào chúng ta có thể đặt colorbar ra khỏi hình bên phải trong một hàng của subplots và giữ cho các kích thước của chúng không thay đổi?

Lưu ý: Thực ra, tôi cần nó để vẽ hình ảnh nơi thanh màu thông dụng và tôi muốn đặt nó ở bên phải. Tôi đã sử dụng ví dụ đồ chơi này để đơn giản.

Trả lời

13

Bạn chỉ có thể trích xuất vị trí của ô đầu tiên và sử dụng vào ô thứ hai. MATLAB tự động di chuyển thanh màu sang phải khi thay đổi kích thước.

f1=figure(1);clf; 
s1=subplot(1,2,1); 
surf(peaks(20)); 

s2=subplot(1,2,2); 
surf(peaks(20)); 
hb = colorbar('location','eastoutside'); 

%% # Solution: 
s1Pos = get(s1,'position'); 
s2Pos = get(s2,'position'); 
s2Pos(3:4) = [s1Pos(3:4)]; 
set(s2,'position',s2Pos); 



%% # Alternative method. Brute force placement 
set(s1,'Units','normalized', 'position', [0.1 0.2 0.3 0.6]); 
set(s2,'Units','normalized', 'position', [0.5 0.2 0.3 0.6]); 
set(hb,'Units','normalized', 'position', [0.9 0.2 0.05 0.6]); 

enter image description here

+0

Tuyệt vời! Giải pháp tự động tốt hơn nhưng lực lượng vũ phu cho phép tôi giảm khoảng cách giữa các ô sao cho nó bằng với âm mưu giữa âm mưu bên phải và vạch màu. Cảm ơn bạn đã cung cấp hai cách tốt đẹp. – petrichor

1

Đây chỉ là những gì tôi đang tìm kiếm. Sau khi triển khai Vidar's automatic solution, tôi đã đưa ra một sự đơn giản hóa. Lấy vị trí của các trục ngoài cùng bên phải TRƯỚC KHI thêm thanh màu, và sau đó chỉ cần đặt lại vị trí vắt thành bản gốc:

f1=figure(1);clf; 
s1=subplot(1,2,1); 
surf(peaks(20)); 

s2=subplot(1,2,2); 
surf(peaks(20)); 
s2Pos = get(s2,'position'); 

hb = colorbar('location','eastoutside'); 
set(s2,'position',s2Pos); 
+0

Tôi đã thử nó nhưng các nhãn của thanh màu dường như nằm ngoài cốt truyện. – petrichor

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