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.

Ilmari Karonen
  • 49,047
  • 9
  • 93
  • 153
NLed
  • 1,845
  • 14
  • 39
  • 68

4 Answers4

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
gnovice
  • 125,304
  • 15
  • 256
  • 359
  • 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 ? – NLed May 19 '10 at 14:03
  • @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. – gnovice May 19 '10 at 14:13
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

The Demz
  • 7,066
  • 5
  • 39
  • 43
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.')); 
katizzle
  • 21
  • 1
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
Community
  • 1
  • 1
Hazem
  • 520
  • 5
  • 10