MATLAB: How to insert a table under three subplots in a figure

plotplottinsubplottable

I am trying to put a table under three plots in the same figure, but when I run the code only the table is visible and the plots dissapear. Below I let the code that I am using.
if true
%figures
%figure for the raw data
figure
h=surf(vec,vec,B.*mask);
set(h,'LineStyle','none');
colormap default ;
hc=colorbar;
hc.Label.String = 'nm';
title('Graph of the Lens')
%figure for the zernikes
figure
g=surf(vec,vec,z_Zern);
set(g,'LineStyle','none');
colormap default ;
gc=colorbar;
gc.Label.String ='nm';
title('Graph of the zernikes')
%figure for the subtraction
figure
h=surf(vec,vec,D);
set(h,'LineStyle','none');
colormap default;
hc=colorbar;
hc.Label.String = 'nm';
title('Subtraction')
%Plots in 2D
figure;
subplot(2,2,1);
imagesc(vec,vec,B);
daspect([1 1 1]);
cb1=colorbar;
cb1.Label.String = 'nm';
caxis([-70 110])
title('Raw data');
%================


subplot(2,2,2);
imagesc(vec,vec,z_Zern);
daspect([1 1 1]);
cb2=colorbar;
cb2.Label.String = 'nm';
caxis([-70 110])
title('Zernike data');
%================
subplot(2,2,3);
imagesc(vec,vec,D);
daspect([1 1 1]);
cb3=colorbar;
cb3.Label.String = 'nm';
caxis([-70 110])
title('Subtraction');
%================
subplot(2,2,4);
tt = {'PV';'rms'};
raw_data = [PV_1;x_rms_1];
zernike_data= [PV_2;x_rms_2];
residual_data = [PV_3;x_rms_3];
T = table(raw_data,zernike_data,residual_data,'RowNames',tt);
uitable('Data',T{:,:},'ColumnName',T.Properties.VariableNames,...
'RowName',T.Properties.RowNames,'Units', 'Normalized', 'Position',[0, 0, 1, 1]);
end

Best Answer

It's not that the plot disappears. The plot is under your UI table. You're setting the position of the UI table as
...'Position',[0, 0, 1, 1]...
which consumes the entire figure. Instead, get the position of the 4th subplot and use that position to set the UI table. I changed 4 lines from your code and marked them as " % NEW".
h = subplot(2,2,4); % NEW



hPos = get(h, 'Position'); % NEW
tt = {'PV';'rms'};
raw_data = [PV_1;x_rms_1];
zernike_data= [PV_2;x_rms_2];
residual_data = [PV_3;x_rms_3];
T = table(raw_data,zernike_data,residual_data,'RowNames',tt);
uitable('Data',T{:,:},'ColumnName',T.Properties.VariableNames,...
'RowName',T.Properties.RowNames,'Units', 'Normalized', 'Position', hPos); % NEW
set(h, 'Visible', 'Off') % NEW
end