World coordinates XY scale

1 vue (au cours des 30 derniers jours)
Brian
Brian le 1 Mai 2020
Commenté : Brian le 1 Mai 2020
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
imshow(ST_image);
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!

Réponse acceptée

Kelly Kearney
Kelly Kearney le 1 Mai 2020
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');
  1 commentaire
Brian
Brian le 1 Mai 2020
This is perfect! Thanks Kelly so much for your help!
For future users, this is what worked for me based on Kelly's answer:
set(gca,'DataAspectRatioMode','manual')
set(gca,'DataAspectRatio',[0.005 1 1])

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Lighting, Transparency, and Shading dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by