How to set the same grid size of the axis for different plots?

11 views (last 30 days)
Using imagesc function, I plotted the data for different sets of vaues. For the first plot, the x-axis limits are [-40 12] and for the second plot, the x-axis limits are [-56 8]. But I got the same size of the the plots. How to get the different size of the plots using an equal grid size for both the plots?
If I add the colorbar the size of the second image plot shrinks. How to add the colorbar without affecting the size of the image?
  2 Comments
Sateesh Kandukuri
Sateesh Kandukuri on 30 Jan 2023
allTables = dir('**/table.txt');
%first loop for sorting the folders by sorting the files
for k = 1:numel(allTables)
F1 = fullfile(allTables(k).folder, allTables(k).name);
A1 = readmatrix(F1);
% sort files
I = max(A1(:,11));
allTables(k).max= I;
end
[~,X] = sort([allTables.max]);
allTables = allTables(X);
%normal modes
Bmin= -40;
Bmax= 12;
Bstep= 4;
T=20; % Total run time in ns
basicf=10000/20;
resolf=1e-9/T;
matrixplot=zeros(20001,k);
for index = 1:numel(allTables)
F2 = fullfile(allTables(index).folder, allTables(index).name);
A2 = readmatrix(F2);
M=A2(:,4);
M=M-mean(M);
sol=fft(M);
sol2=fftshift(sol);
maxpeax=max(abs(sol2));
sol3=abs(sol2)/maxpeax;
matrixplot(1:length(sol),index)=sol3;
end
x=[Bmin Bmax];
y=[-basicf basicf];
imagesc(x,y,matrixplot);
xlim([Bmin Bmax]);
ylim([0 08]);
set(gca,'Ydir','normal','FontSize',16)
ylabel('f (GHz)', 'FontSize', 20, 'FontWeight', 'bold');
xlabel('B_z(mT)', 'FontSize', 20, 'FontWeight', 'bold');
txt = {'B_z , m_z'};
text(0,7,txt,'FontSize', 16, 'Color','w')

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 30 Jan 2023
Edited: Walter Roberson on 2 Feb 2023
You can set the plot box aspect ratio and data aspect ratio, or use the convenience of "axis image" https://www.mathworks.com/help/matlab/ref/axis.html#d124e70500
image objects fill at least one dimension of the axes, so if you need the drawing area to have the same pixel size for multiple axes, then you might need to set the axes Units to pixels and set the Position to the desired image size in pixels (make sure that you "axis off")
You can set the colorbar Position in pixels
  1 Comment
Sateesh Kandukuri
Sateesh Kandukuri on 31 Jan 2023
Edited: Sateesh Kandukuri on 31 Jan 2023
Dear Walter Roberson, thank you so much for your response. I solved my problem in another way.

Sign in to comment.

More Answers (0)

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!