MATLAB: World coordinates XY scale

axes scalingimref2dworld coordinates

Hi Matlab Answers,
I'm trying to plot a spacetime image with positions on the y-axis and time on the x-axis.
When displaying the image using
axis on;
% size(ST_image) = [500 512]
the display is 1:500 x 1:512, as expected.
When trying to change to physical dimensions, e.g.
Space_limits = [40 60]; % mm
Time_limits = [-0.01 0.1] %s
the axes are on very different scales. This causes the displayed figure to collapse the image to effectively a vertical line and I can't seem to get it to reshape.
I've tried imref2D for world coordinates, setting the XData, YData properties, scaling the axes aspect ratio, etc. I'm sure this is just a figure and/or axes property that I'm missing, but would be very grateful if somebody knew offhand.
ST_ref = imref2d(size(ST_image))
ST_ref.XWorldLimits = Time_limits;
ST_ref.YWorldLimits = Space_limits;
f = figure;
imshow(ST_image,ST_ref); axis on;
%f.XData = Time_limits;
%pbaspect([1 1 1])
Thanks for your help!

Best Answer

  • The imshow function automatically sets the DataAspectRatio to be [1 1 1], i.e. the same effect as axis equal. To undo this, set the mode back to manual.
    set(gca, 'DataAspectRatioMode', 'auto');