Search code examples
matlabaxisfigures

How to specify the axis size when plotting figures in Matlab?


Suppose that I have 2 figures in MATLAB both of which plot data of size (512x512), however one figure is being plotted by an external program which is sets the axis parameters. The other is being plotted by me (using imagesc). Currently the figures, or rather, the axes are different sizes and my question is, how do I make them equal?. The reason for my question, is that I would like to export them to pdf format for inclusion in a latex document, and I would like to have them be the same size without further processing.

Thanks in Advance, N

Edit: link to figures

figure 1: (big)

link to smaller figure (i.e. the one whose properties I would like to copy and apply to figure 1)


Solution

  • For this purpose use linkaxes():

    % Load some data included with MATLAB
    load clown
    
    % Plot a histogram in the first subplot
    figure
    ax(1) = subplot(211);
    hist(X(:),100)
    
    % Create second subplot
    ax(2) = subplot(212);
    

    Now link the axes of the two subplots:

    linkaxes(ax)
    

    By plotting on the second subplot, the first one will adapt

    imagesc(X)
    

    First, you have the following: enter image description here

    Then:

    enter image description here

    Extending the example to images only:

    load clown
    figure
    imagesc(X)
    h(1) = gca;
    
    I = imread('eight.tif');
    figure
    imagesc(I)
    h(2) = gca;
    

    Note that the configurations of the the first handle prevail:

    linkaxes(h)