How do I edit the axes of an image in MATLAB to reverse the direction?
Asked Answered
S

4

13

I would like to edit the axes in my series of images being displayed.

This is what my image looks like:

parabola

As you can see, it ranges from 0 to about 500 from top to bottom. Can I invert that? Plus, I want to mirror the image being shown, so that it starts from left to right... or, if it's possible, to let the axes show from right to left.

Spill answered 19/5, 2010 at 12:51 Comment(0)
P
17

To reverse an axis, you can set the 'XDir' or 'YDir' property of the current axes to 'reverse':

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

Keep in mind that flipping an axis in this way flips everything in the plot as well. This probably isn't what you want to do for the y axis. You probably just want to flip the y axis labels, which you can do by modifying the 'YTickLabel' property in the following way:

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
Pricecutting answered 19/5, 2010 at 13:47 Comment(2)
Thank you this works perfectly !! thanks for adding comments so that I can understand how the code works! -- An additional question, can I change the x-axis/y-axis values though ?Spill
@ZaZu: You can change the axis values by changing the 'XTick' and 'YTick' properties of the axes. If the 'XTickLabelMode' and 'YTickLabelMode' properties are set to 'auto' (the default, when you haven't modified the labels), then the labels will update automatically after you change the tick values. Otherwise, you will have to update the labels yourself.Pricecutting
P
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.

And whoop dee doo the image now have an y axis with the range from bottom to top!

How can I reverse the y-axis when I use the IMAGE or IMAGESC function to display an image in MATLAB? Another solution from mathworks

Pinkeye answered 17/5, 2013 at 21:16 Comment(0)
D
2

I found gnovice's answer helpful but it needed some tweaks for me. I think the following is a more general way to reverse the labels on the y axis. Simply sort the y tick numbers in descending order and relabel.

yTicks = get(gca,'YTick');   
yTicks_reverse = sort(yTicks,2,'descend');                                      
set(gca,'YTickLabel',num2str(yTicks_reverse.')); 
Diann answered 7/12, 2013 at 22:53 Comment(1)
Faster and easier, I think: image(Im); set(gca,'YDir','normal')Emblazonry
C
0

I was redirected here from a duplicate question: Flipping axis ticks

What 'ale' wanted to do there was just to flip the y-axis direction to be top down. If that is the only thing needed and nothing else, I would use:

axis ij
Cahn answered 20/5, 2014 at 6:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.