MATLAB Answers

How do I flip an image without affecting the Y Axis?

5 views (last 30 days)
Ted Baker
Ted Baker on 21 Jul 2020
Commented: Ted Baker on 21 Jul 2020
I'm trying to plot the example file using the following code:
close all;
input = 'example.txt';
data = readmatrix(input);
filename = input(1:end-4);
filename = [filename '.png'];
x = data(:,3);
v = data(:,9);
id = find(x == 0);
imdata = reshape(v,id(2)-1,[])';
im = rot90(imdata,2);
im = fliplr(im);
xdata = 1:1:56;
ydata = 6.3:0.275:19.775;
flip(ydata);
imagesc(im, 'XData', xdata, 'YData', ydata);
colorbar;
colormap(jet);
xlabel('xaxis');
ylabel('yaxis');
title('title');
axis on
xticks(xdata);
set(gca, 'XTick', (1 : 5 : 56) );
yticks(ydata);
set(gca, 'YTick', (6.3: 1.375 :19.775) ); % plot every 5th tick
set(gca,'YDir','normal')
Where I would like the red corner of the output plot in the top right, blue corner in bottom left, as per this image:
However the Y axis nees to go from ~6 in the bottom left to ~19 in the top left - the axis in this image are reversed. What am I doing wrong with my code? I've tried using ydata straight, flipping it, etc but that hasn't worked. Whenever I set YDir it always flips the image so that the red in at the bottom, but then the axis looks ok.
Thanks in advance.

  0 Comments

Sign in to comment.

Accepted Answer

Mehmed Saad
Mehmed Saad on 21 Jul 2020
Edited: Mehmed Saad on 21 Jul 2020
Use flip (or fliplr,flipud)
figure,
subplot(211)
imagesc(im, 'XData', xdata, 'YData', ydata);set(gca,'YDir','normal')
subplot(212)
imagesc(im, 'XData', xdata, 'YData', fliplr(ydata));set(gca,'YDir','normal')
colormap('jet')

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!