2010-05-19 74 views
13

Tôi muốn chỉnh sửa các trục trong loạt hình ảnh đang được hiển thị.Làm cách nào để chỉnh sửa các trục của hình ảnh trong MATLAB để đảo ngược hướng?

Đây là những gì hình ảnh của tôi trông giống như:

parabola

Như bạn có thể thấy, nó dao động từ 0 đến khoảng 500 từ trên xuống dưới. Tôi có thể đảo ngược điều đó không? Plus, tôi muốn phản chiếu hình ảnh được hiển thị, để nó bắt đầu từ trái sang phải ... hoặc, nếu có thể, để cho các trục hiển thị từ phải sang trái.

Trả lời

17

Để đảo ngược một trục, bạn có thể thiết lập các 'XDir' hoặc 'YDir' tài sản của current axes để 'reverse':

set(gca,'XDir','reverse'); %# This flips the x axis 

Hãy ghi nhớ rằng lật một trục theo cách này flips tất cả mọi thứ trong cốt truyện là tốt. Điều này có lẽ không phải là những gì bạn muốn làm cho trục y. Có thể bạn chỉ muốn lật trục y nhãn, mà bạn có thể thực hiện bằng cách sửa đổi 'YTickLabel' tài sản theo cách sau:

yLimits = get(gca,'YLim'); %# Get the y axis limits 
yTicks = yLimits(2)-get(gca,'YTick'); %# Get the y axis tick values and 
             %# subtract them from the upper limit 
set(gca,'YTickLabel',num2str(yTicks.')); %'# Convert the tick values to strings 
              %# and update the y axis labels 
+0

Cảm ơn bạn điều này hoạt động hoàn hảo !! cảm ơn bạn đã thêm nhận xét để tôi có thể hiểu cách mã hoạt động! - Câu hỏi bổ sung, tôi có thể thay đổi giá trị trục x/trục y không? – NLed

+0

@ZaZu: Bạn có thể thay đổi giá trị trục bằng cách thay đổi thuộc tính ''XTick'' và'' YTick'' của các trục. Nếu các thuộc tính ''XTickLabelMode'' và'' YTickLabelMode'' được đặt thành ''auto'' (mặc định, khi bạn chưa sửa đổi nhãn), thì các nhãn sẽ tự động cập nhật sau khi bạn thay đổi các giá trị đánh dấu. Nếu không, bạn sẽ phải tự mình cập nhật nhãn. – gnovice

+0

Cảm ơn bạn, chỉ đơn giản là tuyệt vời :) – NLed

2
Im = imread('onion.png'); 

Im = flipdim(Im ,1); % vertical flip the image. 

axis xy; %set the xy to be at (0,0), this flips the image back again. 

Và Whoop dee doo hình ảnh bây giờ có một trục y với từ dưới lên trên!

Làm cách nào để đảo ngược trục y khi tôi sử dụng chức năng IMAGE hoặc IMAGESC để hiển thị hình ảnh trong MATLAB?Another solution from mathworks

2

Tôi thấy câu trả lời của gnovice hữu ích nhưng cần một số chỉnh sửa cho tôi. Tôi nghĩ sau đây là cách tổng quát hơn để đảo ngược nhãn trên trục y. Chỉ cần sắp xếp các số đánh dấu y theo thứ tự giảm dần và gắn nhãn lại.

yTicks = get(gca,'YTick'); 
yTicks_reverse = sort(yTicks,2,'descend');          
set(gca,'YTickLabel',num2str(yTicks_reverse.')); 
+0

Nhanh hơn và dễ dàng hơn, tôi nghĩ: 'hình ảnh (Im); bộ (gca, 'YDir', 'bình thường') ' –

0

tôi đã chuyển đến đây từ một câu hỏi trùng lặp: Flipping axis ticks

gì ale 'muốn làm chỉ là có để lật hướng trục y là từ trên xuống. Nếu đó là điều duy nhất cần thiết và không có gì khác, tôi sẽ sử dụng:

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